目录
实验一:建立数据库
-
购买云服务器后,启动,并使用cloudshell远程登陆


- 使用DataStudio远程连接
- 创建学籍与成绩管理系统
包含以下信息: 课程名称、课程代号、课程类型(必修、选修、任选)、学分、任课教师姓名、教师编号、教师职称、教师所属学院名称、教师所属学院代号、教师所授课程学生姓名、学生学号、学生所属学院名称、学生所属学院代号、学生所选课程、学生成绩。
-- 建立数据表
CREATE TABLE xyb (
ydh CHAR(2) PRIMARY KEY,
ymc VARCHAR(30) NOT NULL
);
CREATE TABLE xs (
xh CHAR(10) PRIMARY KEY,
xm VARCHAR(8) NOT NULL,
ydh CHAR(2),
bj VARCHAR(8),
chrq DATE,
xb VARCHAR(10),
FOREIGN KEY (ydh) REFERENCES xyb(ydh)
);
CREATE TABLE js (
jsbh CHAR(10) PRIMARY KEY,
xm VARCHAR(8) NOT NULL,
zc VARCHAR(6),
ydh CHAR(2),
FOREIGN KEY (ydh) REFERENCES xyb(ydh)
);
ALTER TABLE js
ALTER COLUMN xm TYPE VARCHAR(16);
ALTER TABLE js
ALTER COLUMN zc TYPE VARCHAR(16);
CREATE TABLE kc (
kcbh CHAR(3) PRIMARY KEY,
kc VARCHAR(20) NOT NULL,
lx VARCHAR(10),
xf NUMERIC(5,1)
);
CREATE TABLE sk (
kcbh CHAR(3),
jsbh CHAR(10),
PRIMARY KEY (kcbh, jsbh),
FOREIGN KEY (kcbh) REFERENCES kc(kcbh),
FOREIGN KEY (jsbh) REFERENCES js(jsbh)
);
CREATE TABLE xk (
xh CHAR(10),
kcbh CHAR(3),
jsbh CHAR(10),
cj NUMERIC(5,1),
PRIMARY KEY (xh, kcbh, jsbh),
FOREIGN KEY (xh) REFERENCES xs(xh),
FOREIGN KEY (kcbh, jsbh) REFERENCES sk(kcbh, jsbh)
);
CREATE INDEX idx_xs_ydh ON xs(ydh);
CREATE INDEX idx_js_ydh ON js(ydh);
CREATE INDEX idx_xk_cj ON xk(cj);
实验二:数据库查询
-
插入数据
-- 插入数据
INSERT INTO xyb (ydh, ymc) VALUES
('01', '计算机学院'),
('02', '数学学院');
INSERT INTO xs (xh, xm, ydh, bj, chrq, xb) VALUES
('2023000001', '张三', '01', '计科一班', DATE '2004-09-01', '男'),
('2023000002', '李四', '01', '计科一班', DATE '2004-06-13', '女'),
('2023000003', '王五', '02', '数学一班', DATE '2003-11-23', '男'),
('2023000004', '赵六', '02', '数学二班', DATE '2004-03-03', '女'),
('2023000005', '孙七', '01', '计科二班', DATE '2005-01-17', '男');
-- 插入教师
INSERT INTO js (jsbh, xm, zc, ydh) VALUES
('T001', '王老师', '副教授', '01'),
('T002', '赵老师', '讲师', '02');
-- 插入课程
INSERT INTO kc (kcbh, kc, lx, xf) VALUES
('C01', '数据库系统', '必修', 3.0),
('C02', '高等数学', '必修', 4.0),
('C03', '操作系统', '选修', 2.0);
-- 授课关系
INSERT INTO sk (kcbh, jsbh) VALUES
('C01', 'T001'),
('C02', 'T002'),
('C03', 'T001');
-- 学生 2023000001 选课记录
INSERT INTO xk (xh, kcbh, jsbh, cj) VALUES
('2023000001', 'C01', 'T001', 85), -- 张三选了“数据库系统”
('2023000001', 'C02', 'T002', 90), -- 张三选了“高等数学”
('2023000001', 'C03', 'T001', 76); -- 张三选了“操作系统”
-- 学生 2023000002 选课记录
INSERT INTO xk (xh, kcbh, jsbh, cj) VALUES
('2023000002', 'C01', 'T001', 80), -- 李四选了“数据库系统”
('2023000002', 'C02', 'T002', 70), -- 李四选了“高等数学”
('2023000002', 'C03', 'T001', 85); -- 李四选了“操作系统”
-- 学生 2023000003 选课记录
INSERT INTO xk (xh, kcbh, jsbh, cj) VALUES
('2023000003', 'C01', 'T001', 88), -- 王五选了“数据库系统”
('2023000003', 'C02', 'T002', 75), -- 王五选了“高等数学”
('2023000003', 'C03', 'T001', 92); -- 王五选了“操作系统”
-- 学生 2023000004 选课记录
INSERT INTO xk (xh, kcbh, jsbh, cj) VALUES
('2023000004', 'C01', 'T001', 90), -- 赵六选了“数据库系统”
('2023000004', 'C02', 'T002', 60), -- 赵六选了“高等数学”
('2023000004', 'C03', 'T001', 78); -- 赵六选了“操作系统”
-- 学生 2023000005 选课记录
INSERT INTO xk (xh, kcbh, jsbh, cj) VALUES
('2023000005', 'C01', 'T001', 83), -- 孙七选了“数据库系统”
('2023000005', 'C02', 'T002', 91), -- 孙七选了“高等数学”
('2023000005', 'C03', 'T001', 87); -- 孙七选了“操作系统”
-
测试外键约束:尝试插入一个不存在的外键值
-- 假设学生学号 9999999999 并不存在
-- 假设课程 C99 或教师 T99 也不存在
-- 插入一条错误记录以测试外键约束
INSERT INTO xk (xh, kcbh, jsbh, cj) VALUES
('9999999999', 'C99', 'T99', 100);
实验结果:

-
查询语句练习
查询“数据库系统”这门课的任课教师姓名
SELECT js.xm
FROM js
JOIN sk ON js.jsbh = sk.jsbh
JOIN kc ON kc.kcbh = sk.kcbh
WHERE kc.kc = '数据库系统';
查询结果


最低0.47元/天 解锁文章
362






