一、示例sql:
CREATE TABLE test_index(
id BIGINT auto_increment COMMENT '主键',
PRIMARY key(id) COMMENT '主键',
user_name VARCHAR(64) not null COMMENT '用户名',
nick_name VARCHAR(64) not null COMMENT '姓名',
INDEX name(user_name,nick_name) COMMENT '用户名称',
age INT(3) not null COMMENT '年龄',
`code` VARCHAR(21) not null COMMENT '唯一代码',
UNIQUE(`code`) COMMENT '唯一代码',
phone VARCHAR(11) COMMENT '联系电话',
create_by BIGINT(64) not null COMMENT '创建者',
create_time datetime not null COMMENT '创建时间'
)COMMENT = '测试索引表',ENGINE = InnoDB;
二、语句解释:
1.创建表:test_index的表
CREATE TABLE test_index
2.自增字段:id为字段,【auto_increment】从0到N依次递增
id BIGINT auto_increment,
3.添加字段注释:【COMMENT '主键'】,COMMENT可小写,MySQL自有语句关键词基本大小写不影响,如:SELECT/select、FROM/from、INSERT/insert......等;但表名是否大小写,看自己对mysql的设置
id BIGINT auto_increment COMMENT '主键',
4.字段类型:常用类型:int、bigint、tinyint、char、varchar、date、datetime、time、timestamp、text、blob、longblob...暂举这些。
4.1:字段类型介绍:
类型 | 范围/使用介绍 | 常用场景 |
tinyint | -128~127,若设置为无符号,则为:0~127 | 状态字段 |
int | -2,147,483,648~2,147,483,647 | 年龄、小表id(主键) |
bigint | -9223372036854775808~9223372036854775807 | id(主键) |
decimal | decimal(M,D),M为整数部分最大位数,D为小数部分位数(超出会四舍五入) | 金额 |
char | char(N),N为字符长度,不足会补空格,超出会报错,所以不确定的情况下,建议varchar,避免查询出问题 | 状态字段、编码字段 |
varchar | varchar(N),N为字符长度,不足不会补空格,但是超出会报错 | 字典代码 |
time |
| 时间 |
timestamp |
| 日期时间 |
date |
| 日期 |
datetime |
| 日期时间 |
TEXT 和 BLOB(来源:通义千问)
- TEXT 和 BLOB 都是用来存储较大的数据块,但是
TEXT
用于存储文本数据,而BLOB
(Binary Large Object)用于存储二进制数据。 TEXT
列有字符集属性,这意味着它们可以支持多语言和特定的排序规则,而BLOB
列则没有字符集属性,它们只按照字节的数值值进行排序和比较。
5.字段长度:如:VARCHAR(64) 、INT(3) ,是设置的该字段存储的字段长度,VARCHAR(64)表示该字段可存储64个字符,网上有文章说有以字节限制的版本(5以下),但笔者从业未曾使用过,所以不做赘述。
user_name VARCHAR(64) not null COMMENT '用户名',
nick_name VARCHAR(64) not null COMMENT '姓名',
age INT(3) not null COMMENT '年龄',
6、联合索引:将user_name,nick_name建立一个用户名称的索引(这里只是为了便于自己玩一次索引)
INDEX name(user_name,nick_name) COMMENT '用户名称',
7.建立二级唯一索引:这里我的一级索引为主键,所以code为辅助索引,即二级索引
UNIQUE(`code`) COMMENT '唯一代码'
8.表注释:
COMMENT = '测试索引表'
9.表引擎选择:
ENGINE = InnoDB;