一、SQL定义语句
1.用SQL定义语句创建符合如下条件的数据库:
数据库名为:学生数据库,模式:默认模式
数据文件的物理文件名为:主数据文件Students_data.mdf(逻辑文件同名),日志文件:Students_log.ldf(逻辑文件同名),存放在D:\Data文件夹下(若D:盘中无此文件夹,请先建立此文件夹,然后再创建数据库。)
2.选用已建立的“学生数据库”,用SQL定义语句创建符合如下条件的表C-1到C-4(注意各种完整性约束)
上述两题,界面方式或命令方式均需要熟练掌握
表C-1 Student表结构
列名 |
说明 |
数据类型 |
约束 |
Sno |
学号 |
普通编码定长字符串,长度为7 |
主键 |
Sname |
姓名 |
普通编码定长字符串,长度为10 |
|
Ssex |
性别 |
普通编码定长字符串,长度为2 |
|
Sage |
年龄 |
微整型(tinyint) |
|
Sdept |
所在系 |
普通编码不定长字符串,长度为20 |
|
Sid |
身份证号 |
普通编码定长字符串,长度为10 |
|
Sdate |
入学日期 |
日期 |
|
表C-2 Course表结构
列名 |
说明 |
数据类型 |
约束 |
Cno |
课程号 |
普通编码定长字符串,长度为10 |
主键 |
Cname |
课程名 |
普通编码不定长字符串,长度为20 |
|
Credit |
学时数 |
整型 |
|
Semester |
学分 |
小整型 |
|
表C-3 SC表结构
列名 |
说明 |
数据类型 |
约束 |
Sno |
学号 |
普通编码定长字符串,长度为7 |
主键,引用Student的外键 |
Cno |
课程号 |
普通编码定长字符串,长度为10 |
主键,引用Course的外键 |
Grade |
成绩 |
小整型 |
|
表C-4 Teacher表结构
列名 |
说明 |
数据类型 |
约束 |
Tno |
教师号 |
普通编码定长字符串,长度为8 |
|
Tname |
教师名 |
普通编码定长字符串,长度为10 |
|
Salary |
工资 |
定点小数,小数点前4位,小数点后2位 |
|
3. 写出实现如下功能的SQL语句,并执行所写代码,查看执行结果。
(1) 在Teacher表中添加一个职称列,列名为:Title,类型为nchar(4)。
(2) 将Course表中Credit列的类型改为:tinyint。
(3) 删除Student表中的Sid和Sdate列。
(4) 为Teacher表添加主键约束,其主键为:Tno。
表C-1 Student表中的记录,本次上机使用窗口方式录入数据
录入数据时请务必保证数据格式与定义的数据类型一致,否则会报错。
学号 |
姓名 |
性别 |
年龄 |
系别 |
身份证号 |
入学日期 |
0811101 |
李勇 |
男 |
21 |
计算机系 |
|
|
0811102 |
刘晨 |
男 |
20 |
计算机系 |
|
|
0811103 |
王敏 |
女 |
20 |
计算机系 |
|
|
0811104 |
张小红 |
女 |
19 |
计算机系 |
|
|
0821101 |
张立 |
男 |
20 |
信息管理系 |
|
|
0821102 |
吴宾 |
女 |
19 |
信息管理系 |
|
|
0821103 |
张海 |
男 |
20 |
信息管理系 |
|
|
0831101 |
钱小平 |
女 |
21 |
通信工程系 |
|
|
0831102 |
王大力 |
男 |
20 |
通信工程系 |
|
|
0831103 |
张姗姗 |
女 |
19 |
通信工程系 |
|
|
表C-2 Course表中的记录
Cno |
Cname |
Credit |
Semester |
C001 |
高等数学 |
4 |
1 |
C002 |
大学英语 |
3 |
1 |
C003 |
大学英语 |
3 |
2 |
C004 |
计算机文化学 |
2 |
2 |
C005 |
VB |
2 |
3 |
C006 |
数据库基础 |
4 |
5 |
C007 |
数据结构 |
4 |
4 |
C008 |
计算机网络 |
4 |
4 |
表C-3 SC表中的记录
Sno |
Cno |
Grade |
0811101 |
C001 |
96 |
0811101 |
C002 |
80 |
0811101 |
C003 |
84 |
0811101 |
C005 |
62 |
0811102 |
C001 |
92 |
0811102 |
C002 |
90 |
0811102 |
C004 |
84 |
0821102 |
C001 |
76 |
0821102 |
C004 |
86 |
0821102 |
C005 |
73 |
0821102 |
C007 |
NULL |
0821103 |
C001 |
50 |
0821103 |
C004 |
80 |
0831101 |
C001 |
50 |
0831101 |
C004 |
80 |
0831102 |
C007 |
NULL |
0831103 |
C004 |
78 |
0831103 |
C005 |
65 |
0831103 |
C007 |
NULL |
表C-4 Teacher表中的记录
Tno |
Tname |
Salary |
T001 |
张美霞 |
5000 |
T002 |
王洪林 |
5500 |
T003 |
李丽芬 |
4800 |
T004 |
周良水 |
6000 |
T005 |
吴翔 |
7000 |
三.实验结果
Student表
sql语句:
create table Student(
Sno char(7) primary key,
Sname char(10),
Sex char(2),
Sage tinyint,
Sdept varchar(20),
Sid char(10),
Sdate date
);
Course表
sql语句:
create table Course(
Cno char(10) primary key,
Cname varchar(20),
Credit int,
Semester smallint
);
Sc表
Sql语句:
create table SC(
Sno char(7),
Cno char(10),
Grade smallint,
foreign key(Sno) references Student(Sno),
foreign key(Cno) references Course(Cno),
primary key(Sno,Cno)
);
Teacher表
Sql语句:
create table Teacher(
Tno char(8) primary key,
Tname char(10),
Salary numeric(6,2)
);
写出实现如下功能的SQL语句,并执行所写代码,查看执行结果。
ALTER table Teacher add Title nchar(4);
ALTER table Course alter column Credit tinyint;
ALTER table Student drop column Sid,Sdate;
ALTER table Teacher add unique(Tno);
Student表插入数据
INSERT INTO Student(Sno,Sname,Sex,Sage,Sdept) VALUES
('0811101','李勇','男',21,'计算机系'),
('0811102','刘晨','男',20,'计算机系'),
('0811103','王敏','女',20,'计算机系'),
('0811104','张小红','女',19,'计算机系'),
('0821101','张立','男',20,'信息管理系'),
('0821102','吴宾','女',19,'信息管理系'),
('0821103','张海','男',20,'信息管理系'),
('0831101','钱小平','男',21,'信息管理系'),
('0831102','王大力','女',20,'计算机系'),
('0831103','张姗姗','男',19,'计算机系');
Course表插入数据
INSERT INTO Course(Cno,Cname,Credit,Semester) VALUES
('C001','高等数学',4,1),
('C002','大学英语',3,1),
('C003','大学英语',3,2),
('C004','计算机文化学',2,2),
('C005','VB',2,3),
('C006','数据库基础',4,5),
('C007','数据结构',4,4),
('C008','计算机网络',4,4);
SC表插入数据
INSERT INTO SC(Sno,Cno,Grade) VALUES
('0811101','C001',96),
('0811101','C002',80),
('0811101','C003',84),
('0811101','C005',62),
('0811102','C001',92),
('0811102','C002',90),
('0811102','C004',84),
('0821102','C001',76),
('0821102','C004',86),
('0821102','C005',73),
('0821102','C007',NULL),
('0821103','C001',50),
('0821103','C004',80),
('0831101','C001',50),
('0831101','C004',80),
('0831102','C007',NULL),
('0831103','C004',78),
('0831103','C005',65),
('0831103','C007',NULL);
Teacher表插入数据
INSERT INTO Teacher(Tno,Tname,Salary) VALUES
('T001','张美霞',5000),
('T002','王洪林',5500),
('T003','李丽芬',4800),
('T004','周良水',6000),
('T005','吴翔',7000);