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

以主表主码为准。

相关推荐
真真假假々21 分钟前
MySQL和ADSDB
数据库·mysql
秦老师Q23 分钟前
MySQL第二章 sql约束与sql数据类型
数据库·sql·mysql
不是二师兄的八戒27 分钟前
mysql in查询大数据量业务无法避免情境下优化
数据库·mysql
苹果醋327 分钟前
vue3 在哪些方便做了性能提升?
java·运维·spring boot·mysql·nginx
gkdpjj1 小时前
C++优选算法十四 优先级队列(堆)
开发语言·数据结构·c++·算法
几窗花鸢1 小时前
力扣面试经典 150(上)
数据结构·c++·算法·leetcode
lu_rong_qq2 小时前
决策树 DecisionTreeClassifier() 模型参数介绍
算法·决策树·机器学习
LNTON羚通8 小时前
摄像机视频分析软件下载LiteAIServer视频智能分析平台玩手机打电话检测算法技术的实现
算法·目标检测·音视频·监控·视频监控
mqiqe9 小时前
Python MySQL通过Binlog 获取变更记录 恢复数据
开发语言·python·mysql
工业甲酰苯胺9 小时前
MySQL 主从复制之多线程复制
android·mysql·adb