数据库代码(一)

1
2
3
-- 创建数据库
CREATE DATABASE SchoolDB;
USE SchoolDB;

这部分代码用于初始化数据库。CREATE DATABASE SchoolDB; 创建了一个名为 SchoolDB 的数据库。USE SchoolDB; 将其设为当前操作的数据库,以便后续所有命令都在该数据库中执行。

1
2
3
4
5
6
7
CREATE TABLE student (
sno INT NOT NULL PRIMARY KEY,
sname CHAR(10) UNIQUE,
sex CHAR(10),
deptno INT,
age INT
);

该部分代码创建 student 表,包含以下字段:

  • sno: 学生编号,整型,不允许为空,并设置为主键,确保每个学生的编号唯一。
  • sname: 学生姓名,字符型,限定长度为 10,设置为唯一,避免姓名重复。
  • sex: 学生性别,字符型。
  • deptno: 学生所属的部门编号,与 dept 表中的 deptno 关联。
  • age: 学生年龄,整型。
1
2
3
4
5
6
CREATE TABLE sc (
sno INT NOT NULL,
cno INT NOT NULL,
grade INT,
PRIMARY KEY (sno, cno)
);

该部分代码创建 sc 表,用于记录学生选课信息,包括以下字段:

  • sno: 学生编号,与 student 表的 sno 字段对应。
  • cno: 课程编号,与 course 表的 cno 字段对应。
  • grade: 学生成绩。
    PRIMARY KEY (sno, cno) 指定复合主键,确保每个学生在每门课程中只记录一次成绩。
1
2
3
4
5
CREATE TABLE teacher (
tno INT NOT NULL PRIMARY KEY,
tname VARCHAR(8) NOT NULL,
deptno INT
);

这部分代码创建 teacher 表,包含以下字段:

  • tno: 教师编号,整型,设置为主键,确保教师编号唯一。
  • tname: 教师姓名,字符型,限定长度为 8,不允许为空。
  • deptno: 教师所属部门编号,与 dept 表的 deptno 字段对应。
1
2
3
4
5
6
CREATE TABLE course (
cno INT NOT NULL PRIMARY KEY,
cname CHAR(10) NOT NULL,
tno INT,
credit INT
);

该部分代码创建 course 表,包含以下字段:

  • cno: 课程编号,整型,设置为主键,确保每门课程的编号唯一。
  • cname: 课程名称,字符型,限定长度为 10,不允许为空。
  • tno: 教师编号,关联 teacher 表的 tno 字段,表示授课教师。
  • credit: 课程学分,整型,表示该课程的学分数。
1
2
3
4
CREATE TABLE dept (
deptno INT NOT NULL PRIMARY KEY,
dname VARCHAR(20) NOT NULL
);

这部分代码创建 dept 表,包含以下字段:

  • deptno: 部门编号,整型,设置为主键,确保每个部门的编号唯一。
  • dname: 部门名称,字符型,限定长度为 20,不允许为空。
1
2
3
4
5
6
7
-- 插入数据
INSERT INTO student (sno, sname, sex, deptno, age) VALUES
(1001, '张天', '男', 10, 20),
(1002, '李兰', '女', 10, 20),
(1003, '陈铭', '男', 10, 21),
(1004, '刘茜', '女', 20, 21),
(1005, '马朝阳', '男', 20, 22);

这部分代码向 student 表插入了五条学生记录,包含学生的编号、姓名、性别、部门编号和年龄。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
INSERT INTO sc (sno, cno, grade) VALUES
(1001, 1, 80),
(1002, 1, 78),
(1003, 1, 92),
(1004, 1, 87),
(1005, 1, 85),
(1001, 2, 85),
(1002, 2, 82),
(1001, 3, 78),
(1002, 3, 86),
(1003, 3, 90),
(1001, 4, 90),
(1004, 4, 90),
(1005, 4, 92);

这部分代码向 sc 表插入了多条选课记录,记录了每个学生在各门课程中的成绩。

1
2
3
4
5
INSERT INTO teacher (tno, tname, deptno) VALUES
(101, '张星', 10),
(102, '李珊', 10),
(103, '赵天应', 10),
(104, '刘田', 20);

这部分代码向 teacher 表插入了四条教师记录,包含教师的编号、姓名和所属部门编号。

1
2
3
4
5
INSERT INTO course (cno, cname, tno, credit) VALUES
(1, '数据结构', 101, 4),
(2, '数据库', 102, 4),
(3, '离散数学', 103, 4),
(4, '语言程序设计', 101, 2);

这部分代码向 course 表插入了四门课程的记录,包含课程编号、名称、授课教师编号和学分。

1
2
3
INSERT INTO dept (deptno, dname) VALUES
(10, '计算机科学与技术'),
(20, '信息');

这部分代码向 dept 表插入了两个部门的记录,包含部门编号和名称。