创建和删除表(提高篇)----实验三

2**.使用DDL语言定义基本表**
有一个项目管理(xmgl)数据库,现有四张表,分别是部门表(部门号,部门名,部门电话,部门地址);员工表(员工号,姓名,性别,出生年月,所在部门号(合并的外键));项目表(项目编号,项目名称,所在地方)以及员工参与项目(员工号,项目编号,职责)。其中一个员工属于一个部门,一个部门有多个员工(员工:部门=多对一)(如果是一对多的联系,则把这种联系要往多端进行合并,合并的方法:一端实体的主键并入到多端做外键);一个员工可同时参加多个项目,一个项目有多个员工一起开发(多对多)。用SQL语言中的DDL语言建立这四张表,设计并定义表的主码和外码,各字段的数据类型自己设计。
DDL语言:
create database xmgl
create table 部门(部门号char(20)primary key,部门名char(20),部门电话char(15),部门地址char(20),)
create table 员工(员工号char(20)primary key,姓名char(10),性别char(5),出生年月datetime,所在部门号char(20),foreign key(所在部门号) references 部门(部门号))
create table 项目(项目编号char(20)primary key,项目名称char(20),所在地方char(20),)
create table 员工参与项目(员工号char(20),项目编号char(20),职责char(20),primary key (员工号,项目编号),foreign key (员工号) references 员工(员工号),foreign key (项目编号) references 项目(项目编号),)

分析:中间有‘(’,‘,’语法错误,我写的中文的括号,逗号,要求英文字符。
3.分别使用对象资源管理器和SQL语句定义下面的约束(用户定义完整性),并进行比较。
①员工号是四位数字串([][][][]),其中每一位是取0-9#([0-9][0-9][0-9][0-9])之间的数字。(员工表,员工号上约束,四个方括号)
②项目编号是以字母J开始的,其它是数字的4位字符串。
③约束性别的取值为“男”、“女”,且非空,缺省是男。
④约束部门电话的格式:由取值为0-9的8位数字串组成。
4.使用SQL语句修改表
①在部门表中增加“部门领导”字段(和员工号同域);在项目表中增加“项目主管”字段(和员工号同域)。
alter table 部门表 add 部门领导 char(20)
alter table 部门表 add foreign key (部门领导)references 员工表(员工号)
②在员工表中增加“技术职称”和“工资”字段,其中“工资”为数字类型。
③在项目表中增加“开工日期”和“完工日期”字段,类型为日期型。
alter table 项目表 add 开工日期 datetime
④增加约束:工程起始日期小于计划完成日期。
⑤在部门表中增加“部门人数”字段,类型为字符型。
⑥修改“部门人数”字段类型为整型。
⑦先在项目表中增加“项目类型”字段,然后再删除该字段。

create database xmgl
create table 部门表(部门号 char(20)primary key,部门名 char(20),部门电话 char(20),部门地址 char(20))
create table 员工表(员工号 char(20)primary key,姓名 char(20),性别 char(3),出生年月 char(20),所在部门号 char(20),foreign key(所在部门号) references 部门表(部门号))
create table 项目表(项目编号 char(20)primary key,项目名称 char(20),所在地方 char(20))
create table 员工参与项目(员工号 char(20),项目编号 char(20),职责 char(20),primary key(员工号,项目编号),foreign key(员工号) references 员工表(员工号),foreign key(项目编号) references 项目表(项目编号))
alter table 员工表 add constraint ck_员工号_quzhi check (员工号 like '[0-9][0-9][0-9][0-9]')
alter table 项目表 add constraint ck_项目表_quzhi check (项目编号 like '[J][0-9][0-9][0-9]')
alter table 员工表 add constraint ck_员工表_quzhi check (性别='男'or 性别='女')
alter table 员工表 add constraint ck_员工表_quzhi1 check (性别 is not NULL)
alter table 部门表 add constraint ck_部门表_quzhi check (部门电话 like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')

alter table 部门表 add 部门领导 char(20)
alter table 部门表 add foreign key (部门领导)references 员工表(员工号)
alter table 项目表 add 项目主管 char(20)
alter table 项目表 add foreign key (项目主管) references 员工表(员工号)
alter table 员工表 add 技术职称 char(20)
alter table 员工表 add 工资 int
alter table 项目表 add 开工日期 datetime
alter table 项目表 add 完工日期 datetime
alter table 项目表 add constraint ck_项目表_riqi check (开工日期<完工日期)
alter table 部门表 add 部门人数 char(20)
alter table 部门表 alter column 部门人数 int
alter table 项目表 add 项目类型 char(20)

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值