【scau数据库实验一】mysql_navicat_数据库定义实验、基本命令

实验一开始之前,如果还有不会使用navicat建议花五分钟补课哦~

补课地址:【scau数据库实验先导】mysql_navicat_数据库新建、navicat的使用-CSDN博客

|-----------------------------------------------------------------|
| 实验目的: 理解和掌握数据库DDL语言,能够熟练地使用SQL DDL语句创建、修改和删除数据库、模式和基本表。 |
| 实验报告要求: 实验报告中简单描述实验步骤,详细写明建库及建表的代码,并以截图的形式显示操作是否成功。 |

实验内容:

一、采用SQL语言建立EMPLOYEE1数据库。

运行均成功(OK)以后,重新双击打开表那一栏

可以看见,新建成功的表

sql 复制代码
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)在定义外码约束时,如果主表主码的数据类型与从表外码的数据类型不一致,以哪一个为准?

以主表主码为准。

相关推荐
桀桀桀桀桀桀6 分钟前
数据库中的用户管理和权限管理
数据库·mysql
passer__jw76715 分钟前
【LeetCode】【算法】283. 移动零
数据结构·算法·leetcode
Ocean☾21 分钟前
前端基础-html-注册界面
前端·算法·html
顶呱呱程序29 分钟前
2-143 基于matlab-GUI的脉冲响应不变法实现音频滤波功能
算法·matlab·音视频·matlab-gui·音频滤波·脉冲响应不变法
lzhlizihang1 小时前
【Hive sql 面试题】求出各类型专利top 10申请人,以及对应的专利申请数(难)
大数据·hive·sql·面试题
爱吃生蚝的于勒1 小时前
深入学习指针(5)!!!!!!!!!!!!!!!
c语言·开发语言·数据结构·学习·计算机网络·算法
羊小猪~~1 小时前
数据结构C语言描述2(图文结合)--有头单链表,无头单链表(两种方法),链表反转、有序链表构建、排序等操作,考研可看
c语言·数据结构·c++·考研·算法·链表·visual studio
王哈哈^_^1 小时前
【数据集】【YOLO】【VOC】目标检测数据集,查找数据集,yolo目标检测算法详细实战训练步骤!
人工智能·深度学习·算法·yolo·目标检测·计算机视觉·pyqt
星沁城1 小时前
240. 搜索二维矩阵 II
java·线性代数·算法·leetcode·矩阵
脉牛杂德2 小时前
多项式加法——C语言
数据结构·c++·算法