MySQL-约束练习题

约束练习题

全部笔记🔗
本文记录了学习MySQL的笔记,其中课件资源全部来源于尚硅谷,详细信息请移步b站
练习一

#练习一的条件:
CREATE DATABASE test04_emp;
USE test04_emp;

CREATE TABLE emp2(
id INT,
emp_name VARCHAR(15)
);

CREATE TABLE dept2(
id INT, 
dept_name VARCHAR(15)
)

1.向表emp2的ID列中添加PRIMARY KEY约束

#给ID添加主键,重命名也是没有用的,名字始终是PRIMARY KEY
ALTER TABLE emp2
ADD CONSTRAINT pk_emp2_id PRIMARY KEY(id)

2.向表dept2中的ID列中添加PRIMARY KEY约束

#给ID添加主键,重命名也是没有用的,名字始终是PRIMARY KEY
ALTER TABLE emp2
ADD CONSTRAINT pk_emp2_id PRIMARY KEY(id)

3.向emp2中添加列dept_id, 定义主键约束,与之相关联的列是dept2表中的id列

好像听说尽量不使用外键,因此外键章节我也就跳过了,附上老师的答案

ALTER TABLE emp2
ADD dept_id INT

ALTER TABLE emp2
ADD CONSTRAINT fk_emp2_deptid FOREIGN KEY(dept_id) REFERENCES dept2(id)

练习2

#下面是题目的背景
USE test01_library

CREATE TABLE books(
id INT, 
`name` VARCHAR(50),
`authors` VARCHAR(100),
price FLOAT,
pubdate YEAR,
note VARCHAR(100),
num INT
)

请添加图片描述

根据上面给出进行给对应的字段添加约束

#方式1, 分两次进行约束的添加
ALTER TABLE books
ADD PRIMARY KEY (id);

ALTER TABLE books
MODIFY id INT AUTO_INCREMENT

#方式2, 直接添加两个约束
ALTER TABLE books
MODIFY id INT PRIMARY KEY AUTO_INCREMENT
#给除了id外的字段设置非空约束(因为id有主键约束、已经设定好非空约束了)
ALTER TABLE books
MODIFY name VARCHAR(50) NOT NULL

ALTER TABLE books
MODIFY AUTHORS VARCHAR(100) NOT NULL

ALTER TABLE books
MODIFY price FLOAT NOT NULL

ALTER TABLE books
MODIFY pubdate YEAR NOT NULL

ALTER TABLE books
MODIFY num INT NOT NULL

练习3

请添加图片描述

创建数据库test04_company

CREATE DATABASE if NOT EXISTS test_company CHARACTER SET 'utf8'

USE test_company 

根据图片中的内容设定表的约束

 CREATE TABLE IF NOT EXISTS offices(
officeCode INT(10)  PRIMARY KEY ,
city VARCHAR(50) NOT NULL,
address VARCHAR(50),
country VARCHAR(50) NOT NULL,
postalCode VARCHAR(15) UNIQUE ##唯一性约束,列级约束,我们也可以在下面添加
#也可以用下面的表级添加唯一性约束
#CONSTRAINT uni_off_poscode UNIQUE (postalCode)
)

创建表employees

CREATE TABLE employees(
employeeNumber INT PRIMARY KEY AUTO_INCREMENT,
lastName VARCHAR(50) NOT NULL,
firstName VARCHAR(50) NOT NULL,
mobile VARCHAR(25) UNIQUE,
officeCode INT(10)  NOT NULL,
jobTitle VARCHAR(50) NOT NULL,
birth DATETIME NOT NULL,
note VARCHAR(255),
sex VARCHAR(5),
CONSTRAINT fk_emp_offcode FOREIGN KEY(officeCode) REFERENCES offices(officeCode)

)

将表employees的mobile字段修改到officeCode字段的后面

ALTER TABLE employees
MODIFY mobile VARCHAR(25) AFTER officeCode 

将表employees的birth字段改名为employee_birth

ALTER TABLE employees
CHANGE birth employee_birth DATETIME

修改sex字段,数据类型为CHAR(1),非空约束

ALTER TABLE employees
MODIFY sex CHAR(1) NOT NULL

删除字段note

ALTER TABLE employees
DROP COLUMN note

增加字段名为favoriate_activity, 数据类型为VARCHAR(100)

ALTER TABLE employees
ADD favoriate_activity VARCHAR(100)

将表employee名称修改为employees_info

RENAME TABLE employees
TO employees_info
第4章 数据库设计 习题 一、选择题 1.在数据库设计中,用E- R图来描述信息结构但不涉及信息在计算机中的表示,它是数据库设计的( )阶段。 A.需求分析 B.概念设计 C.逻辑设计 D.物理设计 2.在关系数据库设计中,设计关系模式是( )的任务。 A.需求分析阶段 B.概念设计阶段 C.逻辑设计阶段 D.物理设计阶段 3.数据库物理设计完成后,进入数据库实施阶段,下列各项中不属于实施阶段的工作是 ( )。 A.建立数据库 B.扩充功能 C.加载数据 D.系统调试 4.在数据库的概念设计中,最常用的数据模型是( )。 A.形象模型 B.物理模型 C.逻辑模型 D.实体联系模型 5.从E- R模型关系向关系模型转换时,一个M N联系转换为关系模型时,该关系模式的关键字是 ( ) 。 A.M端实体的关键字 B.N端实体的关键字 C.M端实体关键字与N端实体关键字组合 D.重新选取其他属性 6.当局部E-R图合并成全局E-R图时可能出现冲突,不属于合并冲突的是( )。 A.属性冲突 B.语法冲突 C.结构冲突 D.命名冲突 7.概念模型独立于( )。 A.E-R模型 B.硬件设备和DBMS C.操作系统和DBMS D.DBMS 二、填空题 1.数据库设计的几个步骤依次是( )、( )、( )、( )、( )、( )。 2."为哪些表,在哪些字段上,建立什么样的索引"这一设计内容应该属于数据库( )阶段。 3.在设计分E- R图时,由于各个子系统分别有不同的应用,而且往往是由不同的设计人员设计的,所以 各个分E-R图之间难免有不一致的地方,这些冲突主要有( )、 ( )和( ) 三类。 三、问答题 1.按照数据库设计六个阶段的先后顺序,简述各阶段的主要任务。 2.什么是数据库的概念结构?简述数据库概念结构设计的步骤。 3.什么是数据库的逻辑结构?试述数据库逻辑结构设计的步骤。 4.试述数据库物理设计的内容和步骤。 四、设计题 1.某工厂生产若干产品,每种产品由不同的零件组成,有的零件可用在不同的产品上。 这些零件由不同的原材料制成,不同零件所用的材料可以相同。这些零件按所属的不同 产品分别放在仓库中,原材料按照类别放在若干仓库中。请用 E-R 图画出此工厂产品、零件、材料、仓库的概念模型。 2.现要设计一个图书馆数据库,此数据库中对每个借阅者保存读者记录,包括:读者号 ,姓名,地址,性别,年龄,单位。对每本书存有:书号,书名,作者,出版社。对每 本被借出的书存有读者号、借出日期和应还日期。要求:给出 E-R 图,再将其转换为关系模型。 3.设有如下实体: 学生:学号、姓名、性别、年龄、单位 课程:课程号、课程名、开课单位 教师:教师号、姓名、性别、职称、单位 单位:单位名称、电话、领导者教师号 上述实体中存在如下联系: (1)一个学生可选修多门课程,一门课程可为多个学生选修; (2)一个教师可讲授多门课程,一门课程可为多个教师讲授; (3)一个单位可有多个教师,一个教师只能属于一个单位。 请完成如下工作: (1)设计全局E-R图。 (2)将该全局E-R图转换为关系模型。 ----------------------- mysql数据库设计-习题全文共2页,当前为第1页。 mysql数据库设计-习题全文共2页,当前为第2页。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值