数据库系统实验报告.docx
《数据库系统实验报告.docx》由会员分享,可在线阅读,更多相关《数据库系统实验报告.docx(50页珍藏版)》请在冰豆网上搜索。
数据库系统实验报告
数据库系统实验
班级
姓名
学号
任课教师
计算机学院
实验一:
基本SQL语言
1.实验目标
1.1.熟练掌握基本的SQL语言。
能够利用SQL定义语言(DDL)创建、删除和修改数据库的基本对象(表、视图、约束和索引等),利用SQL查询语言(Select)对数据中数据进行检索,利用SQL修改语言(Insert、Update、Delete)对数据中数据进行插入、修改和删除操作。
能够利用SQL控制语言(DCL)将数据库的基本对象(表和视图等)的各种权限授予其它用户。
1.2.熟悉SQLServer2000的交互式SQL语言的操作环境。
能够利用查询分析器进行SQL语言的编辑和提交。
2.实验要求
2.1.写出以下各个实验的SQL语句。
2.2.在SQLServer2000的查询分析器环境中执行SQL语句,写出每次执行的结果。
2.3.对于错误的执行结果,分析产生错误的原因,并写出纠正错误的方案。
2.4.SQL语句的书写规范,要求每个查询子句独占一行,如:
SelectSNO,SNAME
FromS
WhereSage>=20;
注意:
每次实验之后请作好数据库备份。
下次实验之前进行数据库恢复。
3.实验课时
本次实验共计10课时。
4.实验数据
本次实验中用到6个关系表(当前用户):
COURSE(课程)、DEPT(系)、S(学生)、PROF(教师)、PC(授课)、SC(选修)。
4.1.关系模式。
4.2.6个关系表的定义。
⑴COURSE(课程)
字段
名称
类型
说明
CNO
课程号
VARCHAR(10)
PK,NOTNULL
CNAME
课程名
VARCHAR(10)
NOTNULL
PCNO
先修课程号
VARCHAR(10)
CREDIT
学分
REAL
⑵DEPT(系)
字段
名称
类型
说明
DNO
系号
VARCHAR(10)
PK,NOTNULL
DNAME
系名
VARCHAR(10)
NOTNULL
DEAN
系主任号
VARCHAR(10)
系主任作为教师的编号
⑶S(学生)
字段
名称
类型
说明
SNO
学生号
VARCHAR(10)
PK,NOTNULL
SNAME
学生名
VARCHAR(10)
NOTNULL
SEX
性别
VARCHAR(10)
0,女;1,男
AGE
年龄
REAL
DNO
所在系号
VARCHAR(10)
FK
⑷PROF(教师)
字段
名称
类型
说明
PNO
教师号
VARCHAR(10)
PK,NOTNULL
PNAME
教师名
VARCHAR(10)
NOTNULL
SAL
工资额
FLOAT
AGE
年龄
REAL
DNO
所在系号
VARCHAR(10)
FK
⑸SC(选修)
字段
名称
类型
说明
SNO
学生号
VARCHAR(10)
PK,
NOTNULL
FK
CNO
课程号
VARCHAR(10)
FK
SCORE
成绩
REAL
⑹PC(授课)
字段
名称
类型
说明
PNO
学生号
VARCHAR(10)
PK,
NOTNULL
FK
CNO
课程号
VARCHAR(10)
FK
4.3.6个关系表的元组数据。
⑴COURSE(课程)
CNO
CNAME
PCNO
CREDIT
C1
数据库
C5
4
C2
离散数学
C7
2
C3
组合数学
C2
2
C4
操作系统
C9
4
C5
数据结构
C2
3
C6
近世代数
C7
2
C7
高等数学
4
C8
C语言
C2
2
C9
数理逻辑
4
⑵DEPT(系)
DNO
DNAME
DEAN
D1
计算机
P01
D2
数学
P04
D3
物理
P07
⑶S(学生)
SNO
SNAME
SEX
AGE
DNO
S1
宋江
1
59
D1
S2
吴用
1
48
D1
S3
鲁智深
1
42
D1
S4
孙二娘
0
40
D2
S5
林冲
1
51
D2
S6
李逵
1
46
D2
S7
武松
1
36
D3
S8
扈三娘
0
30
D3
⑷PROF(教师)
PNO
PNAME
SAL
AGE
DNO
P1
刘备
1800
59
D1
P2
诸葛亮
1600
48
D1
P3
关羽
1400
D1
P4
曹操
2200
40
D2
P5
司马懿
2000
61
D2
P6
张辽
1700
46
D2
P7
孙权
2100
66
D3
P8
周瑜
1900
30
D3
P9
鲁肃
1500
50
D3
⑸SC(选修)
SNO
CNO
SCORE
S1
C1
80
S1
C2
60
S1
C3
40
S1
C4
90
S1
C5
70
S1
C6
60
S1
C7
50
S1
C8
70
S1
C9
80
S2
C1
80
S2
C2
60
S2
C3
40
S2
C4
90
S3
C5
70
S3
C6
60
S4
C1
70
S4
C2
60
S4
C3
55
S4
C4
85
S4
C5
70
S4
C6
70
S4
C7
80
S4
C8
40
S4
C9
70
S5
C3
40
S5
C4
90
S5
C5
70
S5
C6
60
S5
C7
50
S6
C1
80
S6
C2
60
S6
C3
40
S6
C4
90
S7
C1
30
S7
C2
80
S7
C3
40
S7
C4
70
S7
C5
80
S7
C6
60
S7
C7
90
S7
C8
50
S7
C9
80
S8
C2
60
S8
C3
55
S8
C4
85
⑹PC(授课)
PNO
CNO
P1
C1
P2
C2
P3
C3
P4
C4
P5
C5
P6
C6
P7
C7
P8
C8
P9
C9
5.实验步骤
5.1.SQLServer2000数据库的安装、启动和创建新的数据库。
SQLServer2000已安装在本机,一般采用的是Windows认证方式。
因此当你以默认Windows用户administrator登陆进window操作系统之后,你就可以直接通过服务管理器启动SQLServer2000。
启动成功之后的状态如下(启动成功之后,可以关闭服务管理器):
之后可以通过打开查询分析器登陆到SQLServer2000,建立和DBMS的会话。
Windows的系统管理员默认对应SQLServer的系统管理员用户sa。
因此,当你以windows的系统管理员身份登陆到SQLServer之后,你在SQLServer中对应的用户名就是sa。
你可以对SQLServer执行任何操作了(当然你也可以创建一个新的用户,该用户最好在windows和SQLServer中以相同的名字同时创建)。
利用企业管理器创建新的数据库test。
test数据库作为本次实验用数据库,在test数据库中创建本次实验的所有数据库对象。
5.2.Create语句
利用Create语句创建以上6个关系表。
同时利用Insert语句将实验数据插入到相应的表中。
1)创建COURSE(课程)的Create语句。
表的创建SQL语句、出现的主要错误及原因:
CREATETABLECOURSE(
CNOVARCHAR(10)PRIMARYKEYNOTNULL,
CNAMEVARCHAR(10)NOTNULL,
PCNOVARCHAR(10),
CREATITREAL)
向表插入数据的SQL语句、出现的主要错误及原因:
INSERTINTOCOURSE(CNO,CNAME,PCNO,CREATIT)
values('C1','数据库','C5',4)
INSERTINTOCOURSE(CNO,CNAME,PCNO,CREATIT)
values('C2','离散数学','C7',2)
INSERTINTOCOURSE(CNO,CNAME,PCNO,CREATIT)
values('C3','组合数学','C2',2)
INSERTINTOCOURSE(CNO,CNAME,PCNO,CREATIT)
values('C4','操作系统','C9',4)
INSERTINTOCOURSE(CNO,CNAME,PCNO,CREATIT)
values('C5','数据结构','C2',3)
INSERTINTOCOURSE(CNO,CNAME,PCNO,CREATIT)
values('C6','近世代数','C7',2)
INSERTINTOCOURSE(CNO,CNAME,PCNO,CREATIT)
values('C7','高等数学',NULL,4)
INSERTINTOCOURSE(CNO,CNAME,PCNO,CREATIT)
values('C8','C语言','C2',2)
INSERTINTOCOURSE(CNO,CNAME,PCNO,CREATIT)
values('C9','数理逻辑',NULL,4)
INSERTINTOCOURSE(CNO,CNAME,PCNO,CREATIT)
values('C1','数据库','C5',’4’)
中,字符型varchar类型的要用单引号,数字型的real,float类型的不用加单引号,上面的’4’应改为4
INSERTINTOCOURSE(CNO,CNAME,PCNO,CREATIT)
values('C9','数理逻辑',’’,4)
VALUES值中若为空,应写为NULL,不是用两个单引号表示
2)创建DEPT(系)的Create语句。
表的创建SQL语句、出现的主要错误及原因:
CREATETABLEDEPT(
DNOVARCHAR(10)PRIMARYKEYNOTNULL,
DNAMEVARCHAR(10)NOTNULL,
DEANVARCHAR(10))
向表插入数据的SQL语句、出现的主要错误及原因:
INSERTINTODEPT(DNO,DNAME,DEAN)
VALUES('D1','计算机','P01')
INSERTINTODEPT(DNO,DNAME,DEAN)
VALUES('D2','数学','P04')
INSERTINTODEPT(DNO,DNAME,DEAN)
VALUES('D3','物理','P07')
3)创建S(学生)的Create语句。
表的创建SQL语句、出现的主要错误及原因:
CREATETABLES(
SNOVARCHAR(10)PRIMARYKEYNOTNULL,
SNAMEVARCHAR(10)NOTNULL,
SEXVARCHAR(10)CHECK(SEX=0ORSEX=1),
AGEREAL,
DNOVARCHAR(10)FOREIGNKEYREFERENCESDEPT(DNO)NOTNULL)
有外键约束时格式为DNOVARCHAR(10)FOREIGNKEYREFERENCESDEPT(DNO)NOTNULL
向表插入数据的SQL语句、出现的主要错误及原因:
INSERTINTOS(SNO,SNAME,SEX,AGE,DNO)
VALUES('S1','宋江','1',59,'D1')
INSERTINTOS(SNO,SNAME,SEX,AGE,DNO)
VALUES('S2','吴用','1',48,'D1')
INSERTINTOS(SNO,SNAME,SEX,AGE,DNO)
VALUES('S3','鲁智深','1',42,'D1')
INSERTINTOS(SNO,SNAME,SEX,AGE,DNO)
VALUES('S4','孙二娘','0',40,'D2')
INSERTINTOS(SNO,SNAME,SEX,AGE,DNO)
VALUES('S5','林冲','1',51,'D2')
INSERTINTOS(SNO,SNAME,SEX,AGE,DNO)
VALUES('S6','李逵','1',46,'D2')
INSERTINTOS(SNO,SNAME,SEX,AGE,DNO)
VALUES('S7','武松','1',36,'D3')
INSERTINTOS(SNO,SNAME,SEX,AGE,DNO)
VALUES('S8','扈三娘','0',30,'D3')
4)创建PROF(教师)的Create语句。
表的创建SQL语句、出现的主要错误及原因:
CREATETABLEPROF(
PNOVARCHAR(10)PRIMARYKEYNOTNULL,
PNAMEVARCHAR(10)NOTNULL,
SALFLOAT,
AGEREAL,
DNOVARCHAR(10)FOREIGNKEYREFERENCESDEPT(DNO)NOTNULL)
INSERTINTOPROF(PNO,PNAME,SAL,AGE,DNO)
VALUES('P1','刘备',1800,59,'D1')
INSERTINTOPROF(PNO,PNAME,SAL,AGE,DNO)
VALUES('P2','诸葛亮',1600,48,'D1')
INSERTINTOPROF(PNO,PNAME,SAL,AGE,DNO)
VALUES('P3','关羽',1400,NULL,'D1')
INSERTINTOPROF(PNO,PNAME,SAL,AGE,DNO)
VALUES('P4','曹操',2200,40,'D2')
INSERTINTOPROF(PNO,PNAME,SAL,AGE,DNO)
VALUES('P5','司马懿',2000,61,'D2')
INSERTINTOPROF(PNO,PNAME,SAL,AGE,DNO)
VALUES('P6','张辽',1700,46,'D2')
INSERTINTOPROF(PNO,PNAME,SAL,AGE,DNO)
VALUES('P7','孙权',2100,66,'D3')
INSERTINTOPROF(PNO,PNAME,SAL,AGE,DNO)
VALUES('P8','周瑜',1900,30,'D3')
INSERTINTOPROF(PNO,PNAME,SAL,AGE,DNO)
VALUES('P9','鲁肃',1500,50,'D3')
向表插入数据的SQL语句、出现的主要错误及原因:
INSERTINTOPROF(PNO,PNAME,SAL,AGE,DNO)
VALUES('P1','刘备',1800,59,'D1')
INSERTINTOPROF(PNO,PNAME,SAL,AGE,DNO)
VALUES('P2','诸葛亮',1600,48,'D1')
INSERTINTOPROF(PNO,PNAME,SAL,AGE,DNO)
VALUES('P3','关羽',1400,NULL,'D1')
INSERTINTOPROF(PNO,PNAME,SAL,AGE,DNO)
VALUES('P4','曹操',2200,40,'D2')
INSERTINTOPROF(PNO,PNAME,SAL,AGE,DNO)
VALUES('P5','司马懿',2000,61,'D2')
INSERTINTOPROF(PNO,PNAME,SAL,AGE,DNO)
VALUES('P6','张辽',1700,46,'D2')
INSERTINTOPROF(PNO,PNAME,SAL,AGE,DNO)
VALUES('P7','孙权',2100,66,'D3')
INSERTINTOPROF(PNO,PNAME,SAL,AGE,DNO)
VALUES('P8','周瑜',1900,30,'D3')
INSERTINTOPROF(PNO,PNAME,SAL,AGE,DNO)
VALUES('P9','鲁肃',1500,50,'D3')
5)创建SC(选修)的Create语句。
CREATETABLESC(
SNOVARCHAR(10)FOREIGNKEYREFERENCESS(SNO)NOTNULL,
CNOVARCHAR(10)FOREIGNKEYREFERENCESCOURSE(CNO)NOTNULL,
SCOREREAL,
PRIMARYKEY(SNO,CNO))
有多个字段的约束必须定义为表的约束形式
当SNO,CNO都是主键时格式应为:
PRIMARYKEY(SNO,CNO)
向表插入数据的SQL语句、出现的主要错误及原因:
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S1','C1',80)
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S1','C2',60)
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S1','C3',40)
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S1','C4',90)
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S1','C5',70)
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S1','C6',60)
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S1','C7',50)
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S1','C8',70)
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S1','C9',80)
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S2','C1',80)
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S2','C2',60)
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S2','C3',40)
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S2','C4',90)
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S3','C5',70)
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S3','C6',60)
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S4','C1',70)
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S4','C2',60)
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S4','C3',55)
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S4','C4',85)
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S4','C5',70)
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S4','C6',70)
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S4','C7',80)
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S4','C8',40)
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S4','C9',70)
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S5','C3',40)
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S5','C4',90)
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S5','C5',70)
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S5','C6',60)
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S5','C7',50)
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S6','C1',80)
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S6','C2',60)
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S6','C3',40)
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S6','C4',90)
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S7','C1',30)
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S7','C2',80)
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S7','C3',40)
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S7','C4',70)
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S7','C5',80)
INSERTINTOSC(SNO,CNO,SCORE)
VALUES('S7','C6',60)
INSERTINTOSC(