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
)

MySQL-约束练习题_第1张图片

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

#方式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

你可能感兴趣的:(MySQL,约束练习题,MySQL,sql)