注:此内容仅仅只是记录成长与分享学习,不能保证绝对正确
实验二 数据表的创建与管理
实验日期: 2022 年 4 月 1 日 星期 五 实验地点: 宿舍
一 实验目的
1. 熟练掌握和使用向导、SQL语句创建、删除数据表。
2. 熟练掌握在现有数据表中增加新的属性、删除原有的属性、补充定义主键和外键、以及撤销主键和外键,实现对数据表结构进行修改。
二 实验要求
1. 请大家务必动手完成实验,实验过程中,会随机抽查提问,作为实验成绩重要参考。
2. 请将数据库studb的两个基本文件自行保留,下次实验在此基础上进行。
3. 请在本实验报告指定方框认真填写对应的实验代码或实验结果。
三 实验内容
1. 运用“向导”或SQL命令方式创建管理数据表。
2. 运用“向导”或SQL命令方式在现有数据表中增加新的属性、删除原有的属性。
3. 运用“向导”或SQL命令方式在现有数据表中补充定义和撤销主键、外键。
四 实验步骤
附加前述数据库,按下述要求完成实验:
1. 创建数据表
1)运用“向导”创建数据表S(SNO,SNAME,AGE,GENDER,DNAME),通过右击数据库studb下方“表”项,进入创建数据表窗口,如图2.1。创建过程中,指定SNO为主键,各字段属性如图2.2所示。
图2.1 创建数据表快捷菜单
图2.2 数据表S的字段属性
2)新建一个命令窗口,通过CREATE TABLE命令创建数据表C及SC,声明C的主键为CNO,SC的主键是SNO和CNO属性组。要求两个表的字段属性与图2.3完全一致,且C表的学分CREDIT属性默认值为3。
图2.3 数据表C(左)及SC(右)的字段属性
创建数据表C及SC的SQL命令为:
CREATE TABLE C ( CNO CHAR(2)NOT NULL PRIMARY KEY, CNAME VARCHAR(24)NOT NULL, CREDIT SMALLINT DEFAULT 3, PRE_CNO CHAR(2) ); | CREATE TABLE SC ( SNO CHAR(6)NOT NULL, CNO CHAR(2)NOT NULL, SCORE SMALLINT, PRIMARY KEY(SNO,CNO) ); |
2. 增删数据表中的属性
在数据表S中首先添加一个birthday属性,类型为DATETIME,然后将此属性删除。
增加birthday属性的SQL命令为:
ALTER TABLE S ADD BIRTHDAY DATETIME; |
删除birthday属性的SQL命令为:
ALTER TABLE S DROP COLUMN BIRTHDAY; |
3. 撤销并补充定义主键
通过“向导”撤销S表的主键,通过SQL命令撤销SC表的主键,然后通过SQL命令补充定义被撤销的两个主键,撤销主键时要用到主键对应的键约束名,每个数据表的键约束名位置如图2.4所示。
图2.4 键约束位置
撤销SC表主键的SQL命令为:
ALTER TABLE SC DROP CONSTRAINT PK__SC__6601161B060DEAE8; |
补充定义S表及SC表主键的SQL命令为:
ALTER TABLE S ADD CONSTRAINT SNO_ZHUJIAN PRIMARY KEY(SNO); ALTER TABLE SC ADD CONSTRAINT PK__SC__6601161B060DEAE8 PRIMARY KEY(SNO,CNO); |
4. 定义外键 将SC中的SNO及CNO定义为外键,分别参考S表中的SNO及C表中的CNO。要求通过“向导”方式定义外键SNO,通过命令方式定义外键CNO,“向导”方式定义外键的步骤如下:
1)右击SC表的“键”项,点击“新建外键(N)……”,进入如图2.5所示窗口。
图2.5 外键关系
点击“表和列规范”右侧按钮,进入如图2.6设置窗口,设置外键参照关系,图2.6表示数据表SC中的SNO是一个参照S数据表中SNO的外键,点击确定,退出设置过程,点击“全部保存”按钮,右击刷新数据库即可看到外键约束。
图2.6 设置外键
定义外键CNO的SQL命令为:
ALTER TABLE SC ADD CONSTRAINT WAIJIAN_CNO REFERENCES C(CNO); |
五 自选动作
请在下框填写除了上述实验内容之外自选的实验内容:
将数据表S的SNAME属性的类型的从8位宽增加到24; SQL命令为: ALTER TABLE S ALTER COLUMN SNAME CHAR(24); |
六 实验总结
在补充定义S表及SC表主键的SQL命令时对 CNOSTRAINT 后面的名字理解不正确,没有给添加的约束命名,所以一直报错,错误显示应在CNOSTRAINT后面输入ID,刚开始一直没懂,后来看了书上的例题,一番研究后才明白,每一个约束都是有一个名字的,包括实验里外键,主键等等,在我们定义时系统都给力它一个名字,所以,在添加约束的时候是需要给约束取名字的。 |