使用软件:
SQL Server 2019
SSMS(SQL Server Management Studio) 18.12.1
这里的学号下面是改成了10位长度
设置学号为主键(右键单击学号选设置主键),设置smalint默认值20,性别的约束可以建表后再设置。(注,上面学号的char长度被修订为10)
点击表达式,输入“性别 IN ('男','女')”,同时会发现这里的约束名是CK_表名,第一个学生表建立即完成,后面就可以点击编辑前200行就可以加数据了。
如果不想用上面的点点点界面操作,那么直接用下面的SQL语句即可。
- create table 学生(
- 学号 CHAR(10) PRIMARY KEY, -- 已包含了 NOT NULL UNQUE,
- 姓名 VARCHAR(8) NOT NULL,
- 年龄 SMALLINT DEFAULT 20,
- 性别 CHAR(2) CHECK(性别 IN ('男', '女')),
- 所在系 CHAR(20)
- );
这里用SQL语句的方式,在学生表上右键,新建查询。
- create table 课程(
- 课程号 CHAR(5) PRIMARY KEY, -- 已包含了 NOT NULL UNQUE
- 课程名 VARCHAR(20) NOT NULL,
- 先行课 CHAR(5)
- );
这里仍用SQL语句的方式,在选课表上右键,新建查询。
- create table 选课 (
- 学号 CHAR(10) NOT NULL,
- 课程号 CHAR(5) NOT NULL,
- 成绩 SMALLINT CHECK(成绩 BETWEEN 0 AND 100),
- CONSTRAINT C1 PRIMARY KEY(学号, 课程号), -- 学号和课程号为主码
- CONSTRAINT C2 FOREIGN KEY(学号) REFERENCES 学生(学号), -- 学号为外键(注意这里与学生表的学号数据类型一致)
- CONSTRAINT C3 FOREIGN KEY(课程号) REFERENCES 课程(课程号) -- 课程号为外键(注意这里与课程表的课程号数据类型一致)
- )
注:MONEY是没有长度的(SQL Server有该数据类型),电话的长度因分配为11。
下面均采用SQL语句,建立查询的方式创建表。
(也可以看到数据库的数据存放位置,D:\new_software\SQLServer\servers\MSSQL15.MSSQLSERVER\MSSQL\DATA\)
- -- 创建图书表
- create table 图书 (
- 书号 char(10) primary key, -- 主码(包含not null unque)
- 类别 varchar(12) not null,
- 出版社 varchar(30),
- 作者 varchar(20),
- 书名 varchar(50) not null,
- 定价 money
- );
-
- -- 创建读者表
- create table 读者 (
- 编号 char(8) primary key, -- 主码(包含not null unque)
- 姓名 varchar(8) not null,
- 单位 varchar(30),
- 性别 char(2) check(性别 IN ('男','女')),
- 电话 char(11)
- );
-
- -- 创建借阅表
- create table 借阅 (
- 书号 char(10),
- 读者编号 char(8),
- 借阅日期 datetime not null,
- constraint C1 primary key(书号, 读者编号), -- 书号, 读者编号为主码
- constraint C2 foreign key(书号) references 图书(书号), -- 书号为外键(注意这里与图书表的书号数据类型一致)
- constraint C3 foreign key(读者编号) references 读者(编号) -- 编号为外键(注意这里与读者表的编号数据类型一致)
- );