SQL SERVER复习提纲
《sqlserver数据库》复习提纲

㈠创建表1、在bookdb下创建employees(员工信息表),该表包含如下字段(见如下表格)create table employees(id int primary key,name char(20)not null,gender char(2)not null,salary money not null)Go2、在bookdb下创建students(学生信息表),该表包含如下字段(见如下表格)create table students(id int primary key,name char(20)not null,gender char(2)not null,age smallint not null)Go3、在bookdb下创建parents(家长信息表),该表包含如下字段(见如下表格)create table parents(id int primary key,mother_name char(10)not null,phone char(15)not null)go4、在bookdb下创建teachers(教师信息表),该表包含如下字段(见如下表格)create table teachers(id int primary key,name char(20)not null,gender char(2)not null,subject char(10)not null)go5、在bookdb下创建products(商品表),该表包含如下字段(见如下表格)create table products(pno int primary key,pname char(20)not null,price float not null,num int not null)go6、在bookdb下创建banks(银行储户信息表),该表包含如下字段(见如下表格)(deposit_id int primary key,name char(20)not null,deposit money not null)go㈡ DML操作1.values(118801,'TP4/15','计算机网络','黄丽君','高教出版社',21.80)go2.values(118802,'TP6/15','Linux基础','唐延庆','科学出版社',30.80)go3.values(116,'经贸系','刘莹','女','讲师','1#414')go4.values(119,'服装系','白雪','女','讲师','1#413')go5.在借阅表(borrowing)insert intovalues(113, 445502,'2013-11-11')go6.在借阅表(borrowing)insert into borrowingvalues(114,665544,'2013-10-21')go7.将读者表(readers)中,借书证号为111的职位更改为‘副教授’update readersset position='副教授'where libcardno=111go8.将读者表(readers)中,借书证号为112的职位更改为‘教授’update readersset position='教授'where libcardno=112go9.将图书表(books)中,图书编号为112233的单价更新为16.80update booksset price=16.80where bno=112233go10.将图书表(books)中,图书编号为112233的单价更新为22.80update booksset price=22.80where bno=112233go11.将读者表(readers)中,图书证编号为114的所在地址更新为‘1#323’update readersset address='1#323'where libcardno=114go12.将读者表(readers)中,图书证编号为113的所在地址更新为‘1#123’update readersset address='1#123'where libcardno=113go13.将图书表(books)中,图书编号为118802的图书信息删除delete from bookswhere bno=118802go14.将图书表(books)中,图书编号为118801的图书信息删除delete from bookswhere bno=118801go15.将读者表(books)中,图书证编号为116的读者信息删除delete from readerswhere libcardno=116go16.将读者表(books)中,图书证编号为119的读者信息删除delete from readerswhere libcardno=119go17.将借阅表(borrowing)中,图书证编号为111的借阅信息删除delete from borrowingwhere libcardno=111go18.将借阅表(borrowing)中,图书证编号为114的借阅信息删除delete from borrowingwhere libcardno=114go㈢数据查询1.查询姓李的读者姓名及所在单位select name,company from readerswhere name like'李%'go2.查询图书表(books)中,所有的书名及出版单位select bname,press from booksgo3.查找‘高教出版社’的所有图书,并按价格降序排列select*from bookswhere press='高教出版社'order by price descgo4.查询所有图书的最高单价select max(price)as'最高单价'from booksgo5.查询姓张的读者姓名及所在单位select name,company from readerswhere name like'张%'go6.查询图书表(books)中的所有图书并按图书编号的降序排列select*from booksorder by bno descgo7.查找‘科学出版社’的所有图书where press='科学出版社'8.查询所有图书的平均单价select avg(price)as'平均单价'from booksgo9.查询不同书名的图书名称select distinct bname from booksgo10.查询读者表中性别为‘男’和‘女’的人数各占几个select count(libcardno)as'人数',sex as'性别'from readersgroup by sexgo11.查询日期‘2013-11-11’以后借出的图书名称select bname from books inner join borrowingon books.bno=borrowing.bnowhere borrowing.bordate>'2013-11-11'go12.查询读者表的所有信息,并按图书证号的降序排列select*from readersorder by libcardno descgo13.查询藏书中的价值总额select sum(price)as'藏书价值总额'from booksgo14.查询图书证号为‘113’的老师借阅图书的名称select bname from books inner join borrowingon books.bno=borrowing.bnowhere borrowing.libcardno=11315.查询到目前为止没有借书的读者信息select*from readerswhere libcardno not in(select libcardno from borrowing) go16.查询各出版社图书的最高价格select max(price)as'图书最高价格',press as'出版社名称'from booksgroup by pressgo17.查询借阅了图书编号为‘665544’的借阅者姓名select as'读者姓名'on r.libcardno=b.libcardnowhere b.bno=665544go18.查询没有借阅图书的图书证号select libcardno from readerswhere libcardno not in(select libcardno from borrowing)go19.查询最高图书单价与最低图书单价之间的差值select max(price)-min(price)as'最高单价与最低单价的差值'from books go20.查询单价介于18元和20元之间的图书信息select*from bookswhere price between 18 and 20go21.查询借阅了图书编号为‘112233’的借阅者姓名select as'读者姓名'from readers r inner join borrowing bon r.libcardno=b.libcardnowhere b.bno=112233go22.统计借阅图书的不同图书证号select distinct libcardno from borrowing23.查询图书单价高于平均单价的图书信息select*from bookswhere price>(select avg(price)from books)go24.查询单价介于10元和19元之间的图书信息select*from bookswhere price between 10 and 19go25.查询书名以‘计算机’开头的所有图书及作者select bname,author from bookswhere bname like'计算机%'go26.显示图书表的前两条记录select top 2 *from booksgo27.查询所有借阅了图书的姓名及单位(重复信息不显示)select distinct ,panyfrom readers r inner join borrowing bon r.libcardno=b.libcardno28.查询所有图书的最低单价select min(price)as'最低单价'from booksgo29.查询藏书中各个出版单位的册数、价值总额select press as'出版社名称',count(press)as'出版社册数',sum(price)as'价格总和'from booksgroup by pressgo30.查询图书证号为‘111’的老师借阅图书的名称select bname from bookswhere bno=(select bno from borrowing where libcardno=111) 31.查询图书单价低于平均单价的图书信息select*from bookswhere price<(select avg(price)from books)go32.查询有哪些不重复的图书的名称select distinct bnamefrom books33.查询书名以‘数据库’开头的所有图书及作者select bname,author from bookswhere bname like'数据库%'go34.显示读者表的前两条记录select top 2 *from readersgo35.查询所有借阅了图书的读者姓名及职称(重复信息不显示)select distinct ,r.positionfrom readers r inner join borrowing bon r.libcardno=b.libcardnogo36.查询所有图书的最高单价select max(price)as'最高单价'from booksgo37.查询藏书中各个出版单位的册数、价值总额select press as'出版社名称',count(press)as'出版社册数',group by pressgo38.查询图书证号为‘112’的老师借阅图书的名称select bname from bookswhere bno in(select bno from borrowing where libcardno=112) 39.查询图书单价高于平均单价的图书信息select*from bookswhere price>(select avg(price)from books)go40.统计读者表中职称为‘讲师’的人数select count(position)as'讲师人数'from readerswhere position='讲师'41.查询作者不同的作者人数select count(distinct author)as'不同作者人数'from booksgo42.查询读者表中职称为‘教授’和‘讲师’的人数各占几个select count(position)as'人数',positionfrom readersgroup by positiongo43.查询日期‘2013-11-11’以前借出的图书名称select bname from books inner join borrowingon books.bno=borrowing.bnowhere borrowing.bordate<'2013-11-11'go44.查询读者表的所有信息,并按图书证号的升序排列select*from readersorder by libcardno ascgo45.查询藏书中的价值总额select sum(price)as'藏书价值总额'from booksgo46.查询图书证号为‘112’的老师借阅图书的名称select bname from books inner join borrowingon books.bno=borrowing.bnowhere borrowing.libcardno=11247.查询借书的读者信息select*from readerswhere libcardno in(select libcardno from borrowing)go48.查询各出版社图书的最高价格from booksgroup by pressgo㈣数据完整性1.将图书表(books)的bno和bisbn列设为联合主键,名称为pk_books_bno_bisbnalter table booksalter column bno int not nullgoalter table booksalter column bisbn char(20)not nullgoalter table booksadd constraint pk_books_bno_bisbn primary key(bno,bisbn) go2.在图书表(books)中,添加price列的check约束,规定价格>0alter table booksadd constraint ck_books_price check(price>0)go3.将图书表(books)的bno和bisbn列设为联合主键,名称为pk_books_bno_bisbn alter table booksalter column bno int not nullgoalter table booksalter column bisbn char(20)not nullgoalter table booksadd constraint pk_books_bno_bisbn primary key(bno,bisbn)go4.在读者表(readers)中,添加position列为默认值约束,默认值设为‘讲师’alter table readersadd constraint df_books_position default('讲师')for positiongo5.将读者表(readers)的libcardno列设为主键,名称为pk_readers_libcardnoalter table readersalter column libcardno int not nullgoalter table readersadd constraint pk_readers_libcardno primary key(libcardno) go6.在图书表(books)中,添加company列的默认值约束,默认值为‘信息系’alter table readersadd constraint df_books_company default('信息系')for company goalter table readersalter column libcardno int not nullgoalter table readersadd constraint pk_readers_libcardno primary key(libcardno)go8.将图书表(books)的bno设为唯一性约束alter table booksadd constraint uk_books_bno unique(bno)go9.在读者表(readers)中,添加position列为默认值约束,默认值设为‘副教授’alter table readersadd constraint df_books_position default('副教授')for positiongo10.在图书表(books)中,添加company列的默认值约束,默认值为‘经贸系’alter table readersadd constraint df_books_company default('经贸系')for companygo11.将图书表(books)的bno列设为主键,名称为pk_books_bnoalter table booksalter column bno int not nullgoalter table booksadd constraint pk_books_bno primary key(bno)go12.在图书表(books)中,添加price列的check约束,规定价格>0alter table booksadd constraint ck_books_price check(price>0)go㈤视图、存储过程、函数、触发器、索引、SQL编程1.创建一个名为v_books的视图,其作用是查询图书表(books)中的bno及bname字段;并访问该视图create view v_booksasselect bno,bname from booksgoselect*from v_booksgo2.创建一个名为p_r的存储过程来存储查询读者表(readers)的信息,并运行该存储过程create proc p_rasselect*from readersgogo3.创建一个名为v_readers的视图,其作用是查询读者表(readers)中的name及position字段;并访问该视图create view v_readersasselect name,position from readersgoselect*from v_readers go4.创建一个名为p_bor的存储过程来存储查询借阅表(borrowing)的libcardno及bno信息,并运行该存储过程create proc p_borasselect libcardno,bno from borrowinggop_borgo5.创建一个名为fz()的标量函数,求z*z的值,将z值设为12,运行函数求解create function fz(@z int)returns intasbeginreturn @z*@zendgoselect dbo.fz(12)go6.在读者表(readers)上创建after update触发器,输出信息‘您正在更新读者表的信息!’create trigger tg_readerson readersafter updateasbeginprint('您正在更新读者表的信息!')endgo7.在借阅表(borrowing)的图书证号列上创建一个非聚集索引idx_borrowing_libcardno并按降序排列create nonclustered index idx_borrowing_libcardnoon borrowing(libcardno desc)go8.编写程序,使用while循环,求1到100的和DECLARE @i INT,@sum intSET @i=1SET @sum=0BEGINSET @sum=@sum+@iset @i=@i+1ENDPRINT(@sum)go9.创建一个名为fx()的标量函数,求x*x+1的值,将x值设为2,运行函数求解create function fx(@x int)returns intasbeginreturn @x*@x +1endgoselect dbo.fx(2)go10.在图书表(books)上创建AFTER DELETE触发器,输出信息‘您正在删除图书表中的数据!’create trigger tg_bookson booksafter deleteasbeginprint('您正在删除图书表中的数据!')endgo11.在图书表(books)的编号列上创建一个索引idx_books_bnocreate index idx_books_bnoon books(bno)go12.将借阅表(borrowing)中第一个读者的信息输出(用变量法实现)declare @libcardno intset @libcardno=(select top 1 libcardno from borrowing)select*from readerswhere libcardno=@libcardnogo13.创建一个名为v_readers的视图,其作用是查询读者表(readers)中的libcardno、company及name字段;并访问该视图create view v_readersasselect libcardno,company,name from readersgoselect*from v_readers go14.创建一个名为p_b的存储过程来存储查询图书表(books)的信息,并运行该存储过程asselect*from readersgop_bgo15.创建一个名为fy()的标量函数,求y*y*y的值,将x值设为2,运行函数求解create function fy(@y int)returns intasbeginreturn @y*@y*@yendgoselect dbo.fy(2)go16.在图书表(books)上创建instead of触发器,输出信息‘图书表信息禁止删除!’create trigger tg_bookson booksinstead of deleteasbeginprint('图书表信息禁止删除!')endgo17.在读者表(readers)的编号列上创建一个聚集索引idx_readers_libcardno,并按降序排列create clustered index idx_readers_libcardnoon readers(libcardno desc)go18.编写程序,定义变量@x=3,使用if—else进行判断,@x*@x的运行结果:当结果大于8输出信息“运行结果大于8”,否则输出“运行结果小于8”declare @x intset @x=3if(@x*@x>8)beginprint('运行结果大于>8')endelsebeginprint('运行结果小于<8')endgo访问该视图create view v_borrowingasselect*from borrowinggoselect*from v_borrowinggo20.创建一个名为p_b的存储过程来存储查询图书表(books)的bno及bname字段信息,并运行该存储过程create proc p_basselect bno,bname from booksgop_bgo21.创建一个名为fy()的标量函数,求y*y的值,将x值设为9,运行函数求解create function fy(@y int)returns intasbeginreturn @y*@yendgoselect dbo.fy(9)go22.在图书表(books)上创建instead of update触发器,输出信息‘图书表信息禁止更新!’create trigger tg_bookson booksinstead of updateasbeginprint('图书表信息禁止更新!')endgo23.在读者表(readers)的编号列上创建一个非聚集索引idx_readers_libcardno,并按降序排列create nonclustered index idx_readers_libcardnoon readers(libcardno desc)go24.编写程序,定义变量@x=2,使用if—else进行判断,@x*@x的运行结果:当结果大于8输出信息“运行结果大于4”,否则输出“运行结果小于4”declare @x intset @x=2if(@x*@x>4)print('运行结果大于>4')endelsebeginprint('运行结果小于<4')endgo25.创建一个名为v_books的视图,其作用是查询图书表(books)中的所有字段;并访问该视图create view v_booksasselect*from booksgoselect*from v_booksgo26.创建一个名为p_r的存储过程来存储查询读者表(readers)的company及name字段信息,并运行该存储过程create proc p_rasselect company,name from readersgop_rgo27.创建一个名为fx()的标量函数,求x*x的值,将x值设为4,运行函数求解create function fx(@x int)returns intasbeginreturn @x*@xendgoselect dbo.fx(4)go28.在数据库books上创建drop_table触发器,输出信息‘禁止删除数据库上的表!’create trigger tg_forb_tableon databasefor drop_tableasbeginprint('禁止删除数据库上的表!')29.在图书表(books)的编号列上创建一个聚集索引idx_books_bnocreate clustered index idx_books_bnoon books(bno)go30.将图书表(readers)中第一个图书的信息输出(用变量法实现)declare @bno intset @bno=(select top 1 bno from borrowing)select*from bookswhere bno=@bnogo31.创建一个名为v_readers的视图,其作用是查询读者表(readers)中的所有;并访问该视图create view v_readersasselect*from readersgoselect*from v_readers go32.创建一个名为p_bor的存储过程来存储查询借阅表(borrowing)的信息,并运行该存储过程create proc p_borasselect*from readersgop_borgo33.创建一个名为fz()的标量函数,求z*z*z的值,将z值设为3,运行函数求解create function fz(@z int)returns intasbeginreturn @z*@z*@zendgoselect dbo.fz(3)go34.在读者表(readers)上创建after update触发器,输出信息‘您正在更新读者表的信息!’create trigger tg_readerson readersafter updateasbeginprint('您正在更新读者表的信息!')35.在借阅表(borrowing)的图书证号列上创建一个索引idx_ borrowing _libcardno,并以升序排列create nonclustered index idx_borrowing_libcardnoon borrowing(libcardno asc)go36.编写程序,定义变量@i=1,使用while循环,当@i<10,输出i值,@i每次自增2 DECLARE @i INTSET @i=1WHILE(@i<10)BEGINPRINT(@i)SET @i=@i+2END。
SQL Server数据库 复习提要(B信管091)

试卷题型一.名词解释(每题2分,共10分)数据管理、E-R模型、数据库、数据库管理系统、数据库系统、模式(概念模式、逻辑模式)、外模式(用户模式)、内模式(物理模式、存储模式)、数据独立性、主数据文件、日志文件、视图、索引、簇索引、存储过程、触发器、游标、内连接、左(外)联接、主键约束、唯一约束、检查约束、事务、数据依赖、第1范式、第2范式、第3范式、死锁、ado接口二.填空题(每空1分,共20分)关于数据库的基本知识三.是非题(每题1分,共10分)四.单项选择(每题2分,共20分)五.按要求写出相应的SQL语句(每题2分,共20分)设有如下关系表:student(sid char(8),sname char(10),ssex char(2),height real,sage datetime,stl int)course(cid char(4),cname char(10),credit int)result(sid char(8),cid char(4),score int )注:sid为学号(如09040105,09表示入学时间,04表示学院代号,01表示班级代号,05表示学号),sname为姓名,ssex为性别(‘男’,‘女’), height 为身高,sage为出生年月,stl表示高考总分;cid为课程号,cname为课程名称,credit为学分;score为课程成绩。
写出实现下列功能的SQL 语句。
(1)创建一个新的表totalgrade,具有数据列:sid,sname,sscoreCreate table totalgrade(sid char(8),sname char(10),sscore int)(2)在student中插入一条记录(’09010619’,’王鸿路’,’03/21/93’);Insert into student (sid,sname,sage)values(‘09010619’,’王鸿路’,’03/21/93’)(3)通过student表,更新totalgrade表的列数据;Insert into totalgradeSelect sid,sname,stl from student(4)将result表中学号为“09030805”的学生,课程号为“0102”的分数改为94;Update resultset score = 94Where sid=‘09030805’ and cid=‘1020’(5)通过result表更新totalgrade表的总成绩sscoreUpdate totalgradeset sscore=(select sum(score) from result where totalgrade.sid=result.sid )(6)删除totalgrade表中总成绩sscore低于400分的学生记录Delete from totalgradewhere sscore< 400(7)在student表中查询学号为09040302的同学的姓名和年龄Select sname, datepart(yy,getdate())-datepart(yy,sage)from studentwhere sid=’09040302’(8)在student表中查询与“刘伟平”年龄相同的所有学生的学号、姓名Select sid,snamefrom studentwhere sage=(s elect sage from student where sname=‘刘伟平’)(9)列出班级为03的学生中高考总分比班级为02的学生都高的学生的sid,sname,stlSelect sid, sname,stlfrom studentwhere substr(sid,5,2)=‘03’and stl>all (select stl from student where substr(sid,5,2)=‘02’)(10)查询选修“计算机基础”课程分数在80—90之间的学生的学号、姓名、课程名称、分数Select student.sid , student.sname,ame,result.scoreFrom student,course,resultWhere student.sid=result.sid and course.cid=result.cid andame=’计算机基础’ and result.score between 80 and 90六、程序填空(每空2分,共20分)(主要是关于完整性约束、游标、存储过程、触发器)1.利用T-SQL语言修改student 的表,为学号sid列定义主键,为高考总分stl 列定义约束“0-500”分。
SQL Server 复习

SQL Server 复习一:SQL Server数据库基础1.使用数据库的必要性◆存储大量数据,方便检索和访问◆保持数据信息的一致性、完整性,降低数据冗余◆可以满足应用的共享和安全方面的要求◆通过组合分析,产生新的有用信息2.数据库的发展史◆萌芽阶段——文件系统使用磁盘文件来存储数据◆初级阶段——第一代数据库出现了网状模型、层次模型的数据库◆中级阶段——第二代数据库关系型数据库和结构化查询语言◆高级阶段——新一代数据库“关系-对象”型数据库3.当今常用数据库◆OracleOracle公司的产品“关系-对象”型数据库产品免费、服务收费◆SQL Server针对不同用户群体的五个特殊的版本易用性好◆DB2IBM公司的产品支持多操作系统、多种类型的硬件和设备4.数据库的基本概念P(8)◆数据库就是“数据”的“仓库”◆数据库由表、关系以及操作对象组成◆数据存放在表中5.数据库系统和数据库管理系统◆数据库系统(DBS)是一个实际可运行的软件系统,可以对系统提供的数据进行存储、维护和应用,它是由存储介质、处理对象和管理系统共同组成的集合体数据库管理系统(DBMS)是一种系统软件,有一个互相关联的集合和一组访问数据的程序构成◆数据库由数据库管理系统统一管理,数据的插入、修改和检索都要通过数据库管理系统进行数据库管理员(DBA)在数据库系统中负责创建、监控和维护整个数据库,使数据库能被任何有权限的人有效地使用6.数据冗余和数据完整性数据冗余是指数据库中存在一些重复的数据,数据完整性是指数据库中的数据能够正确反应实际情况,数据库中允许有一些数据冗余,但是要保持数据的完整性为了减少数据冗余最常见的方法是分类存储7.SQL Server 2008管理器7.1连接SQL Server数据库时需注意以下两点◆在连接SQL Server之前,SQL Server的服务必须已启动,可以在操作系统的“服务”项中启动SQL Server 2008的服务◆SQL Server Management Studio 可以连接和管理多个其他计算机上的SQL Server 数据库7.2 SQL Server中的数据库按照用途可以划分为系统数据库和用户数据库两种◆系统数据库是管理和维护SQL Server所必需的数据库,用户数据库是用户自己建立的数据库◆Microsoft SQL Server提供了四个系统数据库Master数据库:记录SQL Server系统的所有系统级别信息,包括如下三点:所有的登录账户和系统配置设置所有其他的数据库及数据库文件的位置SQL Server的初始化信息Tempdb数据库:保存所有的临时表和临时存储过程,以及临时生成的工作表,其他SQL Server每次启动时都重新创建Model数据库:用作在系统上创建的所有数据库的模板Msdb数据库:供SQL Server代理程序调度警报、作业以及记录操作时使用7.3新建一个数据库连接◆步骤P(15)◆SQL Server支持两种身份验证:Windows身份验证和SQL Server身份验证Windows的身份验证是使用当前登录到操作系统的用户账号去登录,而SQLServer身份验证是使用SQL Server中建立的用户账号去登录7.4新建数据库登录名◆步骤P(17)◆给用户赋予操作权限分为两类:第一类是指该用户在服务器范围类能够执行那些操作,这一类权限由固定的服务器角色来确定,可以在“服务器角色中”设置该用户对服务器的操作权限;第二类权限是指该用户对指定的数据库的操作权限,可以在“用户映射”一项中设置特定数据库的权限7.5创建和管理SQL Server数据库一个数据库至少包含一个数据库文件和一个事务日志文件◆数据库文件(Database File):是存放数据库和数据库对象的文件,一个数据库可以有一个或多个数据库文件,只能有一个主数据库,一个数据库文件只属于一个数据库。
SQLServer期末考试复习要点概要

SQL Server期末考试复习重点第1 章 ,关系数据库的基来源理。
理解数据库系统的基本观点 ,掌握关系数据模型,重点掌握 E-R 模型的应用 ,认识关系运算 ,掌握关系完好性规则 ,理解关系的规范化。
1.掌握并理解数据、数据库、数据库管理系统的观点,数据库系统的构成和特色;2.掌握现实世界——信息世界——机器世界的“三个世界、两次抽象、两个模型”抽象过程。
3.掌握与观点模型有关的实体、属性、联系等观点 ,能娴熟应用 E-R 观点和方法解说 1:1,1:n,n:m 并能举例说明和绘制 E-R 图。
4.掌握关系数据模型的观点 ,如关系 (表的构成、特色 ,有关名词术语 :元祖 (记录 ,属性 (列 ,字段、属性值 ,键、主键 ,外键、主表、从表。
5.三种基本 (特意的关系运算 :投影、选择、连结。
6.关系的三个完好性规则 :实体完好性、参照完好性、域(用户自定义完好性。
7.认识关系规范化方法。
第2 章 , SQL Server2005基础。
认识 SQL Server2005的特征。
认识 SQLServer2005产品家族的概略。
认识 SQL Server2005工具和适用程序概略。
32 位 ,后边三个版8.SQL Server2005的五个版本状况。
简略版、工作组版只有本都有 32 位和 64 位之别。
9.掌握 SQL Server Management Studio的功能、构成。
10.重点掌握查问剖析器界面构成及使用T-SQL 语句查问的操作过程 ,代码、结果、信息等几个有关窗口和按钮。
11.认识文档和教程的组织方式、使用方法。
12.掌握服务器的启动、停止、封闭等操作方法。
第3 章 ,数据库的创立与管理。
掌握 SQL Server2005数据库的基本知识。
重点掌握创立数据库的有关知识和方法。
掌握管理数据库(包含查察数据库信息、备份与复原数据库 ,分别与附带数据库的有关知识和方法。
13.熟习数据库的文件和文件组的观点。
SQLSERVER重要复习资料

第一章:概述SQL Server体系结构:1、主要的服务及其作用四部分组成:数据库引擎(SSDE):是核心服务,负责完成业务数据的存储、处理、查询和安全管理等操作。
分析服务(SSAS):提供多为分析过和数据挖掘功能,可以支持用户建立数据仓库和进行商业智能分析。
报表服务(SSRS):为用户提供了支持Web的企业级的报表功能。
集成服务(SSIS):是一个数据集成平台,可以完成有关数据的提取、转换、加载等。
服务以windows服务程序的形式后台运行。
服务与前台管理工具(management studio)之间的关系:MS是Sql Server提供的一种集成环境,将各种图形化工具和多功能的脚本编辑器组合在一起,完成访问、配置、控制、管理和开发SQL Server 的所有工作,大大方便了技术人员和数据库管理员对SQL Server的各种访问。
2、数据库对象系统数据库有:master、model、msdb,Resource、tempdb。
Master:是最重要的系统数据库。
它记录了SQL Server系统级的所有信息,这些系统级的信息包括服务器配置信息、登录账户信息、数据库文件信息、SQL Server初始化信息等,这些信息影响整个SQL Server系统的运行。
Model:是一个模板数据库。
该系统存储了可以作为模板的数据库对象和数据。
当创建用户数据库时,系统自动把该数据库中的所有信息复制到用户新建的数据库中,使得新建的用户数据库初始状态下具有了与model数据库一致的对象和相关数据,从而简化数据库的初始创建和管理操作。
Msdb:是与SQL ServerAgent服务有关的数据库。
该数据库记录有关作业、警报、操作员、调度等信息,这些信息可以用于自动化系统的操作。
Tempdb:是一个临时数据库,用于存储查询过程中所使用的中间数据或结果。
Resource:是一个很特殊的系统数据库,是一个被隐藏的只读的物理系统数据库,只保存用户实例所需的架构和存储过程。
SQL Server数据库基础考试大纲

《SQL Server数据库基础》考试大纲
第1次课数据库基本概念和初识SQL Server
数据库相关基本概念:数据库、数据库管理系统、表、数据库应用程序当前主流数据库管理系统
SQL Server 2005简介
SQL Server Management Studio管理环境
创建和删除数据库
分离和附加数据库
收缩数据库
第2次课创建表和约束
数据完整性的概念:域完整性、实体完整性、引用完整性、自定义完整性创建表:添加列,设置列的类型,保存表
打开表:打开表并修改表中数据
主键的概念,添加主键
可空和非空列
标识列(自动增长列)
列的默认值
外键的概念,创建外键
创建检查约束
第3次课使用SQL语句增删改数据
T-SQL中的算术、逻辑运算符和通配符
使用INSERT语句插入数据
使用UPDATE语句更新数据
使用DELETE语句删除数据
TRUNCATE TABLE删除数据
第4次课使用简单SQL查询语句
SELECT功能和语句基本语法
在查询中重命名列
查询空值
使用常量列
限制查询返回行数
对查询结果进行排序
SQL Server内置函数:日期函数、字符串函数、数学函数、系统函数
第5次课模糊查询、分组查询和联接查询
使用LIKE和通配符进行模糊查询
使用BETWEEN…AND进行某一范围的查询
使用聚合函数,SUM、A VG、MAX、MIN、COUNT
滨州学院本科毕业设计(翻译)
分组查询
在分组查询中使用聚合函数
多表联接查询:二表联接、三表联接、内联接、外联接
1。
SQL数据库系统复习提要

《SQL Server数据库》复习提要一、名词解释逻辑数据库、物理数据库、主数据文件、辅助数据文件、日志文件、文件组、视图、游标、索引、数据独立性、选择、投影、连接、默认约束、检查约束、触发器、完全数据库备份、差异备份、关系数据库、候选关键字、空值(NULL)、行集函数、聚合函数、外模式、模式、内模式、第1范式、第2范式二、填空题1. SQL Sever 2005主要有五个版本:标准版、企业版、开发版、工作组版和精简版。
2. SQL Sever 2005 数据库的数据文件扩展名;辅助数据文件扩展名;日志文件扩展名为。
3.维护数据的触发器可分为、和三种类型。
4.执行触发器时,系统创建了两个特殊的逻辑表、。
5.数据库需备份的内容可分为和两部分。
6.数据库管理系统分、和三种类型。
7.在SQL Server 中,有两类游标可以用于应程序中:和。
8.T—SQL 语言主要由、和。
三部分组成。
9.对两个相关联的表(主表与从表)进行和时,通过参照完整性保证它们之间的数据的。
10.定义表间的参照关系时,先定义,再对从表定义。
11.SQL Sever 2005 支持三种类型的复制:、和。
12.SQL Sever 2005 有三个默认的用户帐号:、和。
13.T-SQL 语言提供了三种系统内置函数:、和。
14. 逻辑文件名是数据库创建后在所有语句中引用文件时所使用的名字;操作系统文件名是在创建物理文件时使用的路径和文件名。
三.是非题1. 安装SQL Server 2005时,系统将自动创建5个数据库。
即 master 、model 、msdb 、 tempdb和资源系统数据库,这些数据库都属于系统数据库。
()2.用“对象资源管理器”和“查询分析器”都可对数据库表进行查询。
()3. 当表的字段类型为数值型时,标识及标识种子才有效。
()4. 当表的字段类型为字符型时,标识及标识种子才有效。
()5. 当表建成后,仍然可以改变数据文件和日志文件的存储位置。
SQL_SERVER复习提纲

SQL SERVER 复习提纲第一部分SQL 常用命令、数据库操作1.创建数据库简单创建CREATE DA TABASE 数据库名例:create database test 完整定义:例:CREATE DATABASE sales_1ON PRIMARY (NAME= sales_1_data,FILENAME='d:\ sales_1.mdf',SIZE=10,MAXSIZE=unlimited, FILEGROWTH=20%)LOG ON (NAME= sales_1_log,FILENAME='d:\ sales_1_log.ldf',SIZE=3,MAXSIZE=10,FILEGROWTH=2)2.更改数据库名称sp_renamedb 'oldname', 'newname' 例:sp_renamedb 'test', 'test1'3.修改数据库大小例:DBCC SHRINKDATABASE ( test,40,NOTRUNCATE )DBCC SHRINKFILE ( test_1,4) 4.删除数据库DROP DATABASE 数据库名5.查看数据库信息sp_helpdb 查看当前服务器上的所有数据库信息,可以指定数据库名称sp_databases查看当前服务器上的所有可以使用的数据库sp_helpfile 查看当前数据库中的所有文件信息,可以指定文件名sp_helpfilegroup 查看当前数据库中的所有文件组信息,可以指定文件组、表操作1.创建表CREATE TABLE 数据表名(字段1 名字段1 的数据类型,字段2 名字段2的数据类型,. . . 字段n名字段n 的数据类型)例:create table card(card_id char(6),card_name char(10),card_type char(10),card_credit decimal(5,2), card_date datetime)Create table usecard (card_id char(6), exp_type char(20) exp char(100),scoredecimal(10,2),scoredate datetime) 注意:常用数据类型整型:int 不能设置长度浮点型:Decimal(长度,小数)numeric(长度,小数)字符型: char(10) varchar(10) 日期型: datetime 不能设置长度当要创建表同时创建主键约束:create table card(card_id char(6) constraint pk_name( 约 束 名 ) PRIMARY CLUSTERED,card_name char(10),card_credit decimal(5,2), card_date datetime)2.修改表结构在表中增加一个的字段ALTER TABLE 数据表名 ADD 字段名 字段数据类型 例: alter table card add card_grade int在表中删除一个字段ALTER TABLE 数据表名 DROP COLUMN 字段名 例: alter table card drop column card_grade修改表中某字段数据类型ALTER TABLE 数据表名 ALTER COLUMN 字段名 字段数据类型 例: alter table card alter column card_grade decimal(5,2)为已存在的表设置主键(先将要设置成主键的字段修改为 NOT NULL )ALTER TABLE 数据表名 ADD CONSTRAINT card_pk PRIMARY KEY CLUSTERED(card_id) 例: alter table card ADD constraint pk_name( 约束名 ) PRIMARY KEY CLUSTERED(card_id)查看表sp_help 数据表名 sp_depends 查看表的相关性 sp_helpconstraint 查看表的约束. 插入记录INSERT INTO 数据表名(字段 字段 n 值)例:insert into card(card_id,card_name,card_credit,card_date) values('1001','王晓明',15,'20070101')7. 更新记录UPDATE 数据表名 SET 字段1名=字段1值,字段2名=字段2值,...,字段n 名=字段 例: update card set card_name='wanghong',card_credit=20 where card_id='1001'8. 删除记录DELETE FROM 数据表名 WHERE 条件 例: delete from card where card_id='1001'9.查询命令SELECT select_ist FROM table_source [WHERE search_condition] [GROUP BY groupby_expression] [HA VING serch_conditing] [ORDER BY order_expression[ASC|DESC]] 例:KEY3. 4.删除表 DROP TABLE 数据表名例: drop table card5. 重命名表sp_rename oldname,newname例: sp_rename card1,card6. 1,字段 2,. . . ,字段 n ) VALUES (字段 1值,字段 2值,.1.查询card 表中的所有记录select * from card2.查询card 表中card_credit 字段,并去掉重复值select distinct card_credit from card3.查询card 表中card_id,card_name,card_credit 字段select card_id,card_name,card_credit from card4.查询card 表中的前10 条记录select top 10 * from card5.查询card 表中前面10% 的记录select top 10 percent * from card6. 用INTO子句创建一个新表cardl,表中包含card表的前10%的记录select top 10 percent * into card1 from card7. 查询card 表中card_credit 大于15 的记录select * from card where card_credit>158. 查询card表中card_credit大于15,并且日期在20070101之前的记录select * from card where card_credit>15 and card_date<'20070101'9. 查询card 表中姓“张”的记录select * from card where card_name like ' 张%'10. 查询card 表中card_credit 在10 和20 之间的记录select * from card where card_credit between 10 and 2011. 查询card表中card_credit为12,15的记录select * from card where card_credit in (12,15)12. 查询card 表中每种card_type 积分的记录select card_type,sum(card_credit) from card group by (card_type)13. 使用CUBE 分组查询card 表中每种card_type 积分的记录select card_type,sum(card_credit) from card group by (card_type) with cube14. 使用ROLLUP 分组查询card 表中每种card_type 积分的记录select card_type,sum(card_credit) from card group by (card_type) with rollup15. 对card 表按card_credit 进行降序排序select * from card order by card_credit desc16. 统计card 表中所有记录的平均积分select * from card compute avg(card_credit)17. 对card表中card」d和card_use表中的card」d进行联合查询select card_id from card union select card_id from usecard18. 联合查询card表和usecard表,显示用户名(card_name)、类型(exp_type)、情况描述(exp)、检查分数(score)检查时间(scoredate)select * from card compute avg(card_credit)19. 查看持卡人姓名(card_name)、检查类型(exp_type)、检查情况(exp)、检查分数(score)不使用别名:select card.card_name,usecard.exp_type,usecard.exp,usecard.scoredatefrom usecard ,card where card.card_id=usecard.card_id用别名:select c.card_name,u.exp_type,u.exp,u.scoredate from usecard as u,card as c wherec.card_id=u.card_idselect s.stu_name,c.course_name,e.t_grade from stu as s,course as c,exam as e wheres,stu_id=e.stu_id and c.course_id=e.course_id20. 嵌套查询(书上例子P127 实例4.19)select detail_id,goods_id,name,price from receive_detail where pici in(select pici from output_detailwhere (sale_price-price)*quantity>2)三、视图操作1.创建视图CREATE VIEW 视图名AS 查询命令例:create view card_view as select * from card2.查看视图信息sp_help 视图名例:sp_help card_viewsp_helptext 显示视图的定义例:sp_helptext card_viewsp_depends 显示视图所依赖的对象例:sp_depends card_view3 .修改视图ALTER VIEW 视图名AS 查询语句WITH CHECK OPTION例:alter view card_view as select * from card where card_credit>20 with check option注意WITH CHECK OPTION 是对条件进行检查,如果没有with check option 不符合条件的记录也会被插入表中例:insert into card_view values('1001','王晓明',15,'20070101')插入的card_credit 是15 比20 小,但因为没做检查还是插入到表里了4. 通过视图插入数据记录INSERT INTO 视图名VALUES (字段1值,字段2值,...,字段n值)例:insert into card_view values('1001',' 王晓明',21,'20070101')5. 通过视图修改数据记录UPDATE视图名SET字段1名=字段1值,字段2名=字段2值,...,字段n名=字段n值例:updatecard_view set card_name='wanghong',card_credit=20 where card_id='1001'6. 通过视图删除数据记录DELETE FROM 视图名WHERE 条件例:delete from card_view where card_id='1001'7. 重命名视图sp_rename oldname,newname 例:sp_rename card_view,card_view18. 删除视图DROP VIEW 视图名例:drop view card_view四、索引的使用1.创建索引CREATE INDEX 索引名ON 表或视图(字段名) 创建聚集唯一索引例:create unique clustered index in_card on card(card_id) 创建唯一索引例:create unique index card_index on card(card_id) 创建复合索引例:create index card_comindex on card(card_name,card_date)2.查看索引sp_helpindex 索引名所属的表名3.重命名索引sp_rename [@objname]‘oldname','newname','index ' 例:sp_rename 'card.card_index','card_index1','index'4.删除索引DROP INDEX 表名.索引名例:drop index card.card_index五、存储过程1.创建存储过程创建存储过程之前要先判断这个存储过程名是否已经存在(用IF EXISTS 判断)例:IF EXISTS(SELECT name FROM sysobjects WHERE name= 'card_pro'AND type= 'P') DROP PROCEDURE card_pro创建不带参数的存储过程CREATE PROCEDURE 存储过程名AS 查询语句例:CREATE PROCEDURE stu_pro AS select *from exam 执行该存储过程有2 种方式:直接打存储过程名:例:stu_pro用EXECUTE 存储过程名:例:EXECUTE stu_pro创建带参数的存储过程CREATE PROCEDURE 存储过程名@变量名变量数据类型AS 查询语句例:CREATEPROCEDURE stu_pro2 @tnum char(8) AS select * from exam where t_number=@tnum执行该存储过程有 3 种方式:直接打存储过程名参数的值:例:stu_pro2 '20040301' 用EXECUTE 存储过程名:例:execute stu_pro2 '20040301' 用EXECUTE 存储过程名:例:execute stu_pro2@tnum='20040301'创建带参数且有返回值的存储过程例:CREATE PROCEDURE stu_pro3 @tnum char(8),@cnum char(6),@grade char(10) output ASdeclare @errorvalue intset @errorvalue=0select @grade=t_grade from exam where t_number=@tnum and c_number=@cnum if(@@ERROR<>0)set @errorvalue=@@ERRORreturn @errorvalue执行:declare @returnvalue int,@tnum char(8),@cnum char(6),@grade char(10)select @tnum=20040301,@cnum=100101execute @returnvalue=stu_pro3 @tnum,@cnum,@grade output select @returnvalue as aselect @grade as b2.查看存储过程sp_help 存储过程名例: sp_help card_prosp_helptext 显示存储过程的定义例: sp_helptext card_prosp_depends 显示存储过程所依赖的对象例:sp_depends card_prosp_stored_procedures 当前存储过程列表3.修改存储过程ALTER PROCEDURE 存储过程名AS 查询语句例:alter procdure card_pro as select * from card where t_grade<3 and card_credit>1005.重命名存储过程sp_rename oldname,newname 例:sp_rename card_pro,card_pro16.删除存储过程:DROP PROCEDURE 存储过程名例:drop procedure card_pro1六、触发器1.创建触发器创建触发器之前要先判断这个触发器名是否已经存在(用IF EXISTS 判断)例:IF EXISTS(SELECT name FROM sysobjects WHERE name=' insert_data AND type= 'Tr') DROP TRIGGER card_pro 创建INSERT 触发器CREATE TRIGGER 触发器名ON 表名/视图名AFTER INSERT AS 触发内容例:创建在exam表中当输入分数大于100就拒绝这条记录插入if exists(select name from sysobjectsWhere name='insert_data' and type='tr')Drop trigger insert_datacreate trigger insert_data on exam after insert asif(select t_grade from inserted)>100beginprint 'not over 100'rollbackend创建UPDATE 触发器CREATE TRIGGER 触发器名ON 表名/视图名AFTER UPDATE AS 触发内容例:创建在exam 表中当输入分数大于100 就拒绝这条记录修改if exists(select name from sysobjectsWhere name='update_data' and type='tr')Drop trigger update_datacreate trigger update_data on exam after update asif update(t_grade)beginif(select t_grade from inserted)>100beginprint ' 分数不能大于100' rollback transactionendend创建INSERT 、UPDATE 触发器CREATE TRIGGER 触发器名ON 表名/视图名AFTER INSERT ,UPDA TE AS 触发内容例:if exists(select name from sysobjectsWhere name='update_data' and type='tr')Drop trigger update_datacreate trigger update_data on exam for insert,update asif update(t_grade)beginif(select t_grade from inserted)>100beginprint ' 分数不能大于100'rollback transactionendend创建INSTEAD OF 触发器CREATE TRIGGER 触发器名ON 表名/视图名INSTEAD OF DELETE AS 触发内容例:create trigger exam_tri on exam instead of delete as ‘不允许删除记录! '2.查看触发器sp_help 触发器名例:sp_help exam_trisp_helptext 显示触发器的定义例:sp_helptext exam_trisp_depends 显示触发器所依赖的对象例:sp_depends exam_tri3.修改触发器修改INSERT 触发器ALTER TRIGGER 触发器名ON 表名/视图名AFTER INSERT AS 触发内容修改UPDA TE 触发器ALTER TRIGGER 触发器名ON 表名/视图名AFTER UPDA TE AS 触发内容修改INSERT 、UPDATE 触发器4.重命名触发器5.删除触发器第二部分 知识点、 数据库的有关概念:数据:文字、图表、数字、图片等等 数据库对象:表、视图、存储过程、触发器、规则等等 数据库:是数据和数据库对象的集合 数据库管理系统:管理数据的计算机软件,提供了用户和数据库之间的软件界面,使用户更方 便的操作数据库。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL SERVER复习提纲第一部分SQL 常用命令一、数据库操作1.创建数据库简单创建CREATE DATABASE 数据库名例:create database test完整定义:例:CREATE DATABASE sales_1ON PRIMARY(NAME= sales_1_data,FILENAME='d:\ sales_1.mdf',SIZE=10,MAXSIZE=unlimited,FILEGROWTH=20%)LOG ON(NAME= sales_1_log,FILENAME='d:\ sales_1_log.ldf',SIZE=3,MAXSIZE=10,FILEGROWTH=2)2.更改数据库名称sp_renamedb 'oldname', 'newname' 例:sp_renamedb 'test', 'test1'3.修改数据库大小例:DBCC SHRINKDATABASE(test,40,NOTRUNCATE)DBCC SHRINKFILE(test_1,4)4.删除数据库DROP DATABASE 数据库名5.查看数据库信息sp_helpdb 查看当前服务器上的所有数据库信息,可以指定数据库名称 sp_databases查看当前服务器上的所有可以使用的数据库sp_helpfile 查看当前数据库中的所有文件信息,可以指定文件名sp_helpfilegroup 查看当前数据库中的所有文件组信息,可以指定文件组二、表操作1.创建表CREATE TABLE 数据表名(字段1名字段1的数据类型,字段2名字段2的数据类型,. . . ,字段n名字段n的数据类型)例:create table card(card_id char(6),card_name char(10),card_type char(10),card_credit decimal(5,2), card_date datetime)Create table usecard (card_id char(6), exp_type char(20) exp char(100),score decimal(10,2),scoredate datetime)注意:常用数据类型整型:int 不能设置长度浮点型:Decimal(长度,小数) numeric(长度,小数)字符型:char(10) varchar(10)日期型:datetime 不能设置长度当要创建表同时创建主键约束:create table card(card_id char(6) constraint pk_name(约束名) PRIMARYKEY CLUSTERED,card_name char(10),card_credit decimal(5,2),card_date datetime)2.修改表结构在表中增加一个的字段ALTER TABLE 数据表名ADD 字段名字段数据类型例:alter table card add card_grade int在表中删除一个字段ALTER TABLE 数据表名DROP COLUMN 字段名例:alter table card drop column card_grade修改表中某字段数据类型ALTER TABLE 数据表名ALTER COLUMN 字段名字段数据类型例:alter table card alter column card_grade decimal(5,2)为已存在的表设置主键(先将要设置成主键的字段修改为NOT NULL)ALTER TABLE 数据表名ADD CONSTRAINT card_pk PRIMARY KEY CLUSTERED(card_id)例:alter table card ADD constraint pk_name(约束名) PRIMARY KEY CLUSTERED(card_id)3.查看表sp_help 数据表名sp_depends 查看表的相关性sp_helpconstraint 查看表的约束4.删除表DROP TABLE 数据表名例:drop table card5.重命名表sp_rename oldname,newname 例:sp_rename card1,card6.插入记录INSERT INTO 数据表名(字段1,字段2,. . .,字段n)V ALUES(字段1值,字段2值,. . .,字段n值)例:insert into card(card_id,card_name,card_credit,card_date) values('1001','王晓明',15,'20070101')7.更新记录UPDATE 数据表名SET 字段1名=字段1值,字段2名=字段2值,. . .,字段n名=字段n值例:update card set card_name='wanghong',card_credit=20 where card_id='1001' 8.删除记录DELETE FROM 数据表名WHERE 条件例:delete from card where card_id='1001'9.查询命令SELECT select_ist FROM table_source [WHERE search_condition] [GROUP BY groupby_expression] [HA VING serch_conditing] [ORDER BY order_expression[ASC|DESC]]例:1.查询card表中的所有记录select * from card2.查询card表中card_credit字段,并去掉重复值select distinct card_credit from card3.查询card表中card_id,card_name,card_credit字段select card_id,card_name,card_credit from card4.查询card表中的前10条记录select top 10 * from card5.查询card表中前面10%的记录select top 10 percent * from card6.用INTO子句创建一个新表card1,表中包含card表的前10%的记录select top 10 percent * into card1 from card7.查询card表中card_credit大于15的记录select * from card where card_credit>158.查询card表中card_credit大于15,并且日期在20070101之前的记录select * from card where card_credit>15 and card_date<’20070101’9.查询card表中姓“张”的记录select * from card where card_name like '张%'10.查询card表中card_credit在10和20之间的记录select * from card where card_credit between 10 and 2011.查询card表中card_credit为12,15的记录select * from card where card_credit in (12,15)12.查询card表中每种card_type 积分的记录select card_type,sum(card_credit) from card group by (card_type)13.使用CUBE分组查询card表中每种card_type 积分的记录select card_type,sum(card_credit) from card group by (card_type) with cube 14.使用ROLLUP分组查询card表中每种card_type 积分的记录select card_type,sum(card_credit) from card group by (card_type) withrollup15.对card 表按card_credit 进行降序排序select * from card order by card_credit desc16.统计card 表中所有记录的平均积分select * from card compute avg(card_credit)17.对card 表中card_id 和card_use表中的card_id 进行联合查询select card_id from card union select card_id from usecard18.联合查询card表和usecard 表,显示用户名(card_name)、类型(exp_type)、情况描述(exp)、检查分数(score)检查时间(scoredate)select * from card compute avg(card_credit)19.查看持卡人姓名(card_name)、检查类型(exp_type)、检查情况(exp)、检查分数(score)不使用别名:select card.card_name,usecard.exp_type,usecard.exp,usecard.scoredate from usecard ,card where card.card_id=usecard.card_id用别名:select c.card_name,u.exp_type,u.exp,u.scoredate from usecard as u,card asc where c.card_id=u.card_idselect s.stu_name,c.course_name,e.t_grade from stu as s,course as c,examas e where s,stu_id=e.stu_id and c.course_id=e.course_id 20.嵌套查询(书上例子P127 实例4.19)select detail_id,goods_id,name,price from receive_detail where piciin(select pici from output_detail where (sale_price-price)*quantity>2)三、视图操作1.创建视图CREATE VIEW 视图名AS 查询命令例:create view card_view as select * from card2.查看视图信息sp_help 视图名例:sp_help card_viewsp_helptext 显示视图的定义例:sp_helptext card_viewsp_depends 显示视图所依赖的对象例:sp_depends card_view3.修改视图ALTER VIEW 视图名AS 查询语句WITH CHECK OPTION例:alter view card_view as select * from card where card_credit>20 with check option注意WITH CHECK OPTION 是对条件进行检查,如果没有with check option 不符合条件的记录也会被插入表中例:insert into card_view values('1001','王晓明',15,'20070101') 插入的card_credit 是15 比20小,但因为没做检查还是插入到表里了4.通过视图插入数据记录INSERT INTO 视图名V ALUES(字段1值,字段2值,. . .,字段n值)例:insert into card_view values('1001','王晓明',21,'20070101')5.通过视图修改数据记录UPDATE 视图名SET 字段1名=字段1值,字段2名=字段2值,. . .,字段n名=字段n值例:update card_view set card_name='wanghong',card_credit=20 where card_id='1001'6.通过视图删除数据记录DELETE FROM 视图名WHERE 条件例:delete from card_view where card_id='1001'7.重命名视图sp_rename oldname,newname 例:sp_rename card_view,card_view1 8.删除视图DROP VIEW 视图名例:drop view card_view四、索引的使用1.创建索引CREATE INDEX 索引名ON 表或视图(字段名)创建聚集唯一索引例:create unique clustered index in_card on card(card_id)创建唯一索引例:create unique index card_index on card(card_id)创建复合索引例:create index card_comindex on card(card_name,card_date)2.查看索引sp_helpindex 索引名所属的表名3.重命名索引sp_rename [@objname]‘oldname’,’newname’,’index’例:sp_rename 'card.card_index','card_index1','index'4.删除索引DROP INDEX 表名.索引名例:drop index card.card_index五、存储过程1.创建存储过程创建存储过程之前要先判断这个存储过程名是否已经存在(用IF EXISTS判断)例:IF EXISTS(SELECT name FROM sysobjects WHERE name=’card_pro’ AND type=’P’) DROP PROCEDURE card_pro 创建不带参数的存储过程CREATE PROCEDURE 存储过程名AS 查询语句例:CREATE PROCEDURE stu_pro AS select * from exam执行该存储过程有2种方式:✧直接打存储过程名:例:stu_pro✧用EXECUTE存储过程名:例:EXECUTE stu_pro创建带参数的存储过程CREATE PROCEDURE 存储过程名@变量名变量数据类型AS 查询语句例:CREATE PROCEDURE stu_pro2 @tnum char(8) AS select * from exam where t_number=@tnum执行该存储过程有3种方式:✧直接打存储过程名参数的值:例:stu_pro2 '20040301'✧用EXECUTE存储过程名:例:execute stu_pro2 '20040301'✧用EXECUTE存储过程名:例:execute stu_pro2 @tnum='20040301'创建带参数且有返回值的存储过程例:CREATE PROCEDURE stu_pro3 @tnum char(8),@cnumchar(6),@grade char(10) outputAS declare @errorvalue intset @errorvalue=0select @grade=t_grade from exam where t_number=@tnum andc_number=@cnumif (@@ERROR<>0)set @errorvalue=@@ERRORreturn @errorvalue执行:declare @returnvalue int,@tnum char(8),@cnum char(6),@grade char(10)select @tnum=20040301,@cnum=100101execute @returnvalue=stu_pro3 @tnum,@cnum,@grade outputselect @returnvalue as aselect @grade as b2.查看存储过程sp_help 存储过程名例:sp_help card_prosp_helptext 显示存储过程的定义例:sp_helptext card_prosp_depends 显示存储过程所依赖的对象例:sp_depends card_prosp_stored_procedures 当前存储过程列表3.修改存储过程ALTER PROCEDURE 存储过程名AS 查询语句例:alter procdure card_pro as select * from card where t_grade<3 and card_credit>1005.重命名存储过程sp_rename oldname,newname 例:sp_rename card_pro,card_pro1 6.删除存储过程:DROP PROCEDURE 存储过程名例:drop procedure card_pro1六、触发器1.创建触发器创建触发器之前要先判断这个触发器名是否已经存在(用IF EXISTS判断)例:IF EXISTS(SELECT name FROM sysobjects WHERE name=’ insert_data’ AND type=’Tr’) DROP TRIGGER card_pro创建INSERT触发器CREATE TRIGGER 触发器名ON 表名/视图名AFTER INSERT AS 触发内容例:创建在exam表中当输入分数大于100就拒绝这条记录插入if exists(select name from sysobjectsWhere name='insert_data' and type='tr')Drop trigger insert_datacreate trigger insert_data on exam after insert asif(select t_grade from inserted)>100beginprint 'not over 100'rollbackend创建UPDATE触发器CREATE TRIGGER 触发器名ON 表名/视图名AFTER UPDATE AS 触发内容例:创建在exam表中当输入分数大于100就拒绝这条记录修改if exists(select name from sysobjectsWhere name='update_data' and type='tr')Drop trigger update_datacreate trigger update_data on exam after update asif update(t_grade)beginif(select t_grade from inserted)>100beginprint '分数不能大于100'rollback transactionendend创建INSERT、UPDATE触发器CREATE TRIGGER 触发器名ON 表名/视图名AFTER INSERT,UPDATE AS 触发内容例:if exists(select name from sysobjectsWhere name='update_data' and type='tr')Drop trigger update_datacreate trigger update_data on exam for insert,update asif update(t_grade)beginif(select t_grade from inserted)>100beginprint '分数不能大于100'rollback transactionendend创建INSTEAD OF 触发器CREATE TRIGGER 触发器名ON 表名/视图名INSTEAD OFDELETE AS 触发内容例:create trigger exam_tri on exam instead of delete as ‘不允许删除记录!’2.查看触发器sp_help 触发器名例:sp_help exam_trisp_helptext 显示触发器的定义例:sp_helptext exam_trisp_depends 显示触发器所依赖的对象例:sp_depends exam_tri3.修改触发器修改INSERT触发器ALTER TRIGGER 触发器名ON 表名/视图名AFTER INSERT AS 触发内容修改UPDATE触发器ALTER TRIGGER 触发器名ON 表名/视图名AFTER UPDATE AS 触发内容修改INSERT、UPDATE触发器ALTER TRIGGER 触发器名ON 表名/视图名AFTER INSERT,UPDATE AS 触发内容修改INSTEAD OF 触发器ALTER TRIGGER 触发器名ON 表名/视图名INSTEAD OF DELETEAS 触发内容4.重命名触发器sp_rename oldname,newname 例:sp_rename card_tri,card_tri15.删除触发器DROP TRIGGER触发器名例:drop trigger card_tri1第二部分知识点一、数据库的有关概念:数据:文字、图表、数字、图片等等数据库对象:表、视图、存储过程、触发器、规则等等数据库:是数据和数据库对象的集合数据库管理系统:管理数据的计算机软件,提供了用户和数据库之间的软件界面,使用户更方便的操作数据库。