实验1 使用SQL语句创建数据表和操作数据
-
实验环境
操作系统:Windows 11 家庭版
数据库管理系统:SQL SERVER 2019
客户端:SSMS 19.3(SQL Server Management Studio 19.3.4.0)
1、使用CREATE TABLE语句创建表:学生表、课程表、学生选课表(见教材52页)。
实验代码:
CREATE TABLE Student
(Sno CHAR(9)PRIMARY KEY,
Sname CHAR(20)UNIQUE,
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20)
);
CREATE TABLE Course
(Cno CHAR(4)PRIMARY KEY,
Cname CHAR(40) NOT NULL,
Cpno CHAR(4),
Ccredit SMALLINT,
);
CREATE TABLE SC
(Sno CHAR(9),
Cno CHAR(4),
Grade SMALLINT,
);
运行结果:
2、使用INSERT语句向以上数据表中添加记录(见教材52页)。
实验代码:
表一(Student表)
insert
into student
values('201215121','李勇','男','20','CS');
insert
into student
values('201215122','刘晨','女','19','CS');
insert
into student
values('201215123','王敏','女','18','MA');
insert
into student
values('201215124','张立','男','19','IS');
表二(Course表)
insert
into Course
values('1','数据库','5','4');
insert
into Course
values('2','数学',' ','2');
insert
into Course
values('3','信息系统','1','4');
insert
into Course
values('4','操作系统','6','3');
insert
into Course
values('5','数据结构','7','4');
insert
into course
values('6','数据处理',' ','2');
insert
into Course
values('7','PASCAL语言','6','4');
表三(CS表)
insert
into SC
values('201215121','1','92');
insert
into SC
values('201215121','2','85');
insert
into SC
values('201215121','3','88');
insert
into SC
values('201215122','2','90');
insert
into SC
values('201215122','3','80');
运行结果:
表一(Student表)
表二(Course表)
表三(CS表)
3、用UPDATE更新学号为‘201215121’并且课程编号为‘1’的成绩为82。
实验代码:
update SC
set Grade=82
where sno='201215121'
and cno='1';
运行结果:(可以看到表格从原来的92变成了现在的82)
4、用DELETE删除学号为‘201215122’的记录。
实验代码:
(首先删除Student表中的该记录)
delete
from Student
where sno='201215122';
(然后删除SC表中的该记录)
delete
from Student
where sno='201215122';
(然后删除Course表中的该记录)
delete
from course
where sno='201215122';(但是这里显示sno列名无效)
运行结果:
(Student表中的记录从4条变成了3条)
(SC表中的记录从5条变成了3条)
(Course中没有学号这一栏,所以没有改变)
5、向Student表增加“入学时间”列S_entrance ,其数据类型为日期型。
实验代码:
ALTER TABLE Student ADD S_enterance DATE;
运行结果:
-
实验总结:
在本次实验中遇到了以下问题:
实验一中在之前实验课中已经创建过了表格,不能重复创建
解决办法我理解的有以下两种:
一是删除已有的表格,重新建立;
二是新建一个数据库解决重复表格的问题
实验二中向表格中添加数据表时发现如果按照教材上编写程序会出现外码报错的情况,这是因为表中的两列形成了参照列和被参照列的关系,在输入数据时就会报错
我的解决办法是删掉FOREIGN KEY(Cpno) REFERENCES Course(Cno)之后程序就能正常运行
在实验代码中没有指明属性名,这是因为只要values语句中的值和属性列一一对应之后就可以不指名
实验四中使用delete删除记录时,Course表中没有sno这一属性,所以操作无效,而且会报错,如图所示:
实验感悟:
在本次实验中,我们主要进行了五项实验分别涉及了表的建立、插入、修改、删除
SQL语句具有非常灵活的编译手段,不区分大小写,而且和英语语言极其相似,比较容易上手