数据库实验四

  • 实验目的
  1. 深入理解数据库课程从数据库库表结构到数据操作及SQL SERVER 数据库的使用方法。
  2. 掌握数据库的备份和还原。
  3. 掌握数据库数据完整性到数据插入、删除、修改、查询的综合运用。
  4. 掌握数据完整性、视图、存储过程分别在SQL Server 查询分析器和企业管理器的使用方法。

  • 实验内容
  1. 学生成绩(xscj)数据库包括学生表(XS)数据、课程表(KC)数据和学生课程表(XS-KC)数据。
  2. 正确还原备份数据库
  3. 根据要求对数据库中的表和数据实现正确设置和操作。
  4. 正确备份修改操作后的数据库

  • 实验内容部分程序及结果
  1. 从网上下载学生成绩(xscj)数据库备份文件,还原到学生所用的系统中,数据库名为“学生信息”。
  2. 在数据库“学生信息”中,新建一名为“个人信息”表,表结构如下:

个人信息(编码 char(10) NOT NULL

  姓名 char(8) NOT NULL

  性别 char(2) NOT NULL

  生日 datetime

  身份证号  char(18)

  家庭住址  varchar(50)

)

create table 个人信息

(

    编码 char(10) NOT NULL,

    姓名 char(8) NOT NULL,

    性别 char(2) NOT NULL,

    生日 datetime,

    身份证号 char(18),

    家庭住址 varchar(50)

);

  1. 将“个人信息”表“编码”列设置为主键。

alter table 个人信息 add primary key(编码)

  1. 为“个人信息”表“身份证号”列建立唯一索引,索引名为“IX_个人信息_身份证号”。

create unique index IX_个人信息_身份证号 on 个人信息(身份证号)

  1. 将“个人信息”表“性别”列的默认值设为“男”,并增加约束,该列只能输入“男”或“女”,约束名为“CK_个人信息_性别”。

alter table 个人信息

        add constraint def_xb default(男) for 性别

alter table 个人信息

        add constraint CK_个人信息_性别 check(性别 in('男','女'))

  1. 创建一名为“学生总评成绩”的视图,显示学号、姓名、专业代码、课程名称、总评成绩。

create view 学生总评成绩 as

        select XS.学号,姓名,KC.课程号,课程名,成绩 from XS,KC,CJ

                 where XS.学号=CJ.学号 and CJ.课程号=KC.课程号

  1. 将课程表中至今没有学生选学的课程记录行删除。

delete from KC

        where 课程号 not in(select 课程号 from CJ)

  1. 将“学生”表所有名字只有两个字的学生信息复制到表“两字学生”中,再将表“两字学生”的姓名中间加入一全角的空格,例如姓名“张三”则更改为“张 三”。

select * into 两字学生 from XS

        where len(姓名)=2

update 两字学生

        set 姓名=left(ltrim(rtrim(姓名)),1)+' '+right(ltrim(rtrim(姓名)),1)

  1. 完全备份数据库“学生信息”,备份文件命名为“学生信息.bak”,将文件 “学生信息.bak”用WinRar压缩为“学生信息.rar”,上传到指定的服务器上。

backup database xscj to disk = 'D:\StudyFiles\专业课程\数据库原理\backup\学生信息.bak'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,以下是一个简单的数据库实验触发器实验: 1. 创建一个数据库表,包含以下字段:id(自增主键)、name、age、gender。 2. 编写一个触发器,当插入一条记录时,自动为该记录生成一个唯一的ID。触发器可以使用MySQL的内置函数UUID()生成。 3. 编写一个触发器,当删除一条记录时,自动将该记录的信息写入另一张日志表中,包括被删除记录的ID、姓名、年龄和性别。 4. 编写一个触发器,当更新一条记录时,自动将该记录的信息写入另一张历史表中,包括被更新记录的ID、姓名、年龄和性别。历史表应该具有时间戳字段,以便记录更新的时间。 下面是具体的实现步骤: 1. 创建一个名为“person”的表: ``` CREATE TABLE person ( id INT(11) NOT NULL AUTO_INCREMENT, name VARCHAR(50) NOT NULL, age INT(11) NOT NULL, gender enum('M', 'F') NOT NULL, PRIMARY KEY (id) ); ``` 2. 创建一个名为“person_uuid”的触发器,用于自动生成ID: ``` CREATE TRIGGER person_uuid BEFORE INSERT ON person FOR EACH ROW SET NEW.id = UUID(); ``` 3. 创建一个名为“person_log”的表,用于记录删除操作: ``` CREATE TABLE person_log ( id INT(11) NOT NULL, name VARCHAR(50) NOT NULL, age INT(11) NOT NULL, gender enum('M', 'F') NOT NULL, deleted_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); ``` 4. 创建一个名为“person_delete”的触发器,用于将删除操作记录到日志表中: ``` CREATE TRIGGER person_delete AFTER DELETE ON person FOR EACH ROW INSERT INTO person_log (id, name, age, gender) VALUES (OLD.id, OLD.name, OLD.age, OLD.gender); ``` 5. 创建一个名为“person_history”的表,用于记录更新操作: ``` CREATE TABLE person_history ( id INT(11) NOT NULL, name VARCHAR(50) NOT NULL, age INT(11) NOT NULL, gender enum('M', 'F') NOT NULL, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); ``` 6. 创建一个名为“person_update”的触发器,用于将更新操作记录到历史表中: ``` CREATE TRIGGER person_update AFTER UPDATE ON person FOR EACH ROW INSERT INTO person_history (id, name, age, gender) VALUES (OLD.id, OLD.name, OLD.age, OLD.gender); ``` 以上就是一个简单的数据库实验触发器实验。通过此实验,你可以了解如何使用MySQL触发器来自动生成唯一ID,记录删除操作和记录更新操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值