数据库实验3答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三:交互式SQL语句的使用
1、实验目的
(1)掌握数据库对象的操作过程,包括创建、修改、删除
(2)熟悉表的各种操作,包括插入、修改、删除、查询
(3)熟练掌握常用SQL语句的基本语法
2、实验平台
使用SQL Server提供的Microsoft SQL Server Management Studio工具,交互式使用SQL语句。
3 实验内容及要求
选择如下一个应用背景之一:
●学生选课系统
●习题3、4、和5中使用的数据库
●其它你熟悉的应用
(1)建立一个数据库和相关的表、索引、视图等数据库对象,练习对表、索引和视图的各种操作。
(2)要求认真进行实验,记录各实验用例及执行结果。
(3)深入了解各个操作的功能。
实验要求包括如下方面的内容:
3.1 数据定义
1.基本表的创建、修改及删除
2.索引的创建
3.视图的创建
3.2 数据操作
完成各类更新操作包括:
1.插入数据
2.修改数据
3. 删除数据
3.3 数据查询操作
完成各类查询操作
1.单表查询
2.分组统计
3. 连接查询
4. 嵌套查询
5. 集合查询
3.4 数据操作
1.创建视图
2.视图查询
参考示例:
建立一个学生选课数据库,练习对表、视图和索引等数据库对象的各种操作。
一、数据定义
创建学生选课数据库ST,包括三个基本表,其中Student表保存学生基本信息,Course表保存课程信息,SC表保存学生选课信息,其结构如下表:
表1. Student表结构
表2. Course表结构
表3. SC表结构
1.创建、修改及删除基本表
(1)创建Student表
CREATE TABLE Student
(Sno CHAR(8)PRIMARY KEY,
Sname CHAR(8),
Ssex CHAR(2)NOT NULL,
Sage INT,
Sdept CHAR(20)
);
(2)创建Course表
CREATE TABLE Course
(Cno CHAR(4)PRIMARY KEY,
Cname CHAR(40)NOT NULL,
Cpno CHAR(4),
Ccredit SMALLINT,
);
(3)创建SC表
CREATE TABLE SC
(Sno CHAR(8)FOREIGN KEY (Sno)REFERENCES Student(Sno),
Cno CHAR(4),
Grade SMALLINT,
);
(4)创建员工表Employee
CREATE TABLE Employee
(
编号CHAR(8)PRIMARY KEY,
姓名VARCHAR(8)not null
部门CHR(40),
工资numeric(8,2),
生日datetime,
职称char(20),
);
指出该语句中的错误并改正后执行。
(5)检查表是否创建成功
SELECT*FROM Student
SELECT*FROM Course
SELECT*FROM SC
SELECT*FROM Employee
(6)修改表结构及约束
●增加班级列
ALTER TABLE Student ADD Sclass char(4)
●修改年龄列
ALTER TABLE Student ALTER COLUMN Sage smallint
●增加约束
ALTER TABLE Course ADD UNIQUE(Cname)
(7)删除表
DROP TABLE Employee
2.创建索引
(1)为Course表按课程名称创建索引
CREATE INDEX iCname On Course(Cname)
(2)为Student表按学生姓名创建唯一索引
CREATE UNIQUE INDEX iSname ON Student(Sname) (3)为SC表按学号和课程号创建聚集索引
CREATE CLUSTERED INDEX iSnoCno On SC(Sno,Cno desc) (4)为Course表按课程号创建唯一索引
请自己完成该操作
3.创建视图
建立信息系学生的视图:
CREATE VIEW IS_Student
AS
SELECT Sno,Sname,Sage FROM Student
WHERE Sdept='IS';
3.2 数据操作
1.插入数据
将如下表格中的数据分别插入到数据库相应的表中:
表4.学生基本信息表
表5.课程信息表
表6.学生选课信息表
(1)插入到Student表
INSERT INTO Student VALUES('20100001','李勇','男',20,'CS','1001')
INSERT INTO Student VALUES('20100002','刘晨','女',19,'CS','1001')
INSERT INTO Student(Sno,Sname,Ssex,Sage,Sdept,Sclass)VALUES('20100021','王敏','女',18,'MA','1002') INSERT INTO Student(Sno,Sname,Ssex,Sage,Sdept,sclass)VALUES('20100031','张立','男',19,'IS','1003') INSERT INTO Student(Sno,Sname,Ssex,sclass)VALUES('20100003','刘洋','女','1001')
检查下列语句中的错误,并改正:
INSERT INTO Student(Sno,Sname,Ssex,Sage,Sdept,sclass) VALUES('20100010',赵斌,'男','19','IS','1005') INSERT INTO Student VALUES('20100022','张明明',19,'男','CS','1002')
(2)插入到Course表
INSERT INTO Course(Cno,Cname,Cpno,Ccredit)VALUES('1','数据库系统原理','5',4)
INSERT INTO Course(Cno,Cname,Cpno,Ccredit)VALUES('2','高等数学',null,2)
INSERT INTO Course(Cno,Cname,Cpno,Ccredit)VALUES('3','管理信息系统','1',4)
请写出插入其余行的插入语句,并插入数据。
(3)插入到SC表
INSERT INTO SC VALUES('20100001','1',92)
INSERT INTO SC VALUES('20100002','2',80)
INSERT INTO SC(Sno,Cno)VALUES('20100003','1')
INSERT INTO SC(Sno,Cno,Grade)VALUES('20100010','3',null)
请写出插入其余行的插入语句,并运行。
(4)多行插入到表中
创建存一个表,保存学生的学号、姓名和年龄:
CREATE TABLE cs_Student
(
学号char(8),
姓名char(8),
年龄smallint
);