第一篇:数据库原理及应用SQL_习题集(含答案)教案
《数据库原理及应用SQL》课程习
题集
一、单选题
1.ER模型属于()
A.概念模型
C.网状模型
A.概念模式
C.逻辑模式
B.层次模型 D.关系模型 B.外模式 D.内模式
B.INSERT和DELETE
D.COMMIT和ROLLBACK B.逻辑数据独立性 D.逻辑结构独立性 B.联系冲突 D.实体冲突 2.数据库系统的三级模式结构中,定义索引的组织方式属于()
3.SQL语言中,实现数据存取控制功能的语句是()
A.CREATE和DROP C.GRANT和REVOKE A.物理数据独立性 C.物理结构独立性 A.结构冲突
C.类型冲突
4.物理结构的改变不影响整体逻辑结构的性质,称为数据库的()
5.全局ER模型的设计,需要消除属性冲突、命名冲突和()
6.一个供应商可供应多种零件,而一种零件可由多个供应商供应,则实体供应商与零件之间的联系是()A.一对一
C.多对一
A.AGE>18 AND G<24 C.AGE>18 AND G<=24 A.概念设计
C.逻辑设计
B.一对多 D.多对多
7.表达式“AGE BETWEEN 18 AND 24”等价于()
B.AGE>=18 AND G<24 D.AGE>=18 AND AGE<=24 B.物理设计 D.系统实施 B.WRITE(Q)D.LOCK X(Q)8.在数据库设计中,独立于计算机的硬件和DBMS软件的设计阶段是()
9.按照PX协议规定,一个事务要更新数据对象Q,必须先执行的操作是()
A.READ(Q)
C.LOCK S(Q)
10.下列聚集函数中不忽略空值(null)的是()
A.SUM(列名)C.COUNT(*)A.概念模式 C.存储模式 A.相容性 C.共享性
B.MAX(列名)D.AVG(列名)B.内模式 D.外模式 B.独立性 D.一致性
B.主键不允许有空值 D.外键不允许有空值 B.ORDER BY D.WHERE B.完整性控制 D.安全性控制 B.共享锁 D.排它锁 11.数据库系统中,对用户使用的数据视图的描述称为()
12.数据库的三级模式之间存在着两级映象,使数据库系统具有较高的数据()
13.实体完整性规则是指关系中()
A.不允许有空行 C.不允许有空列 A.SELECT C.FROM A.并发控制
C.一致性控制 A.死锁 C.活锁
14.实现关系代数投影运算的SQL子句是()
15.SQL语言中,用GRANT/REVOKE语句实现数据库的()
16.在事务依赖图中,若各个事务之间的依赖关系构成循环,则就会出现()
17.以下关于事务调度和封锁的描述中,正确的是()
A.遵守两段封锁协议的并发事务一定是可串行化的 B.可串行化的并发事务一定遵守两段封锁协议
C.遵守两段封锁协议的并发事务不一定是可串行化的 D.遵守两段封锁协议的并发事务一定不会产生死锁
18.数据库与文件系统的根本区别在于()
A 提高了系统效率
C 数据的结构化
B 方便了用户使用 D 节省了存储空间
19.公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员,从职员到部门的联系类型是()。
A.多对多
C.多对一
A.原子性
C.隔离性
B.一对一 D.一对多 B.一致性 D.持续性 20.“一个事务中的诸操作要么都做,要么都不做”,这是事务的()属性。
21.关系模型中,一个码是()
A可以由多个任意属性组成 B至多由一个属性组成
C由一个或多个属性组成,其值能够惟一标识关系中一个元组 D以上都不是
22.数据库(DB),数据库系统(DBS)和数据库管理系统(DBMS)之间的关系是()
A.DBS包括DB和DBMS C.DB包括DBS和DBMS A.名称
C.对象
B.DBMS包括DB和DBS
D.DBS就是DB,也就是DBMS B.属性 D.概念 B.外键子句
D.NOT NULL
B.关系运算理论
D.数理逻辑理论 23.区分不同实体的依据是()
24.SQL基本表的创建中是通过()实现参照完整性规则的。
A.主键子句
C.检查子句
25.设计性能较优的关系模式称为规范化,规范化的主要理论依据是()。
A.关系规范化理论 C.代数运算理论
26.在E-R模型转换成关系模型的过程中,下列叙述不正确的是()。
A.每个实体类型转换成一个关系模式
B.每个M∶N联系类型转换一个关系模式 C.每个联系类型转换成一个关系模式
D.在处理1∶1和1∶N联系类型时,不生成新的关系模式。
27.假如采用关系数据库系统来实现应用,在数据库设计的()阶段,需要将E-R模型转换为关系数据模型。A.概念设计
C.逻辑设计
A.索引
C.封锁
A 步骤
C 流程
B.物理设计
D.运行阶段
B.授权 D.日志 B 过程 D 调度
B 只可加 S 锁
D 不能加任何锁 B 内模式
D 模式
B可靠性 D安全性 28.DBMS普遍采用()方法来保证调度的正确性。
29.多个事务执行的次序称为()
30.如果事务 T 已在数据 R 上加了 X 锁,则其他事务在数据 R 上()
A 只可加 X 锁
C 可加 S 锁或 X 锁
A 存储模式
C 外模式
A 完整性 C 隔离性
31.模式的逻辑子集通常称为()
32.SQL语言的GRANT和REVOKE语句主要是用来维护数据库的()。
33.在数据库设计中,将E-R图转换成关系数据模型的过程属于()
A.需求分析阶段
C.逻辑设计阶段
B.概念设计阶段 D.物理设计阶段
B 只可加 S 锁
D 不能加任何锁
B 并发性
D 可恢复性 34.如果事务 T 已在数据 R 上加了 S 锁,则其他事务在数据 R 上()
A 只可加 X 锁
C 可加 S 锁或 X 锁
A完整性 C 安全性 35.在数据库系统中,视图可以提供数据的()
36.事务的持续性是指()
A.事务中包括的所有操作要么都做,要么都不做 B 事务一旦提交,对数据库的改变是永久的
C.一个事务内部的操作对并发的其他事务是隔离的
D.事务必须使数据库从一个一致性状态变到另一个一致性状态
37.一辆汽车由多个零部件组成,且相同的零部件可适用于不同型号的汽车,则汽车实体集与零部件实体集之间的联系是()
A.1:1
C.M:1
B.1:M
D.M:N B.硬盘数据丢失 D.磁带数据丢失 B数据库管理系统
D数据库管理员
B.从层次模型导出关系模型 D.以上都不是 B.模式 D.内模式 B.层次模型 D.E—R模型
B.INSERT和DELETE
D.COMMIT和ROLLBACK B.可以全同 D.是不可分割的 38.系统故障会造成()
A.内存数据丢失
C.软盘数据丢失
A数据
C 数据库用户
39.数据库系统核心是()
40.构造关系数据模型时,通常采用的方法是()。
A.从网状模型导出关系模型 C.从E—R图导出关系模型 A.外模式
C.用户模式 A.关系模型
C.网状模型
41.数据库系统的三级模式中,表达物理数据库的是()。
42.具有坚实数学理论基础的数据模型是()。
43.SQL语言中,实现数据更新功能的语句是()
A.CREATE和DROP C.GRANT和REVOKE A.不能全同 C.必须全同 44.在关系模型中,关系的每一个属性值()。
45.多个用户同时对同一数据进行操作,描述的是()。
A.数据库的完整性 C.数据库的恢复
B.数据库的并发控制 D.数据的完整性
46.一个供应商可供应多种原材料,而一种原材料可由多个供应商供应,则实体供应商与原材料之间的联系是()A.一对一
C.多对一
A.故障维护
C.定期维护
B.一对多 D.多对多
B.设计关系模型
D.日常维护
B.一个是SELECT,一个是DELETE D.两个都是SELECT B.基表
D.存储文件和视图 B.程序的执行结果 D.对数据的查询操作 47.以下四项中,不包括在数据库维护工作中的是()。
48.如果有两个事务,同时对数据库中同一数据进行操作,不会引起冲突的操作是()。
A.一个是DELETE,一个是SELECT C.两个都是UPDATE
A.视图
C.视图和基表
49.SQL语言的结构中,()有对应的存储文件。
50.事务日志用于保存()。
A.程序运行过程
C.对数据的更新操作
二、综合设计题
51.某公司欲建立一个定单管理系统,要求保存销售职工信息,产品信息,供应商信息,定货人信息。已知每个销售职工可销售多种产品,每个产品可被个多个销售职工销售。每个供应商可供应多种产品,而每种产品可由多个供应商供应。每个定货人可订购多种产品,而每种产品可由多个定货人订购。销售职工有:职工号,姓名,电话;
供应商有:供应商号,姓名,电话,地址; 产品有:产品号,产品名称,型号规格。定货人有:定货人号,姓名,电话,地址; 每次定货有定货日期和数量。要求:
1根据上述语义设计E-R模型,要求标注联系类型。2将其转化为关系模式。注明每个关系的主键和外键。每个车间生产多种产品,而每种产品可由多个车间生产。工段有:工段号,工段名;
车间有:车间号,车间名,车间领导; 产品有:产品号,产品名称,型号规格。
52.已知某个工厂中有多个工段,每个工段有多个车间,每个车间只在一个工段中,每个车间完成的产品都有完工日期。
1根据上述语义设计E-R模型,要求标注联系类型,可省略属性。E-R模型转换成关系数据模型,并指出每一个关系的主键和外键(如果存在)。
53.假设某公司在多个地区设有销售部经销本公司的各种产品,每个销售部聘用多名
职工,且每名职工只属于一个销售部。销售部有:部门名称、地区和电话等属性; 产品有:产品编码、品名和单价等属性; 职工有:职工号、姓名和性别等属性; 每个销售部销售产品有数量属性。
1根据上述语义画出ER图,要求在图中画出属性并注明联系的类型。2 试将ER模型转换成关系模型,并指出每个关系模式的主键和外键。
54.假设某公司的业务规则如下:
1公司下设几个部门,如技术部、财务部、市场部等。
2每个部门承担多个工程项目,每个工程项目属于一个部门。3每个部门有多名职工,每一名职工只能属于一个部门。4一个部门可能参与多个工程项目。
5工程项目有工程号、工程名两个属性;部门有部门号、部门名称两个属性;职工有职工号、姓名、性别属性; 问题:
1.根据上述规则设计E-R模型。
2.将E-R模型转换成关系数据模型,并指出每个关系的主键和外键。
55.某企业集团有若干工厂,每个工厂生产多种产品,且每一种产品可以在多个工厂生产,每个工厂按照固定的计划数量生产产品;每个工厂聘用多名职工,且每名职工只能在一个工厂工作,工厂聘用职工有聘期和工资。工厂的属性有工厂编号、厂名、地址,产品的属性有产品编号、产品名、规格,职工的属性有职工号、姓名。
1根据上述语义画出ER图,在ER图中需注明实体的属性、联系的类型及实体的标识符。2 将E-R模型转换成关系模型,并指出每个关系模式的主键和外键。
三、编程题1 56.在供应商、零件数据库中有以下3个关系模式:
供应商:S(SNO,SNAME,CITY,STATUS)
零件:P(PNO,PNAME,WEIGHT,COLOR,CITY)供应货:SP(SNO,PNO,QTY)
供应货关系SP表示某供应商SNO,供应了PNO零件,数量为QTY。用SQL语言完成以下操作: 求供应红色零件的供应商名字; 求北京供应商的号码、名字和状况(STATUS);
求零件P2的总供应量; 把零件P2的重量增加5公斤,颜色该为黄色。5 统计每个供应商供应的项目总数。建立一个存储过程,输入零件编号显示零件的PNAME,WEIGHT,COLOR,CITY
57.假设新华书店数据库中有2个关系模式:
出版社(出版社编号,出版社名称,出版社地址)
图书(图书编号,书名,出版社编号,图书分类,定价)试用SQL语句完成下题。
1.检索出版社编号为“CS”的图书编号、书名和定价。2.查询图书分类为“教材”的书名、定价和出版社名称。
3.按照出版社编号统计每个出版社出版的图书有多少种和平均定价。
4.检索由高等教育出版社出版、图书分类为“教材”且定价超过30元的图书编号和书名。”
5.删除图书编号“2000301”的图书信息
6.建立一个存储过程,统计各分类的图书的本数。
58.设有三个关系模式如下:
学生S(S#,SNAME,AGE,SEX)各属性的含义为:学号,姓名,年龄,性别 学习SC(S#,C#,GRADE)各属性的含义为:学号,课程号,成绩
课程C(C#,CNAME,TEACHER)各属性的含义为:课程号,课程名,教师 于以上关系模式试用SQL语句回答下列题: 1统计男生和女生的人数。
2.检索教师‘张明’所授课程的课程号和课程名。4.选修数据库原理的学生名单。5.删除200030号学生的选课记录。
6.建立一个存储过程,通过输入学号,显示学生选课门数.59.职工(职工号,姓名,性别,职务,家庭地址,部门编号)
部门(部门编号,部门名称,地址,电话)
保健(保健卡编号,职工号,检查身体日期,健康状况)用SQL语句完成下列问题:
1.查找所有女科长的姓名和家庭地址; 2.查找“办公室”的科长姓名和家庭地址;
3.统计“财务科”中健康状况为“良好”的职工人数。4.删除职工关系表中职工号为“3016”的记录;
5.将职工号为“3061”的职工的健康状况改为“一般”; 6.建立健康状况为“差”的职工的视图。
60.有三个关系
部门(部门号,名称,负责人编号,联系电话.职工(职工号,姓名,出生日期,性别,工资,部门号,职称)医疗(职工号,就医日期,医疗费用,医院名称,诊断结果)用SQL语言实现下列问题:
1.检索职工“卢仪”作为部门负责人所在部门的名称和联系电话; 2.检索在“协和医院”中没有就医记录的职工号、姓名和部门名称; 3.将职工号为 ‘3301‘的职工每次的医疗费用减半; 4.统计每个职工的医疗费用总和。
5.定义一个没有任何医疗记录的职工的职工号、姓名视图AAA。6 建立一个存储过程,以职工号为形参,显示该职工的医疗清单。
四、编程题2 61.用PB编程程序,某登录界面如下:
数据库中有表LOGIN(TID,PASSWORD,ROLE),请写出该窗口上控件cb_1的clicked事件的程序。当通过验证后进入窗口W-mian,否则提示:“你是非法用户,不能进入系统”
62.用PB编写程序,有窗口W_data能完成对数据的管理,如图请对分别对cb_1,cb_2,cb_3,cb_4编程。
63.如图lv_1为列表视图,报表风格,当w_list打开时lv_list中显示数据库中学生表的所有学生的信息。请为w_1的open事件编程。使用表:学生(姓名,性别,年龄,系别)
64.用PB编程,如图1点击菜单中的注册新用户,打开w_new.1 写出菜单项”退出”的clicked事件中的代码.2 在sle_1中输入新用户名,如果此用户名已存在则出现消息框,提示”此用户名已存在,请另输入用户名”.3 写出cb_1的clicked事件中的代码.使用表user(username,password,role)
65.用PB编写程序,界面如图: 对w_data的open事件编程,使w_data一打开dw_1中就显示数据.2 对w_data的closequery事件编程,使dw_1中的数据发生改变而又未保存就退 出窗口时给用户一个消息框提示.五、简答题(略)……
答案
一、单选题 1.A 2.D 3.C 4.A 5.A 6.D 7.D 8.A 9.D 10.C 11.D 12.B 13.B 14.A 15.D 16.A 17.A 18.C 19.C 20.A 21.C 22.A 23.B 24.B 25.A 26.C 27.C 28.C 29.D 30.D 31.D
32.D 33.C 34.B 35.C 36.D 37.D 38.A 39.B 40.C 41.D 42.A 43.B 44.D 45.B 46.D 47.B 48.D 49.B 50.C
二、综合设计题51.
供应商(供应商号,姓名,电话)主键:供应商号外键:
产品(产品号,名称,规格,单价)主键:产品号外键:
供应(产品号,供应商号,数量)主键:(产品号,供应商号)外键:产品号,供应商编号 销售职工(职工号,姓名,工资)主键:职工号
定货人(定货人号,姓名,地址,电话)主键:定货人号
订购(定货人号,职工号,产品号,时间,数量)主键:(定货人号,职工号,产品号)外键:定货人号,职工号,产品号
52.工段(工段号,工段名)
主键:工段号
车间(车间号,车间名,车间领导,工段号)主键:车间号
外键:工段号
产品(产品号,产品名称,型号规格)
主键:产品号
生产(产品号,车间号,完工日期)
主键:(产品号,车间号)外键:产品号,车间号。
53.销售部(部门名称、地区、电话)主键:部门名称
产品(产品编码、品名、单价)
主键:产品编码
职工(职工号、姓名、性别、部门名称)主键:职工号 外键:部门名称
销售(部门名称、产品编码、数量)主键:(部门名称、产品编码)外键:部门名称、产品编码
54.工程项目(工程号、工程名,部门号)主键:工程号
外键:部门号 部门(部门号、部门名称)主键:部门号
职工(职工号、姓名、性别、部门号)主键:职工号,外键:部门号
55.工厂(工厂编号、厂名、地址)主键:工厂编号
产品(产品编号、产品名、规格)主键:产品编号
职工(职工号、姓名、工资、聘期、工厂编号)主键:职工号 外键:工厂编号
生产(产品编号、工厂编号、计划数量)主键:(产品编号、工厂编号)外键:产品编号、工厂编号
三、编程题1 56.1 SELECT SNAME FROM S WHERE SNO IN(SELECTSNO FROM P,SP WHERE P.COLOR=‘红色’AND P.PNO=SP.PNO);
2. SELECT SNO,SNAME,STATUS FROM S WHERE S.CITY=‘北京’ 3. Select sum(QTY)from SP WHERE PNO=‘P2’. UPDATE P SET WEIGHT=WEIGHT十5,COLOR=‘黄色’ WHERE PNO=‘P2’ 5 Select SNO,count(distinct PNO)From SP Group by(SNO)6 CTREATE PROC P_LIST @Id CHAR(4)As Select PNAME,WEIGHT,COLOR,CITY From P WHERE PNO=@Id
57.1 SELECT 图书编号, 书名 , 定价
from 出版社, 图书
where出版社.出版社编号=图书.出版社编号 and出版社编号=’CS’ 2.SELECT 书名,定价 ,出版社名称 from 图书
where 图书分类= ‘教材’
3.Selcet 出版社编号,count(distinct 图书分类),avg(定价)from
图书 group by(出版社编号)4 SELECT 图书编号, 书名 from 出版社, 图书 where出版社.出版社编号=图书.出版社编号
and 高等教育出版社
and图书分类=’教材
and 定价>30 5 delete from 图书 where 图书编号 =’2000301’ 6 create proc
book_count as Selcet 图书分类,count(*)from
图书
group by(图书分类)
58.1 SELECT SEX,COUNT(*)from
S group by(sex)2.SELECT C#,CNAME FROM C where TEACHER=’张明‘
3. SELECT count(*)FROM S,SC,C Where C.C#=SC.C# AND S.S#= SC.S# AND C.TEACHER=’张明‘. 4 SELECT S.SNAME FROM C,SC,C Where C.C#=SC.C# AND S.S#= SC.S# AND C.CNAME =’数据库原理‘ 5 DELETE FROM S WHERE S# =‘200030’ 6 CREATE PROC c_count
@ id int for select
count(distinct.课程编号)as 选课门数 from
选课
where 学号=@id;
59.1 SELECT 姓名,家庭地址
FROM职工
WHERE性别=’女’ and职务=’科长’ 2.SELECT 姓名,家庭地址 FROM职工, 部门
WHERE
部门.部门名称=’办公室’and职工.职务=’科长’’ And 部门.部门编号=职工.部门编号 3. SELECT count(*)FROM职工, 部门, 保健
WHERE
部门.部门名称=’ 财务科’and保健.健康状况=’良好’ And 部门.部门编号=职工.部门编号And 保健.职工号=职工.职工号 4 delete form
职工 where 职工编号=’3061’ update 保健 set 健康状况=‘一般’where职工编号=’3061’ 6 create view bad_health
as SELECT * FROM职工, 保健
WHERE
保健.健康状况=’差’ And 保健.职工号=职工.职工号
60.1 SELECT 部门.名称, 部门.联系电话
FROM 职工,部门
WHERE职工.姓名=’卢仪’ AND 部门.负责人编号 =职工.职工号SELECT 职工号,姓名,部门名称 FROM 职工 WHERE职工号
not in {
Select 职工号
From医疗 Where医院名称=’ 协和医院’} 3 UPDATE医疗SET 医疗费用=医疗费用/2 where职工号=’3301’select 职工号 ,sum(医疗费用)from医疗 group by(职工号)5 create view AAA as
SELECT 职工号,姓名
FROM 职工
WHERE职工号
not in { Select 职工号
From医疗 } 6 create
proc health_list @id char(4)
as
select 职工号,就医日期,医疗费用,医院名称,诊断结果 from 医疗
where职工号=@id
四、编程题2 61.int id
select number into :id from teacher Where number=:sle_1.text and password=:sle_2.text;If sqlca.sqlcode=100 then Messagebox(“警告”,“输入的用户或口令错误”)End if
62.1添加的clicked事件
int i i=dw_1.insertrow(0)dw_1.scrolltorow(i)dw_1.setfocus()
删除的clicked事件 dw_1.deleterow(0)3 保存的clicked事件 int j j=dw_1.update()if j=-1 then
messagebox(“information”,“数据无法保存”)else messagebox(“information”,“数据已保存”)end if 4关闭的clicked事件 close(parent)63.int i,j string outname,outsex,soutage int outage lv_1.AddColumn(“姓名”, Left!, 600)
lv_1.AddColumn(“性别”, Left!, 400)
lv_1.AddColumn(“年龄”, Left!, 400)
declare namecur cursor for select name,sex,age from student;open namecur;if sqlca.sqlcode=-1 then messagebox(“sql error”,sqlca.sqlerrtext)else fetch namecur into :outname,:outsex,:outage;i=1 do while sqlca.sqlcode=0
lv_1.addItem(outid,1)lv_1.Setitem(i,1,outname)lv_1.Setitem(i,2,outsex)soutage=string(outage)lv_1.SetItem(i,3,soutage)
fetch namecur into :outname,:outsex,:outage;i++ loop
64.1 close(parent)
sle_1 的modifed事件 string abc;select role into :abc from user where username=:sle_1.text;if sqlca.sqlcode=100 then messagebox(“提示”,” 此用户名已存在,请另输入用户名”)end if 3 insert into user values(:sle_1.text,:sle_2.text.:ddlb_1.text)
65.1 dw_1.settransobject(sqlca)2
integer m
if dw_1.modifiedcount()+dw_1.deletedcount()>0 then m=messagebox(“信息”,“数据已改变,是否保存”,question!,yesnocancel!,1)if m=1 then dw_1.update()=-1
return 0 elseif m=2 then return 0 elseif m=3 then return 1 end if end if
五、简答题(略)……
第二篇:数据库原理与应用实验教案
实验报告格式 《数据库原理》实验报告
(实验名称:)
专业
班级级()班 学号 学生姓名 指导老师
攀枝花计算机学院 年月日
一、实验目的
本次实验所涉及并要求掌握的知识点。根据老师实验前的讲授自行撰写。(小四号字,宋体)
二、实验内容:
本次实验的内容及相关题目描述(小四号字,宋体)
三、SQL语句及运行结果 创建数据库:
在数据库节点右键新建数据库,增加和修改数据文件名,设置增长方式以及数据库逻辑名称
文件组添加Slave文件组 修改数据库:
利用SQL语句修改,删除,添加数据库文件
删除数据库:
按照实验内容编写的SQL语句或程序代码与结果显示(小四号字,宋体)
四、实验总结
1 .实验中遇到的问题及解决过程 2 .实验中产生的错误及原因分析 3 .实验体会和收获。
实验一 创建数据库(操作型)1.1 实验目的
(1)理解并掌握数据库的基本概念;
(2)理解并掌握数据文件、日志文件、文件组的基本概念;
(3)熟练掌握和使用SQL Server Management Studio管理器创建、删除、更改(包括文件组、文件大小、文件增长方式等参数)数据库;(4)熟练使用DDL语句来创建、删除、更改(包括文件组、文件大小、文件增长方式等参数)数据库。
1.2 实验内容
件组,分别是主文件组和“Slave”文件组。数据库包含两个数据文件,分别是“mymaster.mdf”和“myslave.ndf”,其中数据文件“mymaster.mdf”属于主文件组,存放在d:data目录下,文件初始大小50M,文件属性为自动增长,每次增长10%。数据文件“myslave.ndf”存放在e:data目录下,属于Slave文件组,文件大小固定为50M。该数据库有一个日志文件,日志文件名称“mylog.ldf”,文件位于c:log目录中,日志文件初始大小为50M,文件属性为自动增长,每次增长10M,最大文件大小为100M(实验时一定要保证c:Log、d:data和e:data目录存在,否则会发生错误,如果计算机d:盘或e:盘不存在,实验时须将路径调整到已存在的磁盘下);(1)创建数据库:待创建的数据库逻辑名称为“MyDB”。该数据库有两个文(2)修改数据库:将刚才创建的数据库“MyDB”的名称修改为“TESTDB”,并删除数据文件“myslave.ndf”,同时增加一个数据文件,该数据文件逻辑名称为“test“,文件名称为“test.ndf”,数据文件位于e:data(在e盘存在的情况下,如果e盘不存在,可指定道其他磁盘位置下),其他参数默认;
(3)删除刚刚创建的“TESTDB”数据库。
1.3 实验步骤
对数据库的管理(包括创建、修改、删除)可以有两种方式完成,使用SQL Server Management Studio管理器可以完成数据库的日常管理,还可以通过查询窗口输入DDL语句完成数据库的管理。
1.3.1 数据库创建
(1)使用SQL Server Management Studio创建数据库(2)使用SQL语句创建数据库
1.3.2 修改数据库
1.3.3 删除数据库“TESTDB”
(1)使用Management Studio删除“TESTDB”(2)使用SQL语句删除数据库
1.4 思考与练习
答:(1)什么是数据库?数据库的组成有哪些?
(2)什么是文件组?如何创建文件组?主文件组可以删除吗?
答:
(3)数据文件,日志文件各有什么作用?
答:
(4)文件增长方式有哪些?如何设置?
答:1)在新建数据库的界面中设置自动增长方式
2)利用SQL语句size设置大小,filegrowth设置增长类型,maxsize设置最大文件.(5)SQL Server Management Studio与数据库的关系是什么
答:
第三篇:数据库原理-教案
第一章 绪论
内容概述
阐述数据库的基本概念,介绍数据管理技术的进展情况、数据库技术产生和发展的背景,数据模型的基本概念、组成要素和主要的数据模型,概念模型的基本概念及ER方法,数据库系统的3级模式结构以及数据库系统的组成。
本章目标
本章讲解的数据库基本概念和基本知识是学习后续各个章节的基础。学习本章的目的在于了解基本知识,掌握基本概念,为以后的学习打好扎实的基础。
重点和难点
重点:牢固掌握概念模型的基本概念及其主要建模方法ER方法;掌握关系数据模型的相关概念、数据库系统三级模式和两层映像的体系结构、数据库系统的逻辑独立性和物理独立性等;对于如何通过ER方法描述现实世界的概念模型要做到能够举一反三的程度。
难点:本章的难点是需要掌握数据库领域大量的基本概念。有些概念一开始接触会感到比较抽象,但不要紧,随着学习的逐渐推进,在后续章节中,这些抽象的概念会逐渐变得清晰具体起来。此外,数据模型及数据库系统的体系结构也是本章的难点。
第二章 关系数据库
内容概述
系统地讲解关系数据库的重要概念,并着重对关系模型进行讲解。关系模型包括关系数据结构、关系操作集合、以及关系完整性约束三个组成部分。讲解关系代数、元组关系演算和域关系演算。从具体到抽象,先讲解实际的语言ALPHA(元组关系演算语言)和QBE(域关系演算语言),然后讲解抽象的元组关系演算。本章目标
掌握关系模型的三个组成部分及各部分所包括的主要内容;牢固掌握关系数据结构及其定义;关系的三类完整性约束的概念。为学习后面关系数据库系统打好基础。
重点和难点
重点:掌握关系数据结构及其定义;关系的三类完整性约束的概念。需要举一反三的是:关系代数(包括抽象的语言及具体的语言);关系代数中的各种运算(包括并、交、差、选择、投影、连接、除、及广义笛卡尔积等)、元组关系演算语言ALPHA及域关系演算语言QBE等,能够使用这些语言完成各种数据操纵。
难点:由于关系代数较为抽象,因此在学习的过程中一定要结合具体的实例进行学习。同时,要注意把握由具体语言到抽象语言的原则,即通过对具体语言如ALPHA和QBE的学习过渡到对抽象的关系演算的把握。
实验内容
实验1 学习安装某一个数据库管理系统,通过对某个商用数据库管理系统的安装使用,初步了解DBMS的工作环境和系统构架,熟悉对DBMS的安装,为后面的实验做准备。
第三章 关系数据库标准语言SQL
内容概述
详细介绍关系数据库语言SQL。SQL是关系数据库的标准语言。它内容十分丰富,功能非常强大。因为关系数据库系统的主要功能是通过SQL来实现的,因此讲解SQL的同时要进一步讲述关系数据库的基本概念。
本章目标 牢固掌握SQL,达到举一反三的掌握SQL的功能。同时通过实践,体会面向过程的语言和SQL的区别和优点。体会关系数据库系统为数据库应用系统的开发提供良好环境,减轻用户负担,提高用户生产率的原因。
重点和难点
重点:关系模型和关系数据库是《数据库系统概论》课程的重点,第3章又是重点中的重点。要熟练正确的使用SQL完成对数据库的查询、插入、删除、更新操作。在使用具体的SQL时,能有意识地和关系代数、关系演算等语言进行比较,了解他们各自的特点。
难点:用SQL语言正确完成复杂查询,掌握SQL语言强大的查询功能。因此在学习过程中一定要多练习,要在安装好的数据库系统上进行实际操作,检查你的答案,你查询的结果是否正确。只有通过大量练习才能真正达到举一反三的熟练程度。
实验内容
实验2 在安装好的数据库系统下创建数据库、创建表、创建索引;使用SQL对数据库进行各类查询操作(单表查询,连接查询,嵌套查询,集合查询)和更新操作(插入数据,修改数据,删除数据)。练习数据定义操作,包括基本表的创建、修改及删除;索引的创建和删除;视图的创建和删除。对视图的查询,更新(注意更新的条件)。完成书后作业的SQL练习
第四章 数据库安全性
内容概述
介绍计算机以及信息安全技术标准的进展。详细讲解数据库安全性问题和实现技术。RDBMS实现数据库系统安全性的技术和方法有多种,本章讲解最重要的存取控制技术、视图技术和审计技术。讲解存取控制机制中用户权限的授权与回收,合法权限检查。数据库角色的概念和定义等。本章目标
掌握什么是数据库的安全性问题,牢固掌握数据库管理系统实现数据库安全性控制的常用方法和技术。
重点和难点
重点:使用SQL中的GRANT 语句和 REVOKE 语句来实现数据库的实现自主存取控制功能。使用SQL中CREATE ROLE语句创建角色,用GRANT 语句给角色授权。掌握视图机制在数据库安全保护中的作用。
难点:强制存取控制(MAC)机制中确定主体能否存取客体的存取规则,同学们要理解并掌握存取规则为什么要这样规定。
实验内容
实验3 在安装好的数据库系统下对已经建立的数据库创建用户、角色、视图;使用SQL对数据进行安全性控制,包括:授权和权力回收。操作完成后看看已授权的用户是否真正具有授予的数据操作的权力了;权力收回操作之后的用户是否确实丧失了收回的数据操作的权力。本实验可以分小组完成。例如,用户A登录、建表、建视图等,授权一些数据操作权限用户B,然后用户B登录,检查是否具有授予的数据操作权限。也可以一个人建2个用户来完成。
第五章 数据库完整性
内容概述
详细讲解数据库的完整性概念。包括,什么是数据库的完整性,数据库的完整性概念与数据库的安全性概念的区别和联系,RDBMS的数据库完整性实现机制,包括实体完整性、参照完整性和用户自己定义的完整性约束的定义机制、完整性检查机制和违背完整性约束条件时RDBMS采取的预防措施。触发器的概念和在数据库完整性检查中的应用。本章目标
掌握什么是数据库的完整性,掌握用SQL语言定义关系模式的完整性约束条件。
重点和难点
重点:牢固掌握DBMS完整性控制机制的三个方面,即完整性约束条件的定义、完整性约束条件的检查和违约反应。需要举一反三的:用SQL语言定义关系模式的完整性约束条件。包括定义每个模式的主码;定义参照完整性;定义与应用有关的完整性。
难点:RDBMS如何实现完整性的策略,即当操作违反实体完整性、参照完整性和用户定义的完整性约束条件时,RDBMS如何进行处理,以确保数据的正确与有效。其中比较复杂的是参照完整性的实现机制。
实验内容
实验4 在安装好的数据库系统下对已经建立的数据库使用SQL对数据进行完整性控制(三类完整性、CHECK短语、CONSTRAIN子句、触发器)。进行违约操作,用实验证实,当操作违反了完整性约束条件时,系统是如何进行违约处理的
第六章 关系数据理论
内容概述
详细讲解关系数据理论,主要是关系数据库规范化理论。包括关系数据库逻辑设计可能出现的问题,数据依赖的基本概念(包括,函数依赖、平凡函数依赖、非平凡的函数依赖、部分函数依赖、完全函数依赖、传递函数依赖的概念;码、候选码、外码的概念;多值依赖的概念),范式的概念、1NF、2NF、3NF、BCNF、4NF的概念和判定方法。数据依赖的Armstrong公理系统。本章内容分为基本要求部分(《概论》6.1-6.3)和高级部分(《概论》6.4)。前者是计算机大学本科学生应该掌握的内容。后者是研究生应该学习掌握的内容。本章目标
关系数据理论既是关系数据库的重要理论基础也是数据库逻辑设计的理论指南和有力工具。要掌握规范化理论和优化数据库模式设计的方法。
重点和难点
重点:了解什么是一个“不好”的数据库模式。什么是模式的插入异常和删除异常。规范化理论的重要意义。牢固掌握数据依赖的基本概念,范式的概念,从1NF到4NF的定义,规范化的含义和作用。需要举一反三的:四个范式的理解与应用,各个级别范式中存在的问题(插入异常、删除异常、数据冗余)和解决方法。
难点:能够根据应用语义,完整地写出关系模式的数据依赖集合,并能根据数据依赖分析某一个关系模式属于第几范式。各个级别范式的关系及其证明。
本章内容的理论性较强。要通过具体例子和习题练习理解和掌握理论知识
第七章 数据库设计
内容概述
讲解数据库设计方法和技术。数据库设计的特点,数据库设计的基本步骤,数据库设计过程中数据字典的内容,数据库设计各个阶段的设计目标、具体设计内容、设计描述、设计方法等。本章内容的实践性较强,教师可以少讲,让学生多读书并进行实践。
本章目标
了解数据库设计的重要性和数据库设计在信息系统开发和建设中的核心地位。掌握数据库设计方法和步骤,使学生具有设计数据库模式以及开发数据库应用系统的基本能力,能在实际工作中运用这些知识、技术和方法,设计符合应用需求的数据库及其应用系统。重点和难点
重点:掌握数据库设计步骤和数据库设计过程中的各级模式设计方法。特别是数据库概念结构的设计和逻辑结构的设计,这是数据库设计过程中最重要的两个环节。牢固掌握用E-R图来表示概念模型的方法,掌握E-R图的设计,E-R图向关系模型的转换。
难点: 技术上的难点是E-R图的设计和数据模型的优化,包括对现实世界进行抽象的能力,提取实体、属性、实体型之间的联系,正确划分实体与属性的能力。如何把第6章关系数据理论与本章结合,用关系数据理论指导数据库的逻辑设计。真正的难点是理论与实际的结合。同学们一般缺乏实际经验,缺乏对实际问题解决的能力。特别是缺乏应用领域的知识。而数据库设计需要设计人员对应用环境、专业业务有具体深入的了解,这样才能设计出符合具体领域要求的数据库及其应用系统。要在完成本章习题的基础上认真完成大作业。体会这些要点,从而真正掌握本章讲解的知识、方法和技术。
课程大作业 《数据库设计与应用开发》
在某个RDBMS产品上,选择合适的应用系统开发工具为某个部门或单位开发一个数据库应用系统。通过实践,掌握本章介绍的数据库设计方法,同时培养团队合作精神。要求5~6位同学组成一个开发小组,每位同学承担不同角色(例如:项目管理员、DBA、系统分析员、系统设计员、系统开发员、系统测试员)。具体要求:
* 给出数据库设计各个阶段的详细设计报告;
* 写出系统的主要功能和使用说明;
* 提交运行的系统;
* 写出收获和体会,包括已解决和尚未解决的问题,进一步完善的设想与建议;
每个小组进行60分钟的报告和答辩,讲解设计方案,演示系统运行,汇报分工与合作情况
第八章 数据库编程 内容概述
在数据库应用系统的开发中常常使用编程方法对数据库进行操纵。本章讲解这些编程技术涉及的概念和使用的方法。主要包括嵌入式SQL、游标的概念;SQL的过程化扩展PL/SQL和存储过程;使用ODBC设计开发数据库应用程序的方法。
因为JDBC编程、OLEDB编程与ODBC编程的思路基本相同,限于篇幅本章就不讲解JDBC和OLEDB编程,学生可以通过上机实验了解这些技术。本章内容的实践性较强,教师可以少讲,让学生多读书并进行实践。
本章目标
掌握开发数据库应用系统的各种编程方法,具有正确选择不同的方法和技术开发应用程序的能力。
重点和难点
重点:了解SQL编程技术可以有效克服SQL实现复杂应用方面的不足,提高应用系统和RDBMS间的互操作性。掌握嵌入SQL中游标的概念和使用方法;掌握PL/SQL和存储过程的基本概念,基本结构,语句语法和用法。了解使用ODBC开发应用系统的体系结构,掌握ODBC API和ODBC的应用程序的工作流程。
难点:理论联系实际,能够在实际安装的RDBMS上通过编程的方式开发应用程序,完成对数据库的各种操作。能够使用ODBC来进行数据库应用程序的设计,使设计的应用系统可移植性好,并且能同时访问不同的数据库,共享数据资源。
实验内容
《数据库系统概论》第4版给出了4个实验,教师可以根据情况选择其中部分实验让学生完成。具体实验要求请参见教科书。实验
5通过嵌入式SQL访问数据库 实验6
使用PL/SQL编写存储过程访问数据库 实验7
通过ODBC访问数据库
实验8
通过JDBC访问数据库(注:因为JDBC编程与ODBC编程的思路基本相同,限于篇幅本章没有讲解JDBC,同学可以自学,也可以参考中国人民大学 数据库系统概论精品课程教学网站:http://www.xiexiebang.com/ 中的课程实验)。
第九章 关系查询处理和查询优化
内容概述
通过实例讲解关系数据库查询优化的重要性和可能性。讲解RDBMS的查询处理步骤,即查询分析、查询检查、查询优化和查询执行;查询优化的基本概念,查询优化包括代数优化和物理优化;代数优化是指关系代数表达式的优化;物理优化则是指存取路径和底层操作算法的选择,所以先讲解实现查询操作的主要算法,主要是选择操作和连接操作的主要算法思想,然后讲解关系代数表达式等价变换规则,关系代数表达式的优化,物理优化方法(基于启发式规则的存取路径选择优化,操作算法的执行代价估算方法,基于代价的优化方法)。
本章目标
本章并不要求学生掌握RDBMS查询处理和查询优化的内部实现技术,因此没有详细讲解技术细节。
本章的目的是希望学生了解RDBMS查询处理的基本步骤,查询优化的概念、基本方法和技术,为数据库应用开发中利用查询优化技术提高查询效率和系统性能打下基础。
重点和难点
重点:了解关系数据库查询优化的重要性。掌握查询处理各个步骤的主要功能。能够把SQL语句转换成查询树,对查询树进行代数优化,转换成优化的查询树。掌握物理优化的基本方法。难点:能运用本章学习的查询优化知识,对于比较复杂的查询,尤其是涉及连接和嵌套的查询,写出适合RDBMS自动优化的SQL语句。对于RDBMS不能优化的查询需要重写查询语句,进行手工调整以优化性能。不要把优化的任务全部放在RDBMS上。
实验内容
实验9 查询优化 通过本章实验,了解你安装使用的RDBMS的查询优化方法和查询计划表示,能够利用它分析查询语句的实际执行方案和查询代价,进而通过建立索引或者修改SQL语句来降低查询代价,达到优化系统性能的目标。
具体实验内容: 对单表查询
例如以下的查询(可以自己给出查询语句)select * from student
where age>20 ; 2.连接查询,普通的两表连接查询或多表连接查询
3.嵌套查询,自己写几个带有子查询的例子,主要考虑带有IN和EXISTS谓词的子查询,包括相关子查询和不相关子查询。也可以使用《数据库系统概论》书上列举的例子。
对以上各种查询,通过建立索引或者删除索引(单表查询语句)、修改连接顺序(连接查询语句)、重写SQL语句即查询重写(嵌套查询);比较不同查询计划执行的性能差异,达到降低查询代价,优化性能的目标。
第十章 数据库恢复技术
内容概述
事务处理技术主要包括数据库恢复技术和并发控制技术。因为事务是数据库恢复和并发控制的基本单位,所以首先讲解事务的基本概念和事务的ACID性质。
本章讲解数据库恢复技术。包括数据库运行中可能发生的故障类型,数据库恢复中最经常使用的技术—数据转储和登录日志文件。讲解日志文件的内容及作用,登记日志文件所要遵循的原则,针对事务故障、系统故障和介质故障等不同故障的恢复策略和恢复方法。具有检查点的恢复技术。数据库镜像功能。
本章目标
掌握事务的基本概念和事务的ACID性质。了解数据库恢复技术的重要性,针对不同的故障类型,掌握恢复数据库的策略和方法。
重点和难点
重点:牢固掌握事务的基本概念和事务的ACID性质。要掌握数据库故障恢复的策略和方法。数据库恢复的基本原理是数据备份,它貌似简单,实际却很复杂。数据库的事务管理策略(不仅有数据库恢复策略,还有并发控制策略)和DBMS缓冲区管理策略、事务一致性级别密切相关,同学们要在学习完这些知识后把这些问题联系起来,提升对这些技术的理解和掌握。
难点:掌握日志文件的使用,系统故障、介质故障的恢复方法。对于刚刚学习数据库的学生来讲并不体会数据库故障恢复的复杂性和重要性。在实际工作中,则必须正确了解所用的DBMS产品提供的恢复技术和恢复方法,并且能够根据这些机制正确制定系统的恢复策略,以保证数据库系统7*24小时正确运行。保证数据库系统在遇到故障时能及时恢复正常运行,提高抗故障抗灾难的能力。
实验内容
在安装好的数据库系统下对已经建立的数据库人为地制造事务内部故障和系统故障,检查系统是否进行了恢复。
第十一章 并发控制
内容概述 数据库管理系统必须提供并发控制机制来协调并发用户的并发操作以保证并发事务的隔离性和一致性,保证数据库的一致性。本章讨论数据库并发控制的基本概念和实现技术。包括封锁技术、封锁协议、活锁和死锁的概念、并发调度的可串行性、冲突可串行化调度、两段锁协议、封锁的粒度、意向锁。
本章目标
了解的数据库并发控制技术的必要性和重要性。牢固掌握并发控制的基本概念。
重点和难点
重点:掌握并发操作产生的数据不一致性(丢失修改、不可重复读、读“脏数据”)的确切含义。封锁协议与数据一致性的关系;并发调度的可串行性概念。
难点:两段锁协议与串行性的关系、与死锁的关系。具有意向锁的多粒度封锁方法的封锁过程。
本章内容有一定的深度和难度,可以通过对实例的学习和习题的练习来正确理解和掌握基本概念
第四篇:数据库原理及应用实验教学指导书
《数据库原理及应用》实验
本实验与《数据库原理及应用》课程相配套,适用于本校地理信息系统专业本科学生。实验目的:
数据库系统及应用实验是本课程教学环节中的重要一环。数据库系统及应用课程学习数据库的建立和应用,需要通过大量的上机来验证和熟悉数据库管理软件,通过本实验学习,学习使用SQL Server,掌握数据库的原理,能应用SQL Server做一些应用实践,并能结合高级编程语言开发一些小型的项目,并进一步了解学习空间数据库;
基本要求:
1)总体要求:学生实验前,要认真阅读实验指导书,能够按教学内容独自使用SQL Server完成实验,做好实验报报告。
2)先修课程:计算机基础、高级语言(C语言程序设计)、数据结构 3)本课程已开出11个实验。
《数据库原理与应用》对地理信息系统专业应开设11个实验,其中综合性实验1个,设计性实验9个,演示性实验1个。
4)本实验分组: 本实验由单人单机完成。课程名称: 数据库原理与应用开课单位: 资源环境学院实 验 室: GIS与RS实验室 实验代码 实验名称
开课学期:第必修/
选修 必修 必修 必修 必修 必修 必修 必修 必修 必修 必修 必修学期 类型 演示 设计 设计 设计 设计 设计 设计 设计 设计 设计 综合课实验要求 时认识SQL2000,能够注册,连接2 服务器,了解工具栏各个命令在SQL Server环境下建立和维2 护数据库建立表,修改表结构,建立索4 引,数据完整性描述掌握数据的插入、更新和删除。2用SQL SELECT语句完成各种数6 据查询定义视图,并在视图上完成查2 询、插入、更新和删除操作掌握存储过程的建立和执行 2建立一组触发器,并执行一些2 必要的数据操作使其被执行初步掌握以作为客户端开发工2 具开发C/S应用的方法。初步掌握以作为客户端开发工2 具开发C/S应用的方法。完成一个数据库小系统的开发
类别
03031401 SQL Server界面与操专
作 业
03031402 建立数据库 专
业
03031403 建立表和数据完整性 专
业
03031404 SQL 数据操作 专
业
03031405 SQL 数据查询 专
业
03031406 视图的定义和操作 专
业
03031407 存储过程 专
业
03031408 触发器 专
业
03031409 使用Visual FoxPro专
做客户端开发 业
03031410 使用PowerBuilder做专
客户端开发 业
03031411 系统开发 专
业
第五篇:数据库原理实验教案
《数据库原理》课程实验
实验1 创建数据库和数据表
一、实验目的
熟悉SQL Server Management Studio界面;掌握通过图形化向导和执行Transact-SQL语句创建数据库的方法。
二、实验环境
Windows XP操作系统,SQL Server 2005软件。
三、实验课时
2课时。
四、实验内容
SQL Server中的一个数据库必须至少包含一个数据文件和一个事务日志文件,所以创建数据库就是建立主数据文件和日志文件。
在SQL Server 2005中创建数据库的方法主要有两种:一是在SQL Server Management Studio窗口中使用可视化界面,通过方便的图形化向导创建,二是通过执行Transact-SQL语句创建。
(一)向导方式创建
1、从“开始”菜单选择“所有程序”→“Microsoft SQL Server 2005”,打开“SQL Server Management Studio”窗口,使用Windows或SQL Server身份验证建立连接。
2、在“对象资源管理器”窗格中展开服务器,选择“数据库”节点右击,从弹出的快捷菜单中选择“新建数据库”命令,打开“新建数据库”窗口。
3、该窗口中有3个页,分别是“常规”、“选项”和“文件组”,完成这3个页的内容即可完成数据库的创建。这里,我们仅设置“常规”的相应内容,其他2个页的内容按照默认设置即可。
(1)“数据库名称”文本框中输入数据库的名称,如“sample_st”,再输入该数据库的所有者,这里使用默认值即可。(也可以通过单击文本框右边的“浏览”按钮选择所有者。
(2)“数据库文件”列表中包括两行,一个是数据文件,一个是日志文件。通过单击下面相应的按钮可以添加或删除相应的数据文件。
逻辑名称:指定该文件的文件名。
文件类型:用于区别当前文件是数据文件还是日志文件。 文件组:显示当前数据库文件所属的文件组。
初始大小:指定该文件的初始容量。在SQL Server 2005中数据文件的默认值为3MB,日志文件的默认值为1MB。 自动增长:用于设置在文件容量不够用时,文件根据何种增长方式自动增长。
路径:指定存放在文件的目录。默认情况下,SQL Server 2005将存放路径设置为其安装目录下的data子目录,单击该列中的按钮可以在打开的“定位文件夹”对话框中更改数据库的存储路径。
完成上述操作后,单击“确定”按钮关闭“新建数据库”窗口,即完成了数据库的创建,可以在“对象资源管理器”窗格中看到新建的数据库。
(二)语言方式创建
SQL Server 2005使用的Transact-SQL语言是标准SQL的增强版本,使用它提供的Create Database语句同样可以完成对数据库的建立(参考内容见附录)。
1、单击“新建查询”按钮,创建一个查询输入窗口将附录中的语句复制到该窗口。选择创建数据库的命令,单击工具栏中的“分析”按钮,可以检查语法错误;单击“执行”按钮即可执行语句,在查询窗口内的“查询”窗格中可以看到“命令已成功完成”的提示消息。在“对象资源管理器”窗格中刷新,即可看到新建的数据库。
2、继续执行Create Database之后的语句,在“sample_st”数据库中用Create Table命令依次建立Student、Course和SC这三个数据表,利用Insert命令为各数据表添加数据。(参考内容见教材P84)
(三)知识巩固
仿照附录内容,用SQL-DDL语言创建“产品订购”数据库,包含四个数据表S、P、J和SPJ,表结构及内容见教材P122。
实验2 数据库的简单查询
一、实验目的
掌握单表查询中各个子句(Select、From、Where、Group、Having、Order)的用法,特别要掌握比较运算符和逻辑运算符的使用。
二、实验环境
Windows XP操作系统,SQL Server 2005软件。
三、实验课时
2课时。
四、实验内容
在已建立的数据库和数据表的基础上,用Select语句完成下列查询操作。
1、查询全体学生的学号和姓名。
select sn,sno from s
2、查询全体学生的所有基本信息(仅针对Student表)。
select * from s
3、对SC表查询全体学生的选课记录,在显示结果中为“Grade”列增加5分。select score+5 from sc
4、查询全体学生的学号和姓名,将原来的英文列名设置中文别名。select sn as 姓名,sno as 学号 from s
5、显示所有选课学生的学号,去掉重复结果。
select distinct sno from sc
6、查询成绩在80分以上的学生选课记录
select * from sc where score>80
7、查询经济系所有学生的学号和姓名。
select sn,sno from s where dept='经济系'
8、查询成绩在80~90分的学生选课记录。
select * from sc where score between 80 and 90
9、查询年龄不在22~25的学生记录。
select * from s where age not between 22 and 25
10、查询所有姓“刘”的学生记录。
select * from s where sn like'刘%'
11、查询无考试成绩(成绩为空值)的学号、课程号。5
select sno ,cno from sc where score is null
12、查询考试成绩非空值的学号、课程号。
select sno ,cno from sc where score is null
13、查询数学系年龄小于20岁的学生记录。
select * from s where dept ='数学系'and age <28
14、查询选修了“101”或“102”课程的选课记录。select * from c where cno ='101' or cno ='102'
15、查询学生总人数。
select count(sno)from s
16、查询选修了课程的学生人数。
select count(distinct sno)from sc
17、查询选修了“101”课程的学生的平均成绩。
select AVG(score)from sc
where cno='101'
18、查询学号为“01003”的学生的考试总成绩。
select sum(score)from sc
where sno=01003
19、查询“101”课程的最高分和最低分。
select max(score),MIN(score)from sc
where cno='101'
20、查询每门课程的选课人数。
select cno,COUNT(sno)from sc
group by cno
21、查询每个学生的学号、选课数、平均成绩和总成绩。
select sno,COUNT(cno)/*,AVG(score),sum(score)*/ from sc group by sno
22、查询选课数超过2的学生学号及其选课数。
select sno,COUNT(cno)from sc
group by sno
having COUNT(*)>2
23、查询所有学生信息,查询结果按年龄降序排列。(针对Student表操作)
select * from s order by AGE desc
24、查询所有学生信息,查询结果按系名升序,同系学生按年龄降序排列。
select * from s order by dept,AGE desc
25、查询选课数超过2的学生学号及其选课数,查询结果按选课数降序排列。
select sno,COUNT(cno)from sc group by sno having COUNT(*)>2 order by count(cno)desc
实验3 数据库的多表查询
一、实验目的
继续熟练SQL-SELECT语句的使用;理解多表查询的概念;掌握多表连接查询中各个子句的用法,特别要比较内连接和外连接的结果。掌握非相关子查询、相关子查询的用法,理解它们的执行过程;学会在SQL Server中用Exists实现交运算,用Not Exists实现差运算。
二、实验环境
Windows XP操作系统,SQL Server 2005软件。
三、实验课时
2课时。
四、实验内容
(一)、在已建立的数据库和数据表的基础上,用Select语句的连接查询完成下列操作。
1、查询每个学生的基本信息及其选课情况。
2、查询选修“101”课程的学生学号、姓名和成绩。
3、查询与“李平”在同一个系学习的学生记录。
4、查询与“李平”年龄相同的学生记录。
5、查询选修课程名为“数据库原理”的选课记录。
6、查询选修课程名为“数据库原理”的学生记录。
7、查询选修“101”课程且成绩≥90的学号、姓名和成绩。
8、查询“李平”的所有选课记录。
9、查询数学系学生选修的课程号,要求结果中去掉重复记录。
10、查询计算机系选修课程数≥2的学号、姓名及平均成绩,查询结果按平均成绩降序。
11、查询每个学生的学号、选修课程号、课程名及成绩。
12、查询所有学生的选修情况(包括选课和未选课的学生),要求显示学号、姓名、课程号和成绩。
(二)、在已建立的数据库和数据表的基础上,用Select语句的嵌套查询完成下列操作。
1、查询选修“101”课程且成绩≥90的学号、姓名。
2、查询“李平”的所有选课记录。
3、查询与“李平”在同一个系学习的学生记录。
4、查询与“李平”年龄相同的学生记录。
5、查询选修课程名为“数据库原理”的选课记录,输出结果包括学号和成绩。
6、查询选修课程名为“数据库原理”的学生记录,输出结果包括学号、姓名和所在系。
7、查询学号为“01003”学生的选修课程号和课程名。
8、查询没有选修“101”课程的学生学号和姓名。
9、查询选修“101”课程或“102”课程的学生姓名。
10、查询选修“101”课程和“102”课程的学生学号。
11、查询选修“101”课程但没选修“102”课程的学生学号。
12、查询没有选修任何课程的学生记录,输出结果包括学号、姓名和所在系。
13、查询数学系学生选修的课程号,要求结果中去掉重复记录。
14、查询选修课程至少包含“01003”选修课程的学生学号。实验4 数据库更新、视图定义及使用
一、实验目的
掌握Insert、Update、Delete语句的使用;对于Insert语句,要求理解默认值约束、空值约束在插入记录时所起的作用。理解视图的概念,掌握Create View、Drop View语句的使用;掌握基于视图的查询语句的使用。
二、实验环境
Windows XP操作系统,SQL Server 2005软件。
三、实验课时
2课时。
四、实验内容
(一)、在已建立的数据库和数据表的基础上,向数据库中添加一个临时表ST,其结构比Student表结构多一个score字段。用Insert语句向临时表输入数据,输入有误时用Update语句进行修改。再用三个更新语句完成下列操作。
1、向Student表添加若干新记录,内容自定。(观察已定义的表的约束情况)
2、向SC表添加新记录,内容自定,不低于10条(注意不能违反参照完整性)。
3、为临时表ST添加记录。
4、把Student表的所有行一次性地加到临时表ST中。
5、在ST表中把所有学生的成绩加2分。
6、在ST表中把所有学生的年龄增加1。
7、在ST表中把“李平”的所在系改为“计算机”。
8、在ST表中将选修课程“数据库原理”的学生成绩加2分。
9、在SC表中删除所有成绩为空值的选修记录。
10、删除计算机系选修成绩不及格的选课记录。
(二)、在已建立的数据库和数据表的基础上,完成下列操作。
1、建立数学系学生的视图MAST。
2、建立计算机系选修课程名为“数据库原理”的学生视图,视图名:CSTVIEW,该视图中应包括属性列:学号、姓名、成绩。
3、创建一个名为STSUMVIEW的视图,包括所有学生的学号和总成绩。
4、建立学生选课视图SCVIEW,包括所有学生的学号、姓名、课程号、课程名和成绩。
5、通过MAST视图查询学生基本信息。
6、通过SCVIEW查询成绩大于90分的学生的学号和成绩。
7、查询计算机系选修课程名为“数据库原理”并且成绩大于85分的学生的学号和成绩。
8、通过MAST视图将学号为“01008”学生的年龄修改为21岁。
9、通过MAST视图将学号为“01009”学生所在系改为“经济”,是否能成功执行?若不能成功请说明理由;若修改成功,请再次通过MAST视图查询学生基本信息,是否能查询到该生?若不能查询请说明理由。
10、通过SCVIEW视图将学号为“01004”学生的总成绩修改为380分,是否能成功执行?若不能成功请说明理由。
实验5 数据库的安全与保护
一、实验目的
理解SQL Server的用户与权限管理机制,掌握用对象资源管理器创建服务器登录帐号,并同时建立用户。掌握如何为给定的用户分配权限。
二、实验环境
Windows XP操作系统,SQL Server 2005软件。
三、实验课时
2课时。
四、实验内容
用户与权限管理
(1)打开“SQL Server Management Studio”窗口,使用对象资源管理器创建两个服务器登录帐号Test1和Test2,并在“sample_st”数据库中创建两个对应的同名用户。设置Test1用户和Test2用户的默认架构为guest。
(2)使用Test1身份登录,并为Test2分配创建数据表的权限;用Test2身份登录来验证权限分配成功。
(3)使用Test1身份登录,收回刚刚分配给Test2的创建数据表的权限;用Test2身份登录来验证权限回收成功。
五、实验步骤
1、使用对象资源管理器创建两个服务器登录帐号。以系统管理员身份登录SQL Server。打开“SQL Server Management Studio”窗口,在对象资源管理器列表中,打开展开“安全性”文件夹,选择“登录名”图标,单击鼠标右键,在弹出的菜单中选择“新建登录名”。在打开的对话框中依次建立Test1和Test2,选择“SQL Server身份验证”,同时还要输入密码,默认数据库为“sample_st”。
(2)在“用户映射”中列出了当前登录帐号可以选择访问的数据库如“sample_st”,在其左侧的复选框中打勾,表示当前登录帐号可以访问对应的数据库,默认用户名与登录帐号相同。
(3)单击“确定”按钮完成创建。
2、创建新的数据库用户。
在对象资源管理器中选中要访问操作的数据库,展开“安全性”文件夹,在“用户”文件夹中查找是否已建立与登录名Test1和Test2同名的数据库用户,若已建立,则在属性中修改其默认架构为guest;否则右击鼠标在菜单中选择“新建用户”选项,出现“数据库用户-新建”对话框,建立相应的用户。最后,在sample_st数据库的“安全性架构guest属性权限”中,为test1和test2用户分配相应权限。
3、用Grant、Revoke命令实现对用户的授权和收权。
4、用Create命令创建数据表验证授权和收权是否成功。
5、以系统管理员身份登录SQL Server。使用:“GRANT SELECT ON SC TO Test1 WITH GRANT OPTION”命令,再分别以Test1和Test2身份登录,进行授权及查询数据表,验证“WITH GRANT OPTION”能否成功执行。
6、以系统管理员身份使用“REVOKE”命令回收上述授权。
实验6 数据库的完整性
一、实验目的
通过实验掌握数据库完整性概念,掌握利用SQL Server 2005实现数据库完整性的基本方法和步骤。
二、实验环境
Windows XP操作系统,SQL Server 2005软件。
三、实验课时
2课时。
四、实验内容
1、建立关系模式。
完成教材P164第6题,用SQL语言定义“职工”和“部门”两个关系模式: 职工(职工号,姓名,年龄,职务,工资,部门号),职工号为主码 部门(部门号,名称,经理名,电话), 部门号为主码 要求在模式中完成以下完整性约束条件的定义:(1)定义每个模式的主码;(2)定义参照完整性;
(3)定义职工年龄不得超过60岁;(4)定义部门名称必须取值唯一。
2、验证完整性约束。
使用Insert Values语句向两个表中各插入5~10条记录,对下列内容进行验证。(1)验证主键约束:“职工”和“部门”两个表中是否能接受主码值相同的记录,通过实例验证。
(2)验证唯一约束:“部门”表中是否能接受名称相同的两个不同记录?为什么?
(3)验证检查约束:“职工”表中能否接受年龄不满足条件的记录?为什么?
(4)验证参照完整性:若“部门”表中不存在部门号为“008”的记录,是否能在“职工”表中插入部门号为“008”的职工记录?若删除“001”部门的所有信息,正确的操作步骤是什么?
实验7 数据库设计实验
一、实验目的
通过实验掌握数据库设计的基本方法和步骤。
二、实验环境
Windows XP操作系统,SQL Server 2005软件。
三、实验课时
2课时。
四、实验内容
1、选定实验题目,为某个单位或部门设计数据库应用系统,比如:学生成绩管理、机房上机管理、职工档案管理、商品库存管理、图书管理、工资管理等。
2、根据选定的题目进行需求分析,重点分析数据需求和功能需求。
3、概念结构设计:画出E-R图。
4、逻辑结构设计:设计数据库和数据表的具体结构,指出各表的属性名称、数据类型;说明各表的主码及表之间的关联情况;说明本设计是否已达到3NF要求。
5、简要评价系统设计的优点和不足。
五、实验要求
1、提交设计报告,涵盖实验内容的全部信息,不低于1000字。
2、提交建立应用系统数据库的代码,所有数据表中的记录总数不低于50条。(请参照实验2的附录建立数据库)
实验8 存储过程实验
一、实验目的
通过实验熟悉使用存储过程进行数据库应用程序设计的方法
二、实验环境
Windows XP操作系统,SQL Server 2005软件。
三、实验课时
2课时。
四、实验内容
对sample_st数据库,编写存储过程,完成下面功能
1、统计任意一门课程的平均成绩
2、统计所有课程的平均成绩
3、统计任意一门课程的成绩分布情况,即按照分数段统计人数(即<60、60-69、70-79、80-89、90以上)