052136数据库原理与应用SQL002.docx
《052136数据库原理与应用SQL002.docx》由会员分享,可在线阅读,更多相关《052136数据库原理与应用SQL002.docx(36页珍藏版)》请在冰点文库上搜索。
052136数据库原理与应用SQL002
~~03|02|1|4|4
^^SQL语言由哪三种语言构成?
请解释这些语言的作用?
^^数据定义语言DDL:
用来定义和管理数据库中的对象。
数据操作语言DML:
用来操作数据库中的对象和数据,是T-SQL中最常用的部分。
数据控制语言DCL:
用来控制用户对数据库对象操作的权限。
~~03|02|1|4|2
^^数据定义语言包括哪些命令?
^^DDL主要的语句有:
CREATe、ALTER、DROP
~~03|02|1|4|2
^^数据操作语言使用哪些语句?
^^DML主要的语句有:
SELECTDELETEINSERTUPDATE
~~03|02|1|4|2
^^数据控制语言包括哪两个语句?
这两语句的作用是什么?
^^GRANT/*授予权限*/
REMOVE/*回收所授予的权限*/
~~03|03|2|4|3
^^如何定义局部变量和全局变量?
^^局部变量(以@开头;使用DECLARE语句声明,定义局部变量的名字、数据类型和长度)
全局变量(也称配置函数,是系统定义的变量,以@@开头;用户只能使用)
~~03|04|1|4|2
^^安装SQLSERVER时,系统自动创建了哪四个系统数据库?
^^Master、model、msdb、tempdb
~~03|04|1|4|2
^^SQLSERVER数据库中,有三种类型存储数据库信息,这三种文件类型是什么?
^^主文件、次要文件、事务日志
~~03|05|1|4|4
^^E-R图有哪三个要素?
这三个要素如何表示?
^^实体:
使用矩形表示
属性:
使用椭圆形表示
实体与实体之间的联系:
使用菱形框表示
~~03|05|1|4|2
^^数据的完整性包括哪些?
^^域完整性(用户定义的完整性)表完整性(实体完整性)参照完整性(引用完整性)
~~03|07|1|4|3
^^索引分为哪几类?
他们之间有什么区别?
^^两类
聚集索引和非聚集索引。
聚集索引会对表和视图进行物理排序,非聚集索引不会对表和视图进行物理排序
~~03|07|1|4|2
^^在SQLSERVER2000中,一共有5种约束,分别是什么?
^^UNIQUE约束、DEFAULT约束、主键约束、外键约束、Check约束
~~03|08|2|4|2
^^创建并使用默认值的步骤为哪两步?
^^创建一个默认值对象;将其捆绑到列或用户自定义的数据类型上。
~~03|08|3|4|4
^^规则和Check约束有什么区别?
^^在一列上只能使用一个规则,但可以使用多个Check约束。
规则可以用于多个列,还可以用于用户自定义的数据类型,而Check约束只能应用于它定义的列。
~~03|09|2|4|3
^^描述系统存储过程sp_helptext和sp_depends的功能?
^^sp_helptext显示视图的定义信息;sp_depend显示视图的参照对象和字段信息
~~03|10|1|4|2
^^存储过程有哪三种?
^^系统存储过程、扩展存储过程、用户自定义的存储
~~03|10|2|4|5
^^存储过程有哪些优点?
^^通过本地存储、代码预编译和缓存技术实现高性能的数据操作。
通过通用编程结构和过程重用实现编程框架。
通过隔离和加密的方法提高了数据库的安全性。
~~03|11|1|4|2
^^SQLSERVER主要提供了哪两种机制来强制业务规则和数据完整性?
^^约束和触发器
~~03|03|2|4|2
^^显示当前系统的日期和时间
^^selectGETDATE()
~~03|02|2|4|2
^^计算53
^^selectpower(5,3)
~~03|03|3|4|2
^^生成一个10以内的随机数
^^selectrand()*10
~~04|02|2|4
^^以下语句基于选课数据库XK
Student表(学生表)(StuNo、ClassNo、StuName、Pwd)
USEXk
GO
SELECTTOP6*
FROMStudent
GO
^^从学生表中检索所有的信息,只显示前6行数据
~~04|02|2|4
^^以下语句基于选课数据库XK。
Course表(课程表)(CouNo、CouName、Kind、Credit、Teacher、DepartNo、SchoolTime、LimitNum、willnum)
USEXk
GO
SELECT'教师'=TeacherFROMCourse
WHERECouName='Linux操作系统'
GO
^^检索上“Linux操作系统”课程的教师名
~~04|02|2|4
^^以下语句基于选课数据库XK。
Course表(课程表)(CouNo、CouName、Kind、Credit、Teacher、DepartNo、SchoolTime、LimitNum、willnum)
USEXk
GO
SELECTCouNameAS'课程名称'
FROMCourse
WHERECouNoIN('004','007','013')
GO
^^检索课程编码为‘001’‘004’‘013’的课程名称
~~04|02|2|4
^^以下语句基于选课数据库XK。
Course表(课程表)(CouNo、CouName、Kind、Credit、Teacher、DepartNo、SchoolTime、LimitNum、willnum)
USEXk
GO
SELECT*FROMCourse
WHERECouNameLIKE'D%'
GO
^^检索以“D”开头的课程名
~~04|02|2|4
^^以下语句基于选课数据库XK。
Course表(课程表)(CouNo、CouName、Kind、Credit、Teacher、DepartNo、SchoolTime、LimitNum、willnum)
USEXk
GO
SELECT'课程名'=CouName,'报名人数'=WillNumFROMCourse
WHEREWillNumBETWEEN15AND25
ORDERBY报名人数DESC
GO
^^检索报名人数15和25之间的课程信息,要求检索结果按报名人数降序排列
~~04|02|2|4
^^以下语句基于选课数据库XK。
Course表(课程表)(CouNo、CouName、Kind、Credit、Teacher、DepartNo、SchoolTime、LimitNum、willnum)
USEXk
GO
SELECTKindAS'课程分类',AVG(WillNum)AS'每类平均报名人数'
FROMCourse
GROUPBYKind
GO
^^按课程分类统计平均报名人数
~~04|02|2|4
^^以下语句基于选课数据库XK。
Department表(部门表)(DepartNo、DepartName)
INSERTDepartment(DepartNo,DepartName)
VALUES('15','哲学系')
GO
^^在系部表中插入记录('15','哲学系')
~~04|02|2|4
^^以下语句基于选课数据库XK。
Course表(课程表)(CouNo、CouName、Kind、Credit、Teacher、DepartNo、SchoolTime、LimitNum、willnum)
USEXk
GO
UPDATECourse
SETSchoolTime='周二晚'
WHERECouName='电子出版概论'
GO
^^将电子出版概论课程的上课时间改为周二晚
~~04|02|2|4
^^以下语句基于选课数据库XK。
StuCou表(学生选课表)(StuNo、CouNo、WillOrder、State)
USEXk
GO
DELETEStuCou
WHEREStuNo='00000005'ANDCouNo='017'
GO
^^把学号为00000005课程号为017的相关记录删除
~~04|04|2|4
^^
USEMASTER
GO
ALTERDATABASExk
MODIFYFILE(NAME='xk_data',
SIZE=5MB)
GO
ALTERDATABASExk
MODIFYFILE(NAME='xk_log',
SIZE=6MB)
GO
^^将XK数据库的日志文件扩充到6M,数据文件大小扩充到5MB
~~04|04|2|4
^^
ALTERDATABASEXk
ADDLOGFILE
(NAME=xklog2,
FILENAME='C:
\xklog2.ldf',
SIZE=5MB,
MAXSIZE=10MB,
FILEGROWTH=1MB)
GO
^^为XK数据库增加一个日志文件xklog2
~~04|04|2|4
^^
sp_dboption'Xk','readonly','true'
GO
^^将XK数据库设置为只读
~~04|02|2|4
^^
sp_renamedb'mydb','mydatabase'
GO
^^将数据库mydb改名为mydatabase
~~04|04|2|4
^^
DROPDATABASEmydatabase
GO
^^删除数据库mydatabase
~~04|06|2|4
^^
CREATETABLEClass
(
ClassNochar(8)NOTNULL,
DepartNochar
(2)NOTNULL,
ClassNamechar(20)NOTNULL
)
GO
^^创建class这张表,包含三个字段ClassNo、DepartNo、ClassName
~~04|06|2|4
^^
USEXk
Go
DROPTABLEClass
GO
^^删除表class
~~04|07|2|4
^^
USEXk
GO
CREATEUNIQUECLUSTERED
INDEXIX_StuNoCouNoONStuCou(StuNo,CouNo)
GO
^^在StuCou表上创建IX_StuNoCouNo的聚集、唯一索引,基于StuNo列和CouNo列创建
~~04|07|2|4
^^
USEXk
GO
DROPINDEXStuCou.IX_StuNoCouNo
GO.
^^删除StuCou表上名为IX_StuNoCouNo的索引
~~04|07|2|4
^^
USEXk
GO
EXECsp_helpindexStudent
GO
^^使用系统存储过程sp_helpindex查看指定表的索引信息
~~04|07|2|4
^^
USEXk
GO
EXECsp_rename'Student.IX_StuName','IX_StuNameNew'
GO
^^将XK数据库的Student表的索引重新命名为IX_StuNameNew
~~04|07|2|4
^^
USEXk
GO
ALTERTABLEStuCou
ADDCONSTRAINTIX_StuNoCouNoPRIMARYKEY(StuNo,CouNo)
GO
^^在StuCou表上创建基于StuNo列和CouNo列的主键约束
~~04|02|2|4
^^
USEXk
GO
ALTERTABLEStuCou
DROPCONSTRAINTIX_StuNoCouNo
GO
^^删除StuCou表上名为IX_StuNoCouNo的约束
~~04|07|2|4
^^
USEXk
GO
CREATEUNIQUEINDEXIX_PwdONStudent(Pwd)
GO
^^将XK数据库的Student表的Pwd列上创建惟一约束
~~04|07|2|4
^^
USEXk
GO
ALTERTABLEStuCou
ADDCONSTRAINTCK_WillOrderCHECK(WillOrder>=1ANDWillOrder<=5)
GO
^^在StuCou表上创建CHECK约束,该约束限制WillOrder在1到5之间
~~04|07|2|4
^^
USEXk
GO
ALTERTABLEStuCou
ADDCONSTRAINTDF_StuCou_StateDEFAULT('报名')FORState
GO
^^在StuCou表上创建DEFAULT约束,该约束使state列的值默认为‘报名’
~~04|08|2|4
^^USEXk
GO
EXECsp_addtypeTel,'VARCHAR(30)','NOTNULL'
GO
^^在XK数据库上创建一个名为TEL的自定义数据类型
~~04|08|2|4
^^USEXk
GO
CREATEDEFAULTUnsureDefaultAS'待定'
GO
sp_bindefaultUnsureDefault,'Course.Teacher'
GO
^^创建默认值,绑定默认值到Course表的Teacher列
~~04|08|2|4
^^USEXk
GO
CREATERULECreditRule
AS@x>=1AND@x<=5
GO
EXECsp_bindruleCreditRule,'Course.Credit'
GO
^^创建规则,绑定规则到Course表的Credit列
~~04|08|2|4
^^CREATEFUNCTIONCalcRemainNum
(@Xdecimal(6,0),@Ydecimal(6,0))
RETURNSdecimal(6,0)
AS
BEGIN
RETURN(@X-@Y)
END
^^创建一个名为CalcRemainNum的自定义函数
~~04|09|2|4
^^USEXk
GO
CREATEVIEWv_Student
AS
SELECT*FROMStudent
WHEREClassNo='20000001'
^^在XK数据库创建一个v_Student的视图,该视图查看学生表中学号为20000001的学生信息
~~04|09|2|4
^^USEXk
GO
EXECsp_helptext'v_CouByDep'
^^通过sp_helptext来查看视图v_CouByDep的定义信息
~~04|10|2|4
^^USEXk
GO
CREATEPROCEDUREp_Student
AS
SELECT*FROMStudentWHEREClassNo='20000001'
^^在XK数据库创建名为p_Student的存储过程,该过程返回学生表中学号为20000001的学生记录
~~04|10|2|4
^^USEXk
GO
DROPprocedurep_Student
^^删除存储过程p_Student
~~04|11|2|4
^^USEXk
GO
CREATETRIGGERTest1
ONStudent
FORUPDATE
AS
PRINT'记录已修改!
'
GO
^^创建触发器,每当在Student表中修改数据时,将显示'记录已修改!
'的信息
~~04|02|2|4
^^以下语句基于选课数据库XK。
Course表(课程表)(CouNo、CouName、Kind、Credit、Teacher、DepartNo、SchoolTime、LimitNum、willnum)
USEXk
GO
SELECTSUM(LimitNum)AS'限选人数总人数'
FROMCourse
GO
^^统计出COURSE表中限选人数总人数
~~04|03|2|4
^^SELECTPOWER(3,4)
SELECTSQRT(16)
GO
^^求34的值和16的平方根
~~04|02|2|4
^^以下语句基于选课数据库XK,其中
Course表(课程表)(CouNo、CouName、Kind、Credit、Teacher、DepartNo、SchoolTime、LimitNum、willnum)
USEXk
GO
SELECTMIN(WillNum)AS'最少报名人数',MAX(WillNum)AS'最多报名人数',AVG(WillNum)AS'平均报名人数'
FROMCourse
GO
^^统计COURSE表中各门课程中最少报名人数,最多报名人数和平均报名人数
~~04|03|2|4
^^SELECTGETDATE()
GO
^^给出服务器当前的系统日期与时间
~~04|02|2|4
^^SELECTHOST_NAME()
GO
^^给出主机名称
~~04|03|2|4
^^SELECTLEN('SQLServer数据库管理系统')
GO
^^求出’SQLServer数据库管理系统’这个字符串的长度
~~05|03|2|6
^^求1到100的和
^^declare@iint,@sumint
set@i=1
set@sum=0
while@i<=100
begin
set@sum=@sum+@i
set@i=@i+1
end
print@sum
~~05|03|3|6
^^编程实现随机显示星期几
^^declare@xint,@ychar(10)
Select@x=rand()*10
Select@y=
case@x
when1then'星期一'
when2then'星期二'
when3then'星期三'
when4then'星期四'
when5then'星期五'
when6then'星期六'
else'星期日'
end
Select@y
~~05|02|3|6
^^编写计算两个整数之和的程序(要求赋初值为50和60)
^^declare@xint,@yint,@sumint
Select@x=50
Select@y=60
set@sum=@x+@y
Select@y
~~05|02|3|6
^^编写计算两个整数之和的程序(要求赋初值为50和60)
^^declare@xint,@yint,@sumint
Select@x=50
Select@y=60
set@sum=@x+@y
Select@y
~~05|04|2|6
^^要求创建图书数据库book,数据库文件和事务日志文件放在指定目录d:
\下,数据库文件和事务日志文件大小扩充方式和容量:
按兆字节增长,增长幅度为1MB,文件大小限制为20MB。
^^CREATEDATABASEBOOK
ON
(NAME=BOOK_data,
FILENAME='D:
\BOOK_data.mdf',
MAXSIZE=20MB,
FILEGROWTH=1MB)
LOGON
(NAME='BOOK_log',
FILENAME='D:
\BOOK_data.ldf',
MAXSIZE=20MB,
FILEGROWTH=1MB
)
~~05|04|2|6
^^修改数据库student,将文件student_data增长设为1MB
^^ALTERDATABASEstudent
MODIFYFILE(NAME='student_data',
filegrowth=1mb)
GO
~~05|04|2|6
^^给数据库Product,增加事务日志文件product_Log4.log,存于c:
\,初始值为1MB,最大值为2MB,10%的增长.
^^ALTERDATABASEProduct
ADDFILE
(NAME=product_Data4,
FILENAME='c:
\product_Data4.ndf',
Maxsize=3000mb,
FILEGROWTH=1mb
),
~~05|04|2|6
^^将数据库product缩小一半
^^USEproduct
GO
DBCCSHRINKDATABASE(product,50)
GO
~~05|04|2|6
^^删除数据库product的事务日志文件“product_Log2”
^^ALTERDATABASEproduct
removefileproduct_Log2
~~05|04|2|6
^^给数据库student改名为student1
^^sp_renamedbstudent,student1
~~05|04|2|6
^^删除Student1数据库
^^DropdatabaseStudent1
~~05|04|2|6
^^将数据库product设置为可读.
^^sp_dboption'product','readonly','true'
GO
~~05|06|2|6
^^创建学生个人信息数据表Studentinfo,表的数据结构见下表。
Studentinfo数据结构表
字段名称 字段说明 数据类型 长度 属性
student_id学号char8不允许空
student_name 姓名 char10不允许空
student_sex 性别char4 不允许空
year_old 年龄tinyint 允许空
address 地址char80 允许空
^^createtableStudentinfo
(student_idchar(8)notnull,
student_namechar(10)notnull,
student_sexchar(4)notnull,
year_oldtinyintnull,
addresschar(80)null)
~~05|06|2|6
^^修改学生个人信息数据表Studentinfo,向该表中添加一列email,数据类型为varchar,长度100,允许空。
^^altertableStudentinfo
ADDemailvarchar(100)null
~~05|06|2|6
^^修改学生个人信息数据表Studentinfo,删除year_old字段
^^altertableStudentinfo
dropCOLUMNyear_old
~~05|02|2|6
^^数据库aaa中学生表结构如下:
学生表(学号,姓名,性别,年龄,所在院系,班级名,入学年份)
请列出学生表的清单:
^^Useaaa
Go
select*
from学生表
go
~~05|02|2|6
^^