数据库重点复习(sql基础语句,游标,索引,视图)

(l)SQL基础语句

1、创建数据库

         CREATE DATABASE database-name 

        2、删除数据库

         drop database dbname

        4、创建新表

         create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)

         根据已有的表创建新表: 

         A:create table tab_new like tab_old (使用旧表创建新表)

         B:create table tab_new as select col1,col2… from tab_old definition only

        5、删除新表 drop table tabname 

        6、增加一个列  Alter table tabname add column col type

        7、添加主键   Alter table tabname add primary key(col) 

            删除主键: Alter table tabname drop primary key(col) 

        8、创建索引:create [unique] index idxname on tabname(col….) 

        9、创建视图:create view viewname as select statement 

        10、初始化表table1 TRUNCATE TABLE table1

        11、删除视图:drop view viewname

SQL查询语句

        SQL复制表 

                 法一:select * into b from a where 1<>1

                 法二:select top 0 * into b from a

        多表联查:

                 select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....

        使用in方法

                 select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)

        使用between

               select * from table1 where time between time1 and time2

        随机取出10条数据

               select top 10 * from tablename order by newid()

        删除重复记录

                 Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)

        分类TOP N(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)

      SELECT * FROM XSCJ a WHERE Sid IN(SELECT TOP 3 Sid FROM XSCJ b WHERE A.CLASSid=b.CLASSid AND A.KCID=B.KCid )

        取表中n到m条纪录

     select top n * from (select top m * from tablename order by columnname) a order by columnname desc

(2)SQL Server游标语句使用方法:

--声明一个游标

DECLARE MyCursor CURSOR

FOR SELECT TOP 5 FBookName,FBookCoding FROM TBookInfo//定义一个叫MyCursor的游标,存放for select 后的数据

--打开一个游标

OPEN MyCursor//即打开这个数据集

--循环一个游标

DECLARE @BookName nvarchar(2000),@BookCoding nvarchar(2000)

FETCH NEXT FROM MyCursor INTO @BookName,@BookCoding//移动游标指向到第一条数据,提取第一条数据存放在变量中

WHILE @@FETCH_STATUS =0//如果上一次操作成功则继续循环

BEGIN

print 'name'+@BookName

FETCH NEXT FROM MyCursor INTO @BookName,@BookCoding//继续提下一行

END

--关闭游标

CLOSE MyCursor

--释放资源

DEALLOCATE MyCursor

(3)索引

    /*1.最简单的创建和删除索引*/

     CREATE INDEX list ON Student(Sno)

     --在学生表学号列创建索引lis

     DROP INDEX list ON Student

     --删除学生表索引

      EXEC sp_helpindex Student

      --查看索引

      --student表里有两个本身的索引,Sno和Sname,主键默认为是唯一聚集索引(可改为非聚集),unique是唯一索引    

    /*2.唯一性索引,保证在索引列中的全部数据是唯一的,对聚簇索引和非聚簇索引都可以使用*/

    CREATE UNIQUE  INDEX list ON Student(Ssex)

    --发现对象名称 'dbo.Student' 和索引名称 'list' 有重复的键,所以 CREATE UNIQUE INDEX 语句终止。重复的键值为 (男)。

    CREATE UNIQUE INDEX list ON Student(Sno)

(4)创建视图

Create view viewname as

Select 学号,姓名,所属院系

From student

Where 课名=’软件工程’ and 所属院系=’计算机’

1.T-SQL语句创建视图:

use 用户  //我们使用的数据库

go

create view stu_course_grade  //表明我们要创建视图并加上视图的名字

as                           //通过查询语句确定视图的主体内容

 select student.sno,xingming,score.fengshu,course.kecheng

 from student,score,course

 where student.sno=score.sno and score.sno=course.sno

go

2.修改视图

use 用户   //使用的数据库

go

alter view stu_course_grade   //表明要进行修改视图并加上视图的名字

as                            //固定有个as

 select student.sno,xingming  //新的视图的查询语句

 from student

 go

3.更新视图:

//通过视图向表中插入记录 use tech

go

insert into view_stu values('21','张三','男','1998') //其中insert into 后面加视图名字,然后加上固定的values 表明要对视图插入记录,后面是记录的具体数据

4.通过视图修改数据

use tech

go

update stu_course_grade

set grade=92

where sname='老王'and cname='数据结构'

go

5.删除视图

use tech

go

drop view stu_course_grade   //直接在drop后加上视图的名字

go

 

posted on 2019-05-15 09:35  熟烂的番茄  阅读(304)  评论(0编辑  收藏  举报

导航