数据库小练习
-- student表
CREATE TABLE student(
sno CHAR(5) PRIMARY KEY,
sname 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)
);
参考插入数据语句如下:
-- 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('006','数据库原理',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) 创建数据库 teachingdb
CREATE DATABASE teachingdb;
(2) 在 teachingdb
中创建 student
表
USE teachingdb;
CREATE TABLE student(
sno CHAR(5) PRIMARY KEY,
sname 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 VARCHAR(20)
ALTER TABLE student ADD COLUMN nativeplace VARCHAR(20);
(4) 删除 student
表中的籍贯字段
ALTER TABLE student DROP COLUMN nativeplace;
(5) 将 student
表中的 ssex
字段定义改为 VARCHAR(3)
ALTER TABLE student MODIFY ssex VARCHAR(3);
(6) 在 course
表中 cname
上添加唯一性约束 uk_cno
ALTER TABLE course ADD CONSTRAINT uk_cno UNIQUE (cname);
数据操作
(1) 在 student
表中插入一条数据
INSERT INTO student VALUES ('11111', '马明', '计算机', '01', '女', '2000/01/02', NULL);
(2) 将 student
表中所有学生的总学分加 2,空值也参加计算
UPDATE student SET totalcredit = COALESCE(totalcredit, 0) + 2;
(3) 将 student
表中马小燕的出生日期修改为 2000-01-22
UPDATE student SET birthday = '2000-01-22' WHERE sname = '马小燕';
(4) 删除 student
表中学号为 11111
的记录
DELETE FROM student WHERE no = '11111';
(5) 利用 student
表创建表 s1
,s1
的结构与内容与 student
表的完全相同
CREATE TABLE s1 LIKE student;
INSERT INTO s1 SELECT * FROM student;
(6) 删除学生表 s1
中计算机系学生的信息
DELETE FROM s1 WHERE sdept = '计算机';
(7) 删除 s1
表
DROP TABLE s1;