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

以主表主码为准。

相关推荐
Emilia486.31 分钟前
八大排序算法
算法·排序算法
一只小bit1 小时前
MySQL 索引:从聚簇到普通索引,如何加快查询效率?
数据库·mysql·oracle
blammmp1 小时前
算法专题十九:记忆化搜索(暴搜->记忆化搜索)
算法·深度优先·记忆化搜索
MicroTech20251 小时前
边缘智能的创新:MLGO微算法科技推出基于QoS感知的边缘大模型自适应拆分推理编排技术
科技·算法·ai
王哈哈^_^3 小时前
【数据集】【YOLO】目标检测游泳数据集 4481 张,溺水数据集,YOLO河道、海滩游泳识别算法实战训练教程。
人工智能·算法·yolo·目标检测·计算机视觉·分类·视觉检测
巴里巴气3 小时前
第73题 矩阵置零
线性代数·算法·矩阵
洛克大航海3 小时前
解锁 PySpark SQL 的强大功能:有关 App Store 数据的端到端教程
linux·数据库·sql·pyspark sql
voice6704 小时前
密码学实验二
算法·密码学·哈希算法
Blossom.1185 小时前
把AI“编”进草垫:1KB决策树让宠物垫自己报「如厕记录」
java·人工智能·python·算法·决策树·机器学习·宠物
寂静山林5 小时前
UVa 10989 Bomb Divide and Conquer
算法