数据库第四次实验报告

  1. 创建students数据库,在该数据库下创建表stu,并同时创建约束,表结构及约束要求如表1所示。
    在这里插入图片描述
CREATE TABLE stu
(
学号 CHAR(4) NOT NULL PRIMARY KEY, 
姓名 CHAR(8) NULL,
性别 CHAR(2) NULL,
出生日期 DATE NULL
);

  1. 创建表sc,并同时创建约束,表结构及约束要求如表2所示。
    在这里插入图片描述
设置(学号,课号)为主键。
CREATE TABLE sc
(
学号 CHAR(4) NOT NULL, 
课号 CHAR(4) NOT NULL,
成绩 DECIMAL(5,2) NULL CHECK(0<=成绩<=100),
CONSTRAINT fk_sno FOREIGN KEY(学号) REFERENCES stu(学号)
);

  1. 创建表course,并同时创建约束,表结构及约束要求如表3所示。
    在这里插入图片描述
CREATE TABLE course
(
课号 CHAR(4) NOT NULL, 
课名 CHAR(20) NULL,
学分 INT NULL,
CONSTRAINT up_cname UNIQUE(课名)
);

  1. 在course表的课号列建立主键约束。
ALTER TABLE course ADD PRIMARY KEY(课号);
  1. 在sc表的课号列建立外键约束fk_cno,参照course表的课号列的取值,要求实现级联更新。
ALTER TABLE sc ADD CONSTRAINT fk_cno 
FOREIGN KEY(课号) REFERENCES course(课号) ON UPDATE CASCADE;

  1. 在stu表的姓名列建立唯一约束名uq_sname。
ALTER TABLE stu ADD CONSTRAINT up_sname UNIQUE(姓名);
  1. 在course表的学分列建立检查约束ck_xf,检查条件为学分>0。
ALTER TABLE course ADD CONSTRAINT ck_xf CHECK(学分>0);
  1. 删除sc表的外键约束fk_cno,fk_sno。
ALTER TABLE sc DROP CONSISTENT fk_cno;
ALTER TABLE sc DROP CONSISTENT fk_sno;

  1. 删除stu表的主键约束。
ALTER TABLE stu DROP PRIMARY KEY;

10.删除course表的唯一约束uq_cname。

ALTER TABLE course DROP INDEX up_cname;

11.创建测试表test,包含一个字段date_time,字段类型varchar(50);
创建触发器test_trig,实现在stu表中每插入一条学生记录后,则自动在test表中追加一条插入成功时的日期时间。SYSDATE()函数用来获取当前的日期和时间。
为stu表插入一条记录引发触发器,查看test表的内容。

CREATE TABLE test(
date_time VARCHAR(50)
);
CREATE TRIGGER test_trig AFTER INSERT on stu
FOR EACH ROW INSERT test VALUES(SYSDATE());
INSERT INTO stu VALUES('1000','张三','男','2001-07-21');
SELECT *FROM test;

12.在course表上创建触发器del_trig,当course表上删除一门课程时,级联删除sc表该课程的记录。删除course表的一条记录,查看sc表相应记录是否被自动删除。

CREATE TRIGGER del_trig AFTER DELETE ON  course
FOR EACH ROW
DELETE FROM sc WHERE sc.`课号`=OLD.课号;
DELETE FROM course WHERE 课号='2';
SELECT *FROM sc;

  • 22
    点赞
  • 112
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值