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
  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值