DDL语言:逻辑库、数据表、视图、索引
DML语言: 添加、修改、删除、查询
DCL语言:用户、权限、事务
以下是DDL命令:
创建、修改、删除数据库
# 使用数据库
use test01;
# 创建表和字段
CREATE TABLE student(
id INT UNSIGNED PRIMARY KEY,
name VARCHAR(20) NOT NULL,
sex CHAR(1) NOT NULL,
birthday DATE NOT NULL,
tel CHAR(11) NOT NULL,
remark VARCHAR(200)
);
INSERT INTO student VALUES(1,"麦志坚","男","2000-01-01","18000000000",NULL); # 插入数据
SHOW TABLES; # 查看表
DESC student; # 查询表的结构
SHOW CREATE TABLE student; # 查询创建表单的语句
DROP TABLE student; # 删除表单
修改表单
# 修改表单,增加字段
alter TABLE student
ADD address VARCHAR(200) NOT NULL,
add home_tel CHAR(11) not null;
# 修改表单,修改字段类型
alter table student
MODIFY home_tel VARCHAR(20) NOT NULL;
# 修改表单,修改字段名称
alter table student
CHANGE address home_addr VARCHAR(200) not null;
# 修改表单,删除字段
alter table student
DROP home_addr,
DROP home_tel;
主键自动赋值,设置唯一约束,设置布尔默认值
# 创建表单
create table t_teacher(
id int unsigned PRIMARY KEY Auto_increment,
name VARCHAR(20) not null,
tel char(11) not null UNIQUE,
);
alter TABLE t_teacher
ADD married BOOLEAN NOT NULL DEFAULT FALSE;
创建外键约束实例(注意理解原理即可,外键约束一旦闭环,任何一张表都无法删除,所以不推荐)
# 父表
create table t_department(
department_ID INT UNSIGNED PRIMARY KEY,
department_name VARCHAR(20) not null UNIQUE,
department_tel VARCHAR(12) not null
);
# 子表
create table t_employee(
employee_ID int UNSIGNED PRIMARY KEY,
employee_name VARCHAR(20) not null,
sex ENUM("男","女") not null,
deparment_ID int UNSIGNED,
hire_date Date not null,
# 设置外键 关联父表
FOREIGN key(deparment_ID) REFERENCES t_department(department_ID)
);
索引使用原则
- 数据量很大,而且经常被查询的数据表可以设置索引(千百条数据或日志无需使用)
- 索引只添加在经常被用作检索添加的字段上面(如名字、部门、手机)
- 不要在大字段上创建索引(如超过50个字符串)
创建、删除、查看索引
create table t_message(
id int UNSIGNED PRIMARY key Auto_increment,
content VARCHAR(200) not null,
type enum("公告","通报","个人通知") not null,
create_time TIMESTAMP NOT NULL,
# 创建索引
INDEX idx_type(type)
);
# 删除索引
drop index idx_type on t_message;
# 查看索引
show INDEX FROM t_message;
# 创建索引方法1
CREATE index idx_type on t_message(type);
# 创建索引方法2
ALTER TABLE t_message ADD INDEX idx_type(type);