全部笔记
本文记录了学习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