📄 建表语句1.txt
字号:
---1\创建一个数据库。
-- 这一步可以不要,但是有了这一步,你做题时所产生的“垃圾”就不会留在系统自带的
-- 6个数据库中。当我们做完题目后,将自己建立的数据库删除,就解决了所有的垃圾问题。
create database mydata
---2\打开新创建的数据库。
use mydata
---3\创建3个表,这3个表被放在 mydata 数据库中。
-- 为了应对北大的上机考试,这里创建的三个表包含了各种常见的情况,
-- 所以比较复杂。请耐心搞懂每个列的定义以及各种约束的定义以及触发器的使用。
-- 学生(学号,姓名,性别,生日,年龄 )
-- 课程(课程号,课程名,学分,授课教师姓名 )
-- 选修(学号,课程号,成绩,选修日期 )
create table s -- 学生表定义。
(
Sno char(4) primary key , -- 主键为学号。,
sname varchar(8) not null , -- 姓名不能为空值。
sex char(1) default 'm' , -- 性别默认为男性。
birthday datetime ,
age as year(getdate()) - year(birthday) , -- 年龄为自动计算列。
check(Sno like 's%') , -- 学号必须以s开头。
check((sex = 'm') or (sex = 'f')) -- 性别必须为男性或女性。^-^
)
create table c -- 课程表定义。
(
cno char(3) primary key , -- 主键为课程号。,
cname varchar(20) not null , -- 课程名不能为空值。
credit tinyint not null , -- 学分不能为空值。
teacher varchar(8) ,
unique(cname , credit) ,
-- 课程名和学分是唯一的,即:(课程名 ,学分 )也可以唯一确定一个元组。
check(credit between 1 and 15) -- 学分必须在1到15之间。
)
create table sc -- 选修表定义。
(
Sno char(4) ,
cno char(3) ,
grade tinyint ,
seleday datetime default getdate() ,
-- getdate()是取得当前系统的时间的函数。
-- 选课日期采用默认值,系统自动设置,即:什么时候往表中插入选课记录,这个时间就
-- 自动被系统记下来。例如我们网上报考时,网上报名系统会自动记下你的报名时间。
primary key(Sno , cno) ,
-- 主键为学号、课程号的组合。
foreign key(Sno) references s(Sno)
-- 学号引用表 S 。
on delete no action
-- 只有在 SC 表中没有某学生的选修元组时,才可以在 S 表中删除该学生信息。
on update cascade ,
-- 在 S 表中修改某学生学号时,系统会自动更新SC表中的学号,使SC与S表保持一致。
foreign key(cno) references c(cno)
on delete no action -- 参见上面有关外键的注释。
on update cascade , -- 参见上面有关外键的注释。
check(grade is null or grade between 0 and 100)
-- 成绩在0到100之间,或者为空,表示该学生缺考。
)
go
---4\向 s、c、sc 表中插入数据。
insert into s values('s001' , 'jim', 'm' , '1985-03-29')
insert into s values('s002' , 'kate', 'f' , '1987-05-13 12:34:40')
insert into s values('s003' , 'tom', 'm' , '1983-08-16 9:36:54.123')
insert into s values('s004' , 'jacky','f' , '1984-11-25')
insert into s values('s005' , 'toky', 'f' , '9-26-1986')
insert into s values('s006' , 'wuli', 'f' , '6-3-1984')
insert into s values('s007' , 'john','m' , '1985-09-22')
-- 无论采用“月日年”还是“年月日”,系统都可正确识别出来。
insert into c values ('c01' , '英语' , 15 , '王喜')
insert into c values ('c02' , '语文' , 5 , '赵小明')
insert into c values ('c03' , '数学' , 12 , '张树')
insert into c values ('c04' , '数据库原理' , 6 , '孟君')
insert into c values ('c05' , '数据结构' , 8 , '孟君')
insert into c values ('c06' , '软件工程' , 10 , '王喜')
insert into sc(Sno,cno,grade) values('s001' , 'c02' , 78)
insert into sc(Sno,cno,grade) values('s001' , 'c03' , 70)
insert into sc(Sno,cno,grade) values('s002' , 'c01' , 85)
insert into sc(Sno,cno,grade) values('s002' , 'c03' , 83)
insert into sc(Sno,cno,grade) values('s002' , 'c04' , 63)
insert into sc(Sno,cno,grade) values('s003' , 'c01' , 85)
insert into sc(Sno,cno,grade) values('s003' , 'c02' , 73)
insert into sc(Sno,cno,grade) values('s003' , 'c04' , 56)
insert into sc(Sno,cno,grade) values('s004' , 'c01' , 67)
insert into sc(Sno,cno,grade) values('s004' , 'c02' , 96)
insert into sc(Sno,cno,grade) values('s004' , 'c03' , 87)
insert into sc(Sno,cno,grade) values('s004' , 'c04' , 65)
insert into sc(Sno,cno,grade) values('s004' , 'c05' , 74)
insert into sc(Sno,cno,grade) values('s006' , 'c01' , 75)
insert into sc(Sno,cno,grade) values('s006' , 'c02' , 79)
insert into sc(Sno,cno,grade) values('s006' , 'c04' , 98)
insert into sc(Sno,cno,grade) values('s007' , 'c01' , 66)
insert into sc(Sno,cno,grade) values('s007' , 'c02' , 70)
insert into sc(Sno,cno,grade) values('s007' , 'c03' , 61)
insert into sc(Sno,cno,grade) values('s007' , 'c04' , 58)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -