[MySQL]DDL语句
基础命令
查询所有数据库的名称: SHOW DATABASES; 使用某个数据库: USE 数据库名; 查询当前使用的数据库的名称: SELECT database();
数据库操作
创建数据库
CREATE DATABASE [IF NOT EXISTS] 数据库名 --
-> [DEFAULT CHARCTER SET 字符集 COLLAE 排序规则字符集]
# -->表示一行代码过长,为了方便看,将后段移到第二行
其中,IF NOT EXISTS 表示,当该数据库已经存在时,则不执行创建(创建的话会报错)。
DEFAULT CHARACTER: 默认的字符集, 如果没有设置,默认是utf8
COLLATE: 排序规则, 如果没有设置,默认是: utf8_general_ci
字符集
utf8: utf8 编码最⼤字符长度为 3 字节,如果遇到 4 字节的宽字符就会插⼊异常了,比如Emoji表情,就无法使用utf8存储
utf8mb4: mb4即most bytes 4,专门用来兼容四个字节即以上的unicode, 在Mysql在5.53版本之后(推荐使用)
排序规则
utf8mb4_bin:将字符串每个字符⽤⼆进制数据编译存储,区分⼤⼩写,⽽且可以存⼆进制的内容(推荐使用)
utf8mb4_general_ci:ci即case insensitive,不区分⼤⼩写。没有实现Unicode排序规则,在遇到某些特殊语⾔或者字符集,排序结果可能不⼀致。但是,在绝⼤多数情况下,这些特殊字符的顺序并不需要那么精确。
utf8mb4_unicode_ci:是基于标准的Unicode来排序和⽐较,能够在各种语⾔之间精确排序,Unicode排序规则为了能够处理特殊字符的情况,实现了略微复杂的排序算法。
utf8mb4_general_ci是⼀个遗留的 校对规则,不⽀持扩展,它仅能够在字符之间进⾏逐个⽐较。
utf8_general_ci校对规则进⾏的⽐较速度很快,但是与使用 utf8mb4_unicode_ci的校对规则相比,比较正确性较差。
删除数据库
DROP DATABASE [IF EXISTS] 数据库名;
# 删除对应名称的数据库
IF EXISTS 和 IF NOT EXISTS :表示如果已经创建或未被创建
表操作
创建表
CREATE TABLE 表名(
列名1 数据类型,
列名2 数据类型,
....
);
给表或字段添加注释
# 给表添加注释
CREATE TABLE 表名(内容) COMMENT '注释名';
# 给字段添加注释
(
字段名 数据类型 COMMENT '注释名',
...
)
设置无符号
- 例如INT、DOUBLE类型数据往往分正负,想要设置无符号可以用'UNSIGNED'关键字
(
列名 分正负的数据类型 UNSIGNED,
)
设置主键
主键要求该字段的数据唯一
1.在创建表时设置主键
CREATE TABLE 表名(
列名 数据类型 [PRIMARY KEY],# 给单独的某一字段设置为主键
...,
[PRIMARY KEY (列名,列名,...)]在末尾设置主键,此常可以设置关联主键
)
2.在后续给已创建但是没有主键的表添加主键
ALTER TABLE 表名 ADD PRIMARY KEY (字段1,字段2,..0);
其他的表操作
# 查看当前数据库中所有表名称:
SHOW TABLES;
# 查看指定表的创建语句:
SHOW CREATE TABLE 表名;
# 查看表结构:
DESC 表名;
# 删除表:
DROP TABLE 表名;
数据类型
数值类型
类型 | 大小(byte) | 有符号(SIGNED)范围 | 无符号(UNSIGNED)范围 | 描述 |
---|---|---|---|---|
tinyint | 1 | (-128,127) | (0,255) | 小整数值 |
smallint | 2 | (-32768,32767) | (0,65535) | 大整数值 |
mediumint | 3 | (-8388608,8388607) | (0,16777215) | 大整数值 |
int | 4 | (-2147483648, 2147483647) | (0,4294967295) | 大整数值 |
bigint | 8 | (-2^63,2^63-1) | (0,2^64-1) | 大整数值 |
float | 4 | (-3.402823466 E+38, 3.402823466351 E+38) | 0 和 (1.175494351 E- 38,3.402823466 E+38) | 单精度浮点数值 |
double | 8 | (-1.7976931348623157E+308,1.7976931348623157E+308) | 0 和(2.2250738585072014E-308,1.7976931348623157E+308) | 双精度浮点数值 |
decimal | 依赖于M(精度)和D(标度) 的值 | 依赖于M(精度)和D(标度) 的值 | 小数值(精确定点数) |
字符类型
类型 | 大小(byte) | 描述 |
---|---|---|
char | 0-255 | 固定长字符串(需要指定长度) |
varchar | 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 | 时间值 |
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 至2038-01-19 03:14:07 | yyyy-MM-dd hh:mm:ss | 日期加时间 |