数据库代码整理Word格式文档下载.docx
- 文档编号:17625740
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:13
- 大小:20.16KB
数据库代码整理Word格式文档下载.docx
《数据库代码整理Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据库代码整理Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。
print'
插入信息的学号不在学生表中!
'
ifnotexists(select*fromcourse,insertedwhereo=o)
插入信息的课程号不在课程表中!
rollback
end
else
触发器的触发执行测试语句(T-SQL):
insertintosc
values(20050003,4,91)
2、为course表创建一个触发器course_del,当删除了course表中的一条课程信息时,同时将表sc表中相应的学生选课记录删除掉。
createtriggercourse_del_20077110oncourse
fordelete
as
ifexists(select*fromsc,deletedwhereo=o)
begin
delete
fromsc
whereoin(selectcnofromdeleted)
delete
fromcourse
wherecno=3
3、在course表中添加一个平均成绩avg_grade字段(记录每门课程的平均成绩),创建一个触发器grade_modify,当SC表中的某学生的成绩发生变化时,则course表中的平均成绩也能及时相应的发生改变。
createtriggergrade_modify_20077110
onsc
forupdate
ifupdate(grade)
begin
updatecourse
setavg_grade=(selectavg(grade)
fromscwhereo=o
groupbycno)
end
updatesc
setgrade=80
wheresno='
20050001'
andcno=1
4、创建一视图student_view,包含学号、姓名、课程号、课程名、成绩等属性,在student_view上创建一个触发器grade_moidfy,当对student_view中的学生的成绩进行修改时,实际修改的是sc中的相应记录。
createviewstudent_view_20077110
asselectstudent.sno,sname,o,cname,grade
fromstudent,sc,course
wherestudent.sno=sc.snoando=o
createtriggergrade1_modify_20077110
onstudent_view_20077110
insteadofupdate
updatesc
setgrade=(selectgradefromstudent_view_20077110
wherestudent_view_20077110.sno=sc.sno)
updatestudent_view_20077110
setgrade=100
5、查看触发器grade_modify的相关信息
sp_helptriggersc,'
update'
6、查看触发器grade_modify的相关性。
sp_dependsgrade_modify_20077110
7、删除触发器
droptriggersc_insert_20077110
三、select
1、从学生表中分别检索出姓张的所有同学的资料;
检索名字的第二个字是“红”或“虹”的所有同学的资料。
1)select*
fromstudent
wheresnamelike'
张%'
2)select*
_红%'
orsnamelike'
_宏%'
2、如果用户查询的匹配字符串本身就含有%或_,比如在课程表中,添加一门课程为Visual_Basic,其它相关信息自取。
若要查询名为Visual_Basic的课程的学分,则T-SQL语句为:
select*
wherecnamelike'
visual!
_basic'
escape'
!
3、查询所有没有被选过的课程。
Select*
fromcoursec
wherenotexists
(select*
fromc_s
wherec.course_no=c_s.course_no);
4、查询选课总分最多的学生的姓名及其选课总学分。
selects.name,sum(credit)
fromstudents,c_s,coursec
wheres.id=c_s.student_id
andc_s.course_no=c.course_no
groupbys.id,s.name
havingsum(credit)>
=all
(selectsum(credit)fromstudents,c_s,coursec
groupbys.id);
5、检索至少选修“程军”老师所授全部课程的学生姓名SNAME。
SELECTSNAME
FROMS
WHERENOTEXISTS
(SELECT*
FROMC
WHERETEACHER=’程军’ANDNOTEXISTS
(SELECT*FROMSC
WHERESC.SNO=S.SNOANDSC.CNO=C.CNO));
6、检索“李强”同学不学课程的课程号。
SELECTCNO
WHERECNONOTIN
(SELECTCNO
FROMSC,S
WHERESC.SNO=S.SNOANDS.SNAME=’李强’);
7、检索至少选修两门课程的学生学号。
SELECTSNO
FROMSCA,SCB
WHEREA.SNO=B.SNOANDA.CNO<
>
B.CNO;
8、检索全部学生都选修的课程的课程号和课程名。
SELECTCNO,CNAME
FROMC
WHERENOTEXISTS
FROMS
(SELECT*
FROMSC
WHERESC.CNO=C.CNOANDSC.SNO=S.SNO));
9、检索选修课程号为k1和k5的学生学号。
FROMSCA,SCB
WHEREA.SNO=B.SNOANDA.CNO=’k1’ANDB.CNO=’k5’;
10、检索选修全部课程的学生姓名;
WHERENOTEXISTS
11、检索选修课程包含学号为2的学生所修课程的学生学号。
FROMSCA
WHERESC.SNO=’2’ANDNOTEXISTS
FROMSCB
B.SNO=S.SNOANDB.CNO=A.CNO));
12、列出所有未讲课的教师的name和depart;
selectname,depart
fromteacher
wherenonotin
(selectdistincttno
fromcourse)
四、视图
1、在“学生信息”数据库中以“学生”表为基础,创建名为“V_计算机应用专业学生”的视图。
使用该视图时,查询“计算机应用”专业的学生信息,并显示“学生”表中的所有字段。
createviewV_计算机应用专业学生
asselect*
fromstudent
whereSdept='
计算机应用'
2、创建视图YWCJ_VIEW,从“学生信息”数据库中检索03级01班‘SQLSERVER’课程的成绩。
CreateviewYWCJ_VIEW
Asselectgrade
From学生信息,选课表,课程表
Where学生信息.学号=选课表.学号and课程表.课程号=选课表.课程号and学生信息.班级=‘0301’and课程名=‘SQLSEVER’
3、使用视图“V_计算机应用专业学生”查询02级的学生信息。
createviewV_计算机应用专业
from学生信息
whereClassNo='
02%'
4、将视图“V_计算机应用专业学生”更名为“V_02级计应专业学生”。
sp_rename'
V_计算机应用专业学生'
'
V02_级计应专业学生'
5、修改“V_02级计应专业学生”视图,使其返回计算机应用专业02级学生的信息。
6、查看视图“V_02级计应专业学生”的信息。
Select*fromV_02_级计应专业学生
7、删除视图“V_02级计应专业学生”。
DropviewV_02级计应专业学生
五、索引
1、在“学生信息”数据库中,为“学期成绩”表创建一个基于“学号、课程编号”组合列的惟一、聚集、复合索引aa_index。
createuniqueclusteredindexaa_index
on学期成绩(学号,课程编号)
2、为“学生信息”数据库中的“学期成绩”表的“成绩”字段创建一个非聚集
索引,名称为cj_index。
createnonclusteredindexcj_index
on学期成绩(成绩)
3、查看“学期成绩”表上的索引信息。
sp_helpindex学期成绩
4、把aa_index索引更名为bb_index索引。
学期成绩.aa_index'
bb_index'
5、将索引cj_index更名为xscj_index。
学期成绩.cj_index'
xscj_index'
6、查看“学生信息”数据库中所有表的碎片情况,如果存在索引碎片,将其清
除。
DBCCindexdefrag(学生信息,学期成绩,bb_index)
7、删除索引bb_index和xscj_index。
dropindex学期成绩.bb_index
六、常见命令:
1、sp_helptext
显示规则、默认值、未加密的存储过程、用户定义函数、触发器或视图的文本。
2、sp_helpdb
报告有关指定数据库或所有数据库的信息。
3、sp_dboption
显示或更改数据库选项。
不能在master或tempdb数据库上使用sp_dboption。
向后兼容性支持sp_dboption。
使用ALTERDATABASE设置数据库选项。
例:
sp_dboption'
pubs'
'
readonly'
FALSE'
sp_dboption'
singleuser'
true'
4、sp_rename
更改当前数据库中用户创建对象(如表、列或用户定义数据类型)的名称。
EXECsp_rename'
customers'
custs'
5、sp_changedbowner
更改当前数据库的所有者。
下面的示例使用户Albert成为当前数据库的所有者,并将旧数据库所有者的现有别名映射到Albert。
EXECsp_changedbowner'
Albert'
6、sp_addtype
创建用户定义的数据类型。
EXECsp_addtypebirthday,datetime,'
NULL'
7、sp_droptype
从systypes删除用户定义的数据类型。
EXECsp_droptype'
birthday'
8、REVOKE
删除以前在当前数据库内的用户上授予或拒绝的权限。
1)废除授予多个用户的多个语句权限。
REVOKECREATETABLE,CREATEDEFAULT
FROMMary,John
2)下例删除对Mary拒绝的权限,并通过适用于Budget角色的SELECT权限,允许Mary对该表使用SELECT语句。
REVOKESELECTONBudget_DataTOMary
9、GRANT
在安全系统中创建项目,使当前数据库中的用户得以处理当前数据库中的数据或执行特定的Transact-SQL语句。
下面的示例给用户Mary和John以及WindowsNT组Corporate\BobJ授予多个语句权限。
GRANTCREATEDATABASE,CREATETABLE
TOMary,John,[Corporate\BobJ]
下面的示例将CREATETABLE权限授予Accounting角色的所有成员。
GRANTCREATETABLETOAccounting
10、sp_depends
显示有关数据库对象相关性的信息(例如,依赖表或视图的视图和过程,以及视图或过程所依赖的表和视图)。
不报告对当前数据库以外对象的引用。
11、sp_help
报告有关数据库对象(sysobjects表中列出的任何对象)、用户定义数据类型或Microsoft®
SQLServer™所提供的数据类型的信息。
12、sp_attach_db
将数据库附加到服务器
下面的示例将pubs中的两个文件附加到当前服务器。
EXECsp_attach_db@dbname=N'
@filename1=N'
c:
\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\pubs.mdf'
@filename2=N'
\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\pubs_log.ldf'
13、sp_detach_db
从服务器分离数据库,并可以选择在分离前在所有的表上运行UPDATESTATISTICS。
sp_detach_db'
14、SHRINKDATABASE收缩数据库
收缩数据库”学生情况”的容量。
DBCCSHRINKDATABASE(学生情况,3)
15、AutoShrink
自动收缩
execsp_dboption'
学生情况'
AutoShrink'
True'
建表:
CREATETABLEjobs
(
job_idsmallint
IDENTITY(1,1)
PRIMARYKEYCLUSTERED,
job_descvarchar(50)NOTNULL
DEFAULT'
NewPosition’,
min_lvltinyintNOTNULL
CHECK(min_lvl>
=10),
max_lvltinyintNOTNULL
CHECK(max_lvl<
=250)
)
CREATETABLEpublishers
pub_idchar(4)NOTNULL
CONSTRAINTUPKCL_pubindPRIMARYKEYCLUSTERED
CHECK(pub_idIN('
1389'
0736'
0877'
1622'
1756'
ORpub_idLIKE'
99[0-9][0-9]'
),
pub_namevarchar(40)NULL,
cityvarchar(20)NULL,
statechar
(2)NULL,
countryvarchar(30)NULL
DEFAULT('
USA'
建库
CREATEDATABASESales
ON
(NAME=Sales_dat,
FILENAME='
\programfiles\microsoftsqlserver\mssql\data\saledat.mdf'
SIZE=10,
MAXSIZE=50,
FILEGROWTH=5)
LOGON
(NAME='
Sales_log'
\programfiles\microsoftsqlserver\mssql\data\salelog.ldf'
SIZE=5MB,
MAXSIZE=25MB,
FILEGROWTH=5MB)
NEXT
返回紧跟当前行之后的结果行,并且当前行递增为结果行。
如果FETCHNEXT为对游标的第一次提取操作,则返回结果集中的第一行。
NEXT为默认的游标提取选项。
PRIOR
返回紧临当前行前面的结果行,并且当前行递减为结果行。
如果FETCHPRIOR为对游标的第一次提取操作,则没有行返回并且游标置于第一行之前。
FIRST
返回游标中的第一行并将其作为当前行。
LAST
返回游标中的最后一行并将其作为当前行。
ABSOLUTE{n|@nvar}
如果n或@nvar为正数,返回从游标头开始的第n行并将返回的行变成新的当前行。
如果n或@nvar为负数,返回游标尾之前的第n行并将返回的行变成新的当前行。
如果n或@nvar为0,则没有行返回。
n必须为整型常量且@nvar必须为smallint、tinyint或int。
RELATIVE{n|@nvar}
如果n或@nvar为正数,返回当前行之后的第n行并将返回的行变成新的当前行。
如果n或@nvar为负数,返回当前行之前的第n行并将返回的行变成新的当前行。
如果n或@nvar为0,返回当前行。
如果对游标的第一次提取操作时将FETCHRELATIVE的n或@nvar指定为负数或0,则没有行返回。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 代码 整理