文章目录

  • 简介
  • 数据库
    • 常用
  • 数据表
    • 常用
  • 索引
    • 常用
  • 数据类型存储范围
  • 参考文献

简介

DDL(数据定义语言),用于创建或删除数据库和数据库中表。包括:CREATE、DROP、ALTER




数据库

常用

使用数据库

USE dbname;

MySQL 8 之后字符集默认为这个,utf8mb4 可存表情




创建数据库

CREATE DATABASE dbname;
CREATE DATABASE `xxx` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';




删除数据库(会删库和表,慎重!!!

DROP DATABASE dbname;




MySQL ALTER DATABASE Statement




查询所有数据库

SHOW DATABASES;

SELECT * FROM information_schema.`SCHEMATA`;




数据表

常用

字段

类型长度小数点不是 null注释默认值自动递增
idint1101ID
uuidvarchar320唯一识别码
project_idint110项目ID|fk:库.表.字段名
pricedecimal122价格|fk:库.表.字段名
role_idstext00角色IDs|fk:库.表.字段名
namevarchar2550名称EMPTY STRING
typtinyint40类型|em:1-A;2-B;0
statustinyint40启用状态em:0-关;1-开;0
md5varchar320文件MD5
create_atdatetime00创建时间
update_atdatetime00更新时间
delete_atdatetime00删除时间NULL

fk 指外键
em 指枚举
price 不涉及计算可以用varchar

树结构

类型长度不是 null注释
root_idint根结点ID
father_keyvarchar255父结点
keyvarchar255当前结点
pathvarchar2048路径
namevarchar255

key 根据根节点的 id 生成




增加表字段

ALTER TABLE xxx ADD COLUMN <字段定义>;
ALTER TABLE emp ADD COLUMN age int(3);
ALTER TABLE `product` ADD `name` varchar(255) DEFAULT NULL COMMENT '商品名' AFTER `id`;
ALTER TABLE `product` ADD `regist_date` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '登记日期' AFTER `name`;




删除数据表

DROP TABLE Product;

删除字段

ALTER TABLE xxx DROP COLUMN <字段名>;




改表名

RENAME TABLE old TO new;

改表字段

ALTER TABLE testalter_tbl MODIFY c CHAR(10);




查询所有数据表

SHOW TABLES;

SELECT * FROM information_schema.`TABLES`
WHERE TABLE_SCHEMA=DATABASE()
AND TABLE_TYPE!='VIEW';




索引

常用

索引

字段索引类型索引方法注释
UQE_id_uuid`id`,`uuid`UNIQUEBTREE
IDX_uuid`uuid`NORMALBTREE
IDX_type`type`NORMALBTREE

选项




索引

# 主键索引
ALTER TABLE `product` ADD PRIMARY KEY (`id`);
# 唯一索引
ALTER TABLE `product` ADD UNIQUE KEY (`uuid`);
# 普通索引
ALTER TABLE `product` ADD INDEX ( `name` );
# 全文索引
ALTER TABLE `product` ADD FULLTEXT ( `col` );

CREATE INDEX `IDX_sap_id` USING BTREE ON `cluster_alias` (`sap_id`);




DROP INDEX indexON `表名`;








查询某张表的索引

SHOW INDEX FROM `xxx`;

SELECT * FROM information_schema.`STATISTICS`
WHERE TABLE_SCHEMA='某个库'
AND TABLE_NAME='某张表';




数据类型存储范围

MySQL 会自动分配 tinyint(4)、smallint(6)、mediumint(9)、int(11)、bigint(20),括号里的数值只影响 Shell 的显示,与实际存储范围无关

数据类型存储字节数带符号范围不带符号范围
TINYINT1-128 ~ 1270 ~ 255
SMALLINT2-32768 ~ 327670 ~ 65535
MEDIUMINT3-8388608 ~ 83886070 ~ 16777215
INT4-2147483648 ~ 21474836470 ~ 4294967295
BIGINT8-263 ~ 263-10 ~ 264-1

TEXT的范围

数据类型字节数人类可读大小
TINYTEXT255255 B
TEXT6553564 KB
MEDIUMTEXT1677721516 MB
LONGTEXT62949672954 GB




参考文献

  1. MySQL | 菜鸟教程
  2. MySQL DDL数据操作篇(一)
  3. MySQL ALTER TABLE Statement
  4. 阿里巴巴Java开发手册
  5. peewee.py
  6. 一文搞懂MySQL的数据类型中长度的含义
  7. MySQL Manual Integer Types
  8. Which MySQL type is most suitable for “price” column?
  9. MySql中varchar长度的设置问题
  10. MySQL 索引 | 菜鸟教程
  11. Understanding Storage Sizes for MySQL TEXT Data Types

更多推荐

MySQL常用DDL数据定义语言——创建修改删除数据库和数据库中表