文章目录
数据库DDL (Data Definition Language)是用于定义和管理数据库结构的语言,包含创建、修改、删除****数据库及表等核心操作。
DDL---数据库操作
查询
查询所有数据库
SHOW DATABASES;-- :列出当前数据库服务器中所有可用的数据库名称。
查询当前数据库
SELECT DATABASE(); -- 返回当前会话正在使用的数据库名称(即当前默认数据库)。
创建
CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];
| 部分 | 说明 |
|---|---|
CREATE DATABASE |
创建一个新数据库 |
IF NOT EXISTS |
可选 。如果数据库已存在,不报错,直接跳过。强烈建议加上,避免重复执行时报错。 |
| 数据库名 | 要创建的数据库名称(如 my_shop、blog_db)。建议使用字母、数字、下划线,避免特殊字符或中文。 |
DEFAULT CHARACTER 字符集 |
指定默认字符集,例如 utf8mb4(推荐) |
COLLATE |
指定排序规则,例如 utf8mb4_unicode_ci 或 utf8mb4_general_ci |
删除
DROP DATABASE [IF EXISTS] 数据库名;
|-------------|---------------------------------|
| IF EXISTS | 如果数据库不存在,加上IF EXISTS不报错。否则报错。 |
使用
USE 数据库名;-- 数据库服务器中有多个数据库,选中当前操纵的数据库
DDL---表操作---创建
查询
查询当前数据库所有表
SHOW TABLES;-- 解释:查询当前数据库所有表。
查询表结构
DESC(DESCRIBE) 表名;
查询指定表的创建语句
SHOW CREATE TABLE 表名;
创建
CREATE TABLE 表名(
字段1 字段1类型 [COMMENT 字段1注释],
字段2 字段2类型 [COMMENT 字段1注释],
字段3 字段3类型 [COMMENT 字段1注释],
...
字段n 字段n类型 [COMMENT 字段1注释]
)[COMMENT 表注释];
注意:[....]为可选择参数,最后一个字段后面不要加逗号。
MySQL中的数据类型
MySQL中的数据库类型有很多,主要分为三类:数值类型、字符串类型、日期时间类型。
数值类型
| 类型 | 字节数 | 有符号(Signed)范围 | 无符号(Unsigned)范围 | 描述 |
|---|---|---|---|---|
TINYINT |
1 | − |
0 ~ |
小整数值 |
SMALLINT |
2 | − |
0 ~ |
小整数值 |
MEDIUMINT |
3 | − |
0 ~ |
大整数值 |
INT或INTEGER |
4 | − |
0 ~ |
大整数值 |
BIGINT |
8 | − |
0 ~ |
极大整数值 |
| FLOAT | 4 | (-3.402823466E+38~3.402823466351E+38) | 0 和 (1.175494351E~ 38~3.402823466E+38) | 单精度浮点值 |
| DOUBLE | 8 | ±1.7976931348623157E±308 | 0和(2.2250738585072014 E-308~1.7976931348623157 E + 308) | 双精度浮点值 |
| DECTMAT | 依赖于M(精度)和D(标度)的值 | 依赖于M(精度)D(标度)的值 | 小数值(精确认点数) |
字符串类型
| 类型名称 | 最大大小(字节) | 描述 |
|---|---|---|
CHAR(M) |
M的范围:0~255字节 | 定长字符串。性能高 |
VARCHAR(M) |
M的范围:0~65535 | 变长字符串,性能较差,需要根据内容来计算所占的空间 |
TINYBLOB |
0~255 字节 | 不超过255个字符的二进制 |
TINYTEXT |
0~255 字节 | 短文本字符串 |
BLOB |
0~65,535 字节 | 二进制形式的长文本数据 |
TEXT |
0~65,535 字节 | 长文本数据 |
MEDIUMBLOB |
0~16,777,215 字节 | 二进制形式的中等长度文本数据 |
MEDIUMTEXT |
0~16,777,215 字节 | 中等长度文本数据 |
LONGBLOB |
0~4,294,967,295 字节 | 二进制形式的极大文本数据 |
LONGTEXT |
0~4,294,967,295 字节 | 极大文本数据 |
日期时间类型
| 类型名称 | 大小(字节) | 范围 | 格式 | 描述 |
|---|---|---|---|---|
DATE |
3 | '1000-01-01' 到 '9999-12-31' |
YYYY-MM-DD |
仅存储日期,不包含时间部分。 |
TIME |
3 | '-838:59:59' 到 '838:59:59' |
HH:MM:SS 或 -HH:MM:SS |
日期值或持续时间 |
YEAR |
1 | 1901 到 2155 |
YYYY(四位) |
仅存储年份 |
DATETIME |
8 | '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59' |
YYYY-MM-DD HH:MM:SS |
混合日期和时间 |
TIMESTAMP |
4 | '1970-01-01 00:00:01' UTC 到 '2038-01-19 03:14:07' UTC |
YYYY-MM-DD HH:MM:SS |
混合日期和时间值,时间戳 |
小案例

sql
create table emp(
id int COMMENT '编号',
workno VARCHAR(10) COMMENT '工号',
name VARCHAR(10) COMMENT'姓名',
gender char(1) COMMENT '性别',
age TINYINT UNSIGNED COMMENT '年龄', -- 无符号整数
idcard char(18) COMMENT '身份证号',
entrydata date COMMENT '入职年龄'
)COMMENT '员工表';
desc emp; -- 查看表结构
DDL---表操作---修改(结构)
添加字段
ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释][约束];
例子:为emp表增加一个新字段"昵称"为nickname,类型为varchar(20)
sql
ALTER table emp ADD nickname VARCHAR(20) COMMENT '昵称';
desc emp; -- 查看表结构
修改字段
修改数据类型
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
修改字段名和字段类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度)[COMMENT 注释][约束];
例子:将emp表的nichname 字段修改username, 类型为varchar(30);
sql
ALTER table emp CHANGE nickname username VARCHAR(30);
desc emp; -- 查看表结构
删除字段
ALTER TABLE 表名 DROP 字段名;
例子:将emp表的字段username 删除
sql
ALTER table emp drop username;
desc emp; -- 查看表结构
修改表名
ALTER TABLE 表名 RENAME TO 新表名;
例子:将emp表的表名修改为employee.
sql
ALTER TABLE emp RENAME TO employee;
desc employee;
删除
删除表
DROP TABLE [IF EXISTS] 表名;
删除指定表,并创建创建该表
TRUNCATE TABLE 表名;
注意:在删除表时,表中的全部数据也会被删除。