创建表
简单语法:
CREATE TABLE 表名(
列名 列类型,
列名 列类型
);
固定格式:
create table tb_name(
字段1 类型 COMMENT‘学生姓名’,
字段2 类型,
字段3 类型,
..........
)engine=innodb [default] [character set utf8mb4 collate utf8mb4_090_ai_ci]
详解:
标准的建表(table)语法(列定义之间以英文逗号,隔开):
数据表的每行称为一条记录(record),每一列称为一个字段(field)
COMMENT --- 用来注释
ENGINE --- 存储机制
案例
CREATE TABLE `g_u` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`g_id` int(11) NOT NULL COMMENT '商品id',
u_id` int(11) NOT NULL COMMENT '用户id',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2800001 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
AUTO_INCREMENT — 自动递增
AUTO_INCREMENT=2800001 — 最大不超过2800001
CHARSET=utf8mb4 — 指定字符集为uft8mb4
COLLATE=utf8mb4_0900_ai_ci — 指定校队规则为utf8mb4_0900_ai_ci
NOT NULL — 表明不能为空
数据类型
在 MySQL 中,有三种主要的类型:文本、数字和日期/时间类型
文本类型
文本型
TINYTEXT — 小的文本 — 255个字符
TEXT — 65,535个字符
MEDIUMTEXT — 中等文本 — 16,777,215个字符
LONGTEXT — 大文本 — 4,294,967,295 个字符
字符串型
char(length)— 保存固定长度的字符串 — 255 个字符
varchar(length)— 保存可变长度的字符串 — 255 个字符 ---- 超过则转换为text类型
二进制文本
BLOB — 65,535个字节
MEDIUMBLOB — 16,777,215个字节
LONGBLOB — 4,294,967,295 个字节
枚举型
ENUM(a,b,c,d) — a,b,c,d中的其中一个
集合型
SET(a,b,c,d) — a;a,b;a,b,c;a,c;可以是这种包含两个或两个以上
数字类型
整数型
TINYINT(size) — -128 - 127 — 1byte
SMALLINT(size) — -32768 - 32767 — 2byte
MEDIUMINT(size) — -8388608 - 8388607 — 3byte
INT(size) — -2147483648 - 2147483647 — 4byte
BIGINT(size) — -9223372036854775808 - 9223372036854775807 — 8byte
UNSIGNED TINYINT — 无符号位,相当于直接为正整数
浮点型
FLOAT(size,d) — size:总的位数,d:小数点后多少位
DOUBLE(size,d) — size:总的位数,d:小数点后多少位
DECIMAL — 作为字符串存储的都被类型,允许固定的小数点 — 相当于如果位数不够需要补0
Date类型
DATE()日期
格式 — YYYY-MM-DD
范围 — 从 ‘1000-01-01’ 到 ‘9999-12-31’
DATETIME() 日期和时间的组合
格式 — YYYY-MM-DD HH:MM:SS
范围 — 从’1000-01-01 00:00:00’ 到 ‘9999-12- 31 23:59:59’
TIMESTAMP() 时间戳
格式 — YYYY-MM-DD HH:MM:SS
范围 — 使用 Unix 纪元(‘1970-01-01 00:00:00’ UTC) 至 ‘2038-01-09 03:14:07’ UTC
TIME() 时间
格式 — HH:MM:SS
范围 — 支持的范围是从 ‘-838:59:59’ 到 ‘838:59:59’
YEAR() 2 位或 4 位格式的年
4 位格式所允许的值 — 1901 到 2155。
2 位格式所允许 的值 — 70 到69,表示从 1970 到 2069
案例
创建一个包含所有数据类型的表
create table multi_tb(
id int(11) comment '编号',
company_name char(6) comment '公司名称',
introduce varchar(100) comment '介绍',
content1 tinytext comment '内容1',
content2 text comment '内容2',
content3 mediumtext comment '内容3',
content4 longtext comment '内容4',
description1 blob comment '描述1',
description2 mediumblob comment '描述2',
description3 longblob comment '描述3',
iq tinyint comment '0705数据库IQ',
salary smallint comment '薪资',
five_plan mediumint comment '五年计划',
code_num bigint comment '代码量',
gender enum('f','l') comment '性别',
hobby set('A','B','C','D') comment '业余爱好',
share_price float(10,3) comment '股票价格',
temperature double(4,2) comment '温度',
amount decimal comment '数量',
birth_date date comment '出生日期',
register_date datetime comment '注册日期',
last_modify_date timestamp comment '修改日期',
time time comment '时间'
)engine=InnoDB default character set utf8mb4 collate utf8mb4_0900_ai_ci;