高校就业管理系统数据库设计

写在前面的话:这是我原先做数据库课程设计时的相关代码,分享给大家,可以供新手学习参考,希望对大家有所帮助。自己也是刚学习没多久的小白,如果代码或其它有问题,大家可以批评指正,相互学习。(这个数据库有些代码可能没有分享完全(比如表的创建部分),因为当时要求有图形工具创建的,有SQL语句创建的,图形工具创建的部分是直接操作的所以就没有代码。)

这是相关的表

学生(姓名,学号,性别,所在学院,所在学校,出生日期,电话,所属职业,就业状态)

学院(学院编号,学院名称,学校地址,校长)

职业(职业名称,职业编号,所属公司)

学校(学校名称,学校编号,学校地址,校长)

公司(公司名称,公司编号,公司地址)

学生表

列名 描述 数据类型 是否允许空值
stuname 姓名 nvarchar(8) no
stuno 学号 char(8) no
stusex 性别 nchar(1) yes
dno 所在学院 char(8) no
scno 所在学校 char(8) no
sbirthday 出生日期 smalldatetime yes
tel 电话 char(12) yes
pno 所属职业 char(6) no
answer 就业状态 nchar(1) no

学院表

列名 描述 数据类型 是否允许空值
dno 学院编号 char(10) no
dname 学院名称 nvarchar(10) no
dchair 院长 nvarchar(4) yes
scno 所在学校 char(10) no

职业表

列名 描述 数据类型 是否允许空值
pname 职业名称 nvarchar(8) no
pno 职业编号 char(8) no
cno 所属公司 char(8) no

学校表

列名 描述 数据类型 是否允许空值
scname 学校名称 nvarchar(8) no
scno 学校编号 char(10) no
scaddress 学校地址 nvarchar(50) yes
scchair 校长 nvarchar(4) yes

公司表

列名 描述 数据类型 是否允许空值
cname 公司名称 nvarchar(9) no
caddress 公司地址 nvarchar(20) yes
cno 公司编号 char(8) no

1.数据库的创建

 create database wym
 on primary 
 (
 name=gxjy,
 filename='C:\wym\gxjy.mdf',
 size=5MB,
 maxsize=50MB,
 filegrowth=1%
 )
 log on
 (
 name=gxjy_log,
 filename='C:\wym\gxjy_log.ldf',
 size=1MB,
 maxsize=20MB,
 filegrowth=1MB
 )

2.数据表的创建

 use wym
 create table student
 (
 stuname nvarchar(8) not null,
 stuno char(8) not null,
 stusex nchar(1),
 dno char(8) not null,
 scno char(8) not null,
 sbirthday smalldatetime,
 tel char(12),
 pno char(6) not null,
 answer nchar(1) not null
 )
 create table company
 (
 cname nvarchar(9) not null,
 caddress nvarchar(20),
 cno char(8) not null
 )
 create table p
 (
 pname nvarchar(8) not null,
 pno char(8) not null,
 cno char(8) not null
 )

3.创建约束

(1)在表中直接加入约束

 use wym
 create table student
 (
 stuname nvarchar(8),
 stuno char(8) primary key,
 stusex nchar(1) default'男',
 dno char(8),
 scno char(8),
 sbirthday smalldatetime,
 tel char(12) check(tel>=00000000000 and tel<=99999999999),
 pno char(6)

 )
 create table company
 (
 cname nvarchar(9),
 caddress nvarchar(20),
 cno char(8) unique
 )
 create table p
 (
 pname nvarchar(8),
 pno char(8),
 cno char(8),
 constraint f1 foreign key(cno) references company(cno)
 )

(2)独自创建约束

主键约束的创建

ALTER TABLE student 
 ADD CONSTRAINT peri1 PRIMARY KEY (stuno)

DEFAULT约束的创建

ALTER TABLE student
 ADD CONSTRAINT peri2 DEFAULT ’否’ FOR answer

外键约束的创建

ALTER TABLE  p
 add CONSTRAINT peri3 foreign key(cno) references company(cno)

UNIQUE约束的创建

ALTER TABLE company
 ADD CONSTRAINT peri8 UNIQUE cno

CHECK约束的创建

 ALTER TABLE student
  ADD CHECK(tel>=00000000000 and tel<=99999999999)

4.创建索引

create unique index idx_com on company(cno asc);
 create unique index idx_p on p(pno desc);
 create unique clustered idx_stu on student(stuno asc,dno desc);
 create unique idx_dept on dept(dno desc);
 create unique idx_scl on school(scno);

5.创建视图

create view v_student
 as
 select stuname,stuno,stusex
 from student
 where dno='计算机'




 create view v_school
 as
 select scname,scno
 from school
 where scchair='张三'

6.创建存储过程

 create procedure p1
  as
  select stuno,dname,tel
  from student,dept
  where student.dno=dept.dno and dname='文学院' 
 create procedure p2 
  as
  declare @qqq char(10)
 select dno+pno
  from student
  where stuno='6114646'   
create procedure p3 
  as
  declare @a char(10),@w char(6)
  set @w='4322'
  select @a=COUNT(*)   
  from student
  where dno like @w+'%'   

7.创建触发器

 create table 学生数
 (学院编号 char(8),
 学生总数 int)
 ​
 insert into 学生数
 select dno,count(*)
 from student 
 group by dno
 ​
 create trigger tr1
 on student for insert
 as
 begin
 declare @a char(8)
 select @a=dno
  from inserted
 update 学生数                
 set 学生总数=学生总数+1
 where 学院编号=@a
 end   

8.数据插入

insert 
 into school
 values ('清华大学','12345','北京','')
 insert 
 into dept
 values ('12345678','计算机','','12345')

9.数据更新

 update school
 set scaddress='北京市'
 where scname='北京大学'
 update dept 
 set dname='计算机学院'

10.数据删除

delete 
 from dept
 where dname='音乐学院'
delete 
 from dept 
 where dno=12345678 and dname='计算机学院'

11.单表查询

 select *
 from dept
select dno,dname
 from dept
 where dname='文学院'
select COUNT(*)
 from dept
 select dname,COUNT(dno)
 from dept
 group by dname
 having COUNT(dno)>0
 order by COUNT(dno) desc

12.多表查询

 select dname
 from dept 
 where scno in
 (
 select scno   
 from school
 where scname='北京大学'  
 )  
select dno,scname
 from school,dept
 where school.scno=dept.scno and dname='文学院'   
select dno,dname
 from dept
 where dname='艺术学院'
 union
 select dno,dname
 from dept
 where dname='文学院'

你可能感兴趣的:(sql数据库,数据库,sql,database)