一、DDL是什么?
DDL是用于定义和管理数据库的结构,包括库、表、索引、视图等数据库对象的创建、修改和删除。
DDL不涉及对数据的操作,而是关注数据库的结构和元数据(容器)。
DDL关键字: CREATE--用于创建数据库、表、索引、视图等
ALTER--用于修改数据库对象的结构,如修改表结构、添加列、删除列等
DROP--用于删除数据库对象,如删除表、删除索引等
二、库的相关操作
1.创建库
# 创建库
CREATE DATABASE 库名;
# 判断并创建
CREATE DATABASE IF NOT EXISTS 库名;
# 创建可指定字符集或排序
CREATE DATABASE 库名 CHARACTER SET 字符集 COLLATE 校对方式;
# 查看此库的配置
SHOW VARIABLES LIKE 'character_set_database';
SHOW VARIABLES LIKE 'collation_database';
2.查看、使用库
# 查看所有库
SHOW DATABASES;
# 查看当前选中的库
SELECT DATABASE();
# 查看指定库下所有的表
SHOW TABLES FROM 库名;
# 查看当前库的信息
SHOW CREATE DATABASE 库名;
# 切换库/选中库
USE 库名;
3.修改库信息
# 修改字符集
ALTER DATABASE 库名 CHARACTER SET 字符集;
# 修改校对方式(一般要与字符集对应)
ALTER DATABASE 库名 COLLATE 校对方式;
注:没有库的重命名,办法:创建新库后导入数据。
4.删除库
# 删除
DROP DATABASE 库名;
# 删除如果库存在
DROP DATABASE IF EXISTS 库名;
三、表的相关操作
1.表的创建
CREATE TABLE 表名(
列名 类型 [约束] COMMENT '注释',
列名 类型 [约束] COMMENT '注释',
列名 类型 [约束] COMMENT '注释' #注意最后一行不加逗号
)CHARSET='utf8mb4' COMMENT '注释';
约束是什么: [[4.约束]]
1.整数类型:
TINYINT 1字节
SMALLINT 2字节
MEDIUMINT 3字节
INT 4字节
BIGINT 8字节
注:在后面加 unsigned 可声明为无符号
2.浮点类型:可能失真
FLOAT(M,D) 4字节 M最大24 ,D最大8
DOUBLE(M,D) 8字节 M最大53 ,D最大30
定点数: 不会失真
DECIMAL(M,D) 动态 M最大65 ,D最大30
注:unsigned 不会扩大范围,只会砍掉负数
存入的数据小数位数多了会四舍五入
3.字符类型:
CHAR(M) 定长,存入不够补空格,读数据会去除右空格 长度0-255字节
VARVHAR(M) 可变长度,但始终多一字节记录是否为空,可读空格 长度<65535字节
注:每行不可超过65535字节,每列也不可超过65535字节
如果必须超过,用TEXT类型(不建议),建议-存出文件地址,IO流读文件,提高效率。
4.时间类型:
YEAR 1字节 YYYY 1901-2055
TIME 3字节 HH:MM:SS
DATE 3字节 YY-MM-DD 1000-9999
DATETIME 8字节 YY-MM-DD HH:MM:SS 1000-9999
TIMESTAMP 4字节 YY-MM-DD HH:MM:SS 1907-2038
注意: 插入时间自动初始化:DEFAULT CURRENT_TIMESTAMP
插入与修改都自动: DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
2.表和列的修改
# 添加列
ALTER TABLE 表名 ADD 列名 类型 [FIRST|AFTER 存在的列名];
# 修改列名及类型
ALTER TABLE 表名 CHANGE 原列 新列名 新类型 [FIRST|AFTER 存在的列名];
# 修改列类型
ALTER TABLE 表名 MODIFY 列名 新类型 [FIRST|AFTER 存在的列名];
# 删除列
ALTER TABLE 表名 DROP 列名;
# 修改表名
ALTER TABLE 表名 RENAME 表名;
3.表的删除与清空
# 表的删除
DROP TABLE IF EXISTS 表名;
# 表的清空(这个对比DELETE重一些,相关数据也会删除,例如id的最大值也会删除)
TRUNCATE TABLE 表名;