1.MySQL之DDL

84 阅读3分钟

一、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';

2024-11-20_21-10-13.png

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 表名;