3_2
MySQL深入介绍
修改列信息
-- 显示当前的数据库列表
show databases;
-- 创建数据库
create database 数据库名;
-- 选择需要使用的数据库
use 数据库名;
-- 创建表
CREATE TABLE `e_user` (
`ID` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
`T_PASSWORD` varchar(50) DEFAULT NULL,
`T_NAME` varchar(10) DEFAULT NULL
)
-- 显示表的详细信息
show create table e_user;
-- 显示表 列信息
desc e_user;
-- 显示当前数据库中的所有表名
show tables;
-- 重命名表名
-- 语法: ALTER TABLE 旧表名 RENAME TO 新表名;
alter table e_user2 rename e_user;
-- 添加列:
-- 语法: ALTER TABLE 表名 ADD COLUMN 列名 列类型;
alter table e_user add column t_age int;
alter table e_user add column t_sex varchar(2);
-- 删除列:
-- 语法: ALTER TABLE 表名 drop COLUMN 列名;
alter table e_user drop column t_sex;
-- 修改列名:
-- 语法: ALTER TABLE 表名 CHANGE 旧列名 新列名 新列类型;
alter table e_user change t_age t_age2 varchar(5);
-- 修改列属性:
-- 语法: ALTER TABLE 表名 MODIFY t_name varchar(10);
alter table e_user modify t_age2 int;
注意:只有当列只包含空值时,类型、大小都可以修改,否则修改可能不能成功。
MySQL约束
约束
什么是约束?
1.什么是约束?
1)约束是在表上强制执行的数据校验规则。
2)约束主要用于保证数据库的完整性。
3)当表中数据有相互依赖性时,可以保护相关的数据不被删除。
创建约束的时机
建表时候创建(列级约束)
建表后创建(表级约束)
约束操作
主键约束
1.主键从功能上看相当于“非空约束+唯一约束”,用来确定表中的一行数据;
2.一个表中只允许有一个主键;
3.主键字段可以是单字段或者是多字段的组合;
创建主键约束
-- 定义列级主键约束
CREATE TABLE STUDENT_TABLE
(
STUDENT_ID INT PRIMARY KEY AUTO_INCREMENT,
STUDENT_NAME VARCHAR(255)
);
--定义表级主键约束
ALTER TABLE STUDENT_TABLE
ADD PRIMARY KEY (STUDENT_ID);
删除主键约束
-- 删除主键约束
ALTER TABLE STUDENT_TABLE DROP PRIMARY KEY;
非空约束
1.非空约束属于列级约束,只能使用列级约束语法定义;
2.确保字段值不允许为空;
注意:
1)所有数据类型的值都可以是NULL。
2)空字符串不等于NULL。
3)0也不等于NULL。
创建非空约束
-- 定义列级非空约束
CREATE TABLE STUDENT_TABLE
(
STUDENT_ID INT PRIMARY KEY AUTO_INCREMENT,
STUDENT_NAME VARCHAR(255) NOT NULL
);
--定义表级非空约束
ALTER TABLE STUDENT_TABLE
MODIFY STUDENT_NAME VARCHAR(255) NOT NULL;
删除非空约束
-- 删除非空约束
ALTER TABLE STUDENT_TABLE
MODIFY STUDENT_NAME VARCHAR(255) NULL;
唯一约束
1.唯一性约束条件保证字段或者字段组合不会出现重复值;
2.可以对多列建立唯一约束。
创建唯一约束
-- 建立列级唯一约束
CREATE TABLE STUDENT_TABLE
(
STUDENT_ID INT PRIMARY KEY AUTO_INCREMENT,
STUDENT_NAME VARCHAR(255) UNIQUE
);
-- 建立表级唯一约束
ALTER TABLE STUDENT_TABLE
ADD UNIQUE KEY STUDENT_NAME_UNIQUE(STUDENT_NAME);
STUDENT_NAME_UNIQUE是一个自定义的唯一约束名称,方便管理这个约束。
-- 对多列添加唯一索引
ALTER TABLE STUDENT_TABLE
ADD UNIQUE(FIRST_NAME, LAST_NAME);
删除唯一约束
-- 删除唯一约束
ALTER TABLE STUDENT_TABLE
DROP INDEX STUDENT_NAME_UNIQUE;
外键约束
1.外键是构建于一个表的两个字段或者两个表的两个字段之间的关系;
2.外键确保了相关的两个字段的两个关系:
1)子(从)表外键列的值必须在主表参照列值的范围内,或者为空(也可以加非空约束,强制不允许为空);
2)当主表的记录被子表参照时,主表记录不允许被删除;
3.外键参照的只能是主表主键或者唯一键,保证子表记录可以准确定位到被参照的记录;
添加外键约束的语法:
CREATE TABLE t_dept(
dept_id INT PRIMARY KEY,
NAME VARCHAR(18),
description VARCHAR(255)
);
CREATE TABLE t_employee(
employee_id INT PRIMARY KEY,
NAME VARCHAR(18),
gender VARCHAR(10),
dept_id INT REFERENCES t_dept(dept_id),
address VARCHAR(255)
);
或者:
CREATE TABLE t_employee(
employee_id INT PRIMARY KEY,
NAME VARCHAR(18),
gender VARCHAR(10),
dept_id INT,
address VARCHAR(255),
CONSTRAINT FOREIGN KEY t_employee (dept_id) REFERENCES t_dept(dept_id)
);
创建外键约束
CREATE TABLE SCHOOL_TABLE
(
SCHOOL_ID INT PRIMARY KEY AUTO_INCREMENT,
SCHOOL_NAME VARCHAR(255)
);
-- 定义列级外键约束
CREATE TABLE STUDENT_TABLE
(
STUDENT_ID INT PRIMARY KEY AUTO_INCREMENT,
STUDENT_NAME VARCHAR(255),
SCHOOL_ID INT,
FOREIGN KEY (SCHOOL_ID) REFERENCES SCHOOL_TABLE(SCHOOL_ID) ON DELETE CASCADE
);
-- 定义表级外键约束
ALTER TABLE STUDENT_TABLE
ADD CONSTRAINT FK_STUDENT_SCHOOL_ID FOREIGN KEY(SCHOOL_ID) REFERENCES SCHOOL_TABLE(SCHOOL_ID);
注意:
ON DELETE CASCADE:当主表记录被删除,从表中的对应记录也会被删除。
ON UPDATE CANSCADE:当主表记录被更新,从表中的对应记录也会被更新。
ON DELETE SET NULL:当主表记录被删除,从表中的对应记录的外键列会被设置为NULL。
ON UPDATE SET NULL:当主表记录被更新,从表中的对应记录也会被会被设置为NULL。
删除外键约束
-- 删除外键
ALTER TABLE STUDENT_TABLE
DROP FOREIGN KEY FK_STUDENT_SCHOOL_ID;