⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 建表语句1.txt

📁 图书管理系统 按书本上写的编辑的
💻 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 + -