🌅主页:猫咪-9527-CSDN博客
"欲穷千里目,更上一层楼。会当凌绝顶,一览众山小。"
目录
[student 表(学生表)](#student 表(学生表))
[course 表(课程表)](#course 表(课程表))
[teacher 表(教师表)](#teacher 表(教师表))
[score 表(成绩表)](#score 表(成绩表))
[2. 插入数据](#2. 插入数据)
[student 表中的数据](#student 表中的数据)
[course 表中的数据](#course 表中的数据)
[teacher 表中的数据](#teacher 表中的数据)
[score 表中的数据](#score 表中的数据)
[1-1 创建数据库和数据表的 DDL 语句](#1-1 创建数据库和数据表的 DDL 语句)
[1-2 操作数据的 DML 语句](#1-2 操作数据的 DML 语句)
实验一:数据库与数据表的定义和数据操作
实验目的:
通过实验熟悉数据库上机环境;熟练掌握和使用 DDL,创建、修改和删除数据库和数据表;熟练掌握和使用 DML,对数据表中的数据进行增加、修改和删除操作。
1.实验数据如下
student 表(学生表)
CREATE TABLE student (
sno CHAR(5) PRIMARY KEY, -- 学号
snme VARCHAR(20) NOT NULL, -- 姓名
sdept VARCHAR(20) NOT NULL, -- 系别
sclass CHAR(2) NOT NULL, -- 班级
ssex CHAR(1), -- 性别
birthday DATE, -- 生日
totalcredit DECIMAL(4,1) -- 学分
);
course 表(课程表)
CREATE TABLE course (
cno CHAR(3) PRIMARY KEY,
cname VARCHAR(50),
ctime DECIMAL(3,0),
credit DECIMAL(3,1)
);
teacher 表(教师表)
CREATE TABLE teacher (
tno CHAR(6) PRIMARY KEY,
tname VARCHAR(20),
tsex CHAR(1),
tdept VARCHAR(20)
);
score 表(成绩表)
CREATE TABLE score (
sno CHAR(5),
cno CHAR(3),
tno CHAR(6),
grade DECIMAL(5,1),
PRIMARY KEY (sno, cno, tno),
CONSTRAINT fk_sno FOREIGN KEY(sno) REFERENCES student(sno),
CONSTRAINT fk_cno FOREIGN KEY(cno) REFERENCES course(cno),
CONSTRAINT fk_tno FOREIGN KEY(tno) REFERENCES teacher(tno)
);
2. 插入数据
student 表中的数据
INSERT INTO student VALUES('96001', '马小燕', '计算机', '01', '女', '2000/01/02', 0);
INSERT INTO student VALUES('96002', '黎明', '计算机', '01', '男', '2000/03/05', 0);
INSERT INTO student VALUES('96003', '刘东明', '数学', '01', '男', '2000/10/05', 0);
INSERT INTO student VALUES('96004', '赵志勇', '信息', '02', '男', '2000/08/08', 0);
INSERT INTO student VALUES('97001', '马蓉', '数学', '02', '女', '2001/03/04', 0);
INSERT INTO student VALUES('97002', '李成功', '计算机', '01', '男', '2001/09/10', 0);
INSERT INTO student VALUES('97003', '黎明', '信息', '03', '女', '2002/02/08', 0);
INSERT INTO student VALUES('97004', '李丽', '计算机', '02', '女', '2002/01/05', 0);
INSERT INTO student VALUES('96005', '司马志明', '计算机', '02', '男', '2001/11/23', 0);
course 表中的数据
INSERT INTO course VALUES('001', '数学分析', 64, 4);
INSERT INTO course VALUES('002', '普通物理', 64, 4);
INSERT INTO course VALUES('003', '微机原理', 56, 3.5);
INSERT INTO course VALUES('004', '数据结构', 64, 4);
INSERT INTO course VALUES('005', '操作系统', 56, 3.5);
INSERT INTO course VALUES('007', '编译原理', 48, 3);
INSERT INTO course VALUES('008', '程序设计', 32, 2);
teacher 表中的数据
INSERT INTO teacher VALUES('052501', '王成刚', '男', '计算机');
INSERT INTO teacher VALUES('052502', '李正科', '男', '计算机');
INSERT INTO teacher VALUES('052503', '严敏', '女', '数学');
INSERT INTO teacher VALUES('052504', '赵高', '男', '数学');
INSERT INTO teacher VALUES('052505', '刘玉兰', '女', '计算机');
INSERT INTO teacher VALUES('052506', '王成刚', '男', '信息');
INSERT INTO teacher VALUES('052507', '马悦', '女', '计算机');
score 表中的数据
INSERT INTO score VALUES('96001', '001', '052503', 77.5);
INSERT INTO score VALUES('96001', '003', '052501', 89);
INSERT INTO score VALUES('96001', '004', '052502', 86);
INSERT INTO score VALUES('96001', '005', '052505', 82);
INSERT INTO score VALUES('96002', '001', '052504', 88);
INSERT INTO score VALUES('96002', '003', '052502', 92.5);
INSERT INTO score VALUES('96002', '006', '052507', 90);
INSERT INTO score VALUES('96005', '004', '052502', 92);
INSERT INTO score VALUES('96005', '005', '052505', 90);
INSERT INTO score VALUES('96005', '006', '052505', 89);
INSERT INTO score VALUES('96005', '007', '052507', 78);
INSERT INTO score VALUES('96003', '001', '052504', 69);
INSERT INTO score VALUES('97001', '001', '052504', 96);
INSERT INTO score VALUES('97001', '008', '052505', 95);
INSERT INTO score VALUES('96004', '001', '052503', 87);
INSERT INTO score VALUES('96003', '003', '052501', 91);
INSERT INTO score VALUES('97002', '003', '052502', 91);
INSERT INTO score VALUES('97002', '004', '052505', NULL);
INSERT INTO score VALUES('97002', '006', '052507', 92);
INSERT INTO score VALUES('97004', '005', '052502', 90);
INSERT INTO score VALUES('97004', '006', '052501', 85);
注:把上面的实验数据添加上再开始实验。
实验内容
1-1 创建数据库和数据表的 DDL 语句
(1) 创建数据库 teachingdb
CREATE DATABASE teachingdb;
(2) 在 teachingdb
中创建 student
表
CREATE TABLE student (
sno CHAR(5) PRIMARY KEY,
snme VARCHAR(20) NOT NULL,
sdept VARCHAR(20) NOT NULL,
sclass CHAR(2) NOT NULL,
ssex CHAR(1),
birthday DATE,
totalcredit DECIMAL(4,1)
);
(3) 在 student
表中增加 nativeplace
字段
ALTER TABLE student ADD nativeplace VARCHAR(20);
(4) 删除 student
表中的 nativeplace
字段
ALTER TABLE student DROP COLUMN nativeplace;
(5) 将 student
表中的 ssex
字段定义改为 VARCHAR(3)
ALTER TABLE student MODIFY ssex VARCHAR(3);
(6) 在 course
表中 cname
上添加唯一性约束 uk_cno
方法1:创建时添加
CREATE TABLE course (
cno CHAR(3) PRIMARY KEY,
cname VARCHAR(50) UNIQUE,
ctime DECIMAL(3,0),
credit DECIMAL(3,1)
);
方法二:创建表创建后添加
CREATE TABLE course (
cno CHAR(3) PRIMARY KEY,
cname VARCHAR(50),
ctime DECIMAL(3,0),
credit DECIMAL(3,1)
);
alter table course add unique (cname);

1-2 操作数据的 DML 语句
(1) 在 student
表中插入一条数据
INSERT INTO student VALUES('11111', '马明', '计算机', '01', '女', '2000-01-11', NULL);
(2) 将
student
表中所有学生的总学分加 2,空值也参加计算
UPDATE student SET totalcredit = totalcredit + 2;

(3) 将 student
表中 马小燕
的出生日期修改为 2000-01-22
UPDATE student SET birthday = '2000-01-22' WHERE snme = '马小燕';

(4) 删除 student
表中学号为 11111
的记录
DELETE FROM student WHERE sno = '11111';

(5) 利用 student
表创建表 sl
,sl
的结构与内容与 student
表完全相同
CREATE TABLE sl AS SELECT * FROM student;
(6) 删除 sl
表中计算机系学生的信息
DELETE FROM sl WHERE sdept = '计算机';
|----------------------------------------------------------------------------|----------------------------------------------------------------------------|
| 创建删除 | 展示: |
| |
|
| 结果: ||
| ||
(7) 删除 sl
表
DROP TABLE sl;