实验一开始之前,如果还有不会使用navicat建议花五分钟补课哦~
补课地址:【scau数据库实验先导】mysql_navicat_数据库新建、navicat的使用-CSDN博客
实验目的: 理解和掌握数据库DDL语言,能够熟练地使用SQL DDL语句创建、修改和删除数据库、模式和基本表。 |
实验报告要求: 实验报告中简单描述实验步骤,详细写明建库及建表的代码,并以截图的形式显示操作是否成功。 |
实验内容:
一、采用SQL语言建立EMPLOYEE1数据库。
运行均成功(OK)以后,重新双击打开表那一栏
可以看见,新建成功的表
CREATE TABLE company (
company_name VARCHAR(30) NOT NULL,
city VARCHAR(20) NOT NULL,
PRIMARY KEY (company_name)
);
CREATE TABLE employee (
employee_ID INT NOT NULL,
employee_name VARCHAR(20) NOT NULL,
street VARCHAR(20) NOT NULL,
city VARCHAR(20) NOT NULL,
PRIMARY KEY (employee_ID)
);
CREATE TABLE manages (
employee_ID INT NOT NULL,
manager_ID INT NOT NULL,
PRIMARY KEY (employee_ID),
FOREIGN KEY (employee_ID) REFERENCES employee(employee_ID) ON DELETE CASCADE,
FOREIGN KEY (manager_ID) REFERENCES employee(employee_ID) ON DELETE RESTRICT
);
CREATE TABLE works (
employee_ID INT NOT NULL,
company_name VARCHAR(30) NOT NULL,
salary NUMERIC(8,2) CHECK (salary > 3000),
PRIMARY KEY (employee_ID),
FOREIGN KEY (employee_ID) REFERENCES employee(employee_ID) ON DELETE CASCADE,
FOREIGN KEY (company_name) REFERENCES company(company_name) ON DELETE CASCADE
);
二、采用可视化工具(例如:Navicate)创建上述数据库,命名为EMPLOYEE2。
为节省时间,这里仅作操作示例,余下的同学们自行完成
设计表完成并保存后,重新双击‘表’,会出现新建的表了
三、修改、删除基本表(注意:完成每个操作后请用DESC操作查看表结构)
(1)向基本表employee 中增加“性别”属性列,其属性名为sex,数据类型为字符型。
解题步骤:
①选中employee2右键新建查询,输入:
ALTER TABLE employee ADD sex VARCHAR(20);
②将此查询保存并命名为sex。
(2)向基本表employee中增加“年龄”属性列,其属性名为age,数据类型为
SMALLINT, 并且年龄在15至30之间。
解题步骤:
①选中employee2右键新建查询,输入:
ALTER TABLE employee ADD age SMALLINT CONSTRAINT numcons CHECK (age BETWEEN 15 AND 30);
②将此查询保存并命名为age_add。
(3)将employee中的age年龄的数据类型改为INT型。
解题步骤:
①选中employee2右键新建查询,输入:
alter table employee MODIFY COLUMN age INT CONSTRAINT numcons2 CHECK (age BETWEEN 15 AND 30)
②将此查询保存并命名为age_change_type。
(4)将employee中的age字段改名为emp_age。
解题步骤:
①选中employee2右键查询,输入:
ALTER TABLE employee Drop Constraint numcons;
ALTER TABLE employee CHANGE age emp_age INT;
ALTER TABLE employee ADD CONSTRAINT numcons CHECK (emp_age BETWEEN 15 AND 30);
②将此查询保存并命名为emp_age。
(5)将employee中的sex列允许为空值的属性更改为不允许为空值。
解题步骤:
①选中employee2右键查询,输入:
ALTER TABLE employee MODIFY COLUMN sex VARCHAR(20) NOT NULL;
②将此查询保存并命名为sex_notnull。
(6)向company表中增加id字段,并添加自增约束。
解题步骤:
①选中employee2右键查询,输入:
ALTER TABLE works DROP FOREIGN KEY works_ibfk_2;
ALTER TABLE company DROP PRIMARY KEY;
ALTER TABLE company ADD id INT NOT NULL PRIMARY KEY AUTO_INCREMENT FIRST;
②将此查询保存并命名为id_add。
(7)删除employee表中的sex列。
解题步骤:
①选中employee2右键查询,输入:
ALTER TABLE employee DROP sex;
②将此查询保存并命名为sex_delete。
(8)删除employee表。思考:由于主键、外键的约束,如何才能对employee表执行删除操作。
解题步骤:
①选中数据库employee2后右键查询,需要先取消其他表中的关联再删除表。输入:
ALTER TABLE manages DROP FOREIGN KEY manages_ibfk_1;
ALTER TABLE manages DROP FOREIGN KEY manages_ibfk_2;
ALTER TABLE works DROP FOREIGN KEY works_ibfk_1;
ALTER TABLE employee DROP PRIMARY KEY;
DROP TABLE employee;
②将此查询保存并命名为drop_employee。
(9)向manages表中的manager_ID字段上添加not null约束,观察结果,并说明原因。
解题步骤:
①选中employee2右键查询,输入:
ALTER TABLE manages MODIFY manager_ID INT NOT NULL;
②将此查询保存并命名为manager_ID_add。
思考题:
(1)在定义有外码约束的基本表时,必须先定义主表,不能颠倒次序,否则容易出错。请截图解释说明。
外键的作用是保持数据一致性,完整性,主要目的是控制存储在外键表中的数据,使两张表形成关联。给表中添加外键时,需要选择该属性是从其他哪些参考表中的属性连接而来的,因此需要先定义主表,否则从表中的属性无法通过主表定义。
(2)如果在创建关系数据库基本表时,未创建完整性约束条件,对于数据库会有何影响?请截图解释说明。
会导致整个数据库出现严重错误,如数据缺失,数据溢出等漏洞。
(3)在定义外码约束时,如果主表主码的数据类型与从表外码的数据类型不一致,以哪一个为准?
以主表主码为准。