Mysql技巧
# SQL技巧
# 索引
# 查看表索引
show index from <表名>
1
参数 | 说明 |
---|---|
Table | 表示创建索引的数据表名,这里是 tb_stu_info2 数据表。 |
Non_unique | 表示该索引是否是唯一索引。若不是唯一索引,则该列的值为 1;若是唯一索引,则该列的值为 0。 |
Key_name | 表示索引的名称。 |
Seq_in_index | 表示该列在索引中的位置,如果索引是单列的,则该列的值为 1;如果索引是组合索引,则该列的值为每列在索引定义中的顺序。 |
Column_name | 表示定义索引的列字段。 |
Collation | 表示列以何种顺序存储在索引中。在 MySQL 中,升序显示值“A”(升序),若显示为 NULL,则表示无分类。 |
Cardinality | 索引中唯一值数目的估计值。基数根据被存储为整数的统计数据计数,所以即使对于小型表,该值也没有必要是精确的。基数越大,当进行联合时,MySQL 使用该索引的机会就越大。 |
Sub_part | 表示列中被编入索引的字符的数量。若列只是部分被编入索引,则该列的值为被编入索引的字符的数目;若整列被编入索引,则该列的值为 NULL。 |
Packed | 指示关键字如何被压缩。若没有被压缩,值为 NULL。 |
Null | 用于显示索引列中是否包含 NULL。若列含有 NULL,该列的值为 YES。若没有,则该列的值为 NO。 |
Index_type | 显示索引使用的类型和方法(BTREE、FULLTEXT、HASH、RTREE)。 |
Comment | 显示评注。 |
# 主键索引
ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )
1
# 唯一索引
ALTER TABLE `table_name` ADD UNIQUE (`column`)
CREATE UNIQUE INDEX indexName ON tableName(tableColumns(length))
## 联合唯一索引
alter table t_aa add unique index(aa,bb)
1
2
3
4
5
6
2
3
4
5
6
# 普通索引
ALTER TABLE <表名> ADD INDEX idx_字段名(字段名)
CREATE INDEX <索引名> ON <表名> (<字段名>(<长度>)) ##如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB 和 TEXT 类型,必须指定length
1
2
3
2
3
# 联合索引
ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )
1
# 全文索引
ALTER TABLE `table_name` ADD FULLTEXT ( `column`)
1
# 删除索引
ALTER TABLE [表名] DROP INDEX [索引名];
1
# 使用强制索引
select * from salaries force index(idx_emp_no) where emp_no = 10005
1
# 字段
# 添加字段
## 在末尾添加字段
ALTER TABLE <表名> ADD <新字段名><数据类型>[约束条件]
ALTER TABLE student ADD age INT(4) COMMENT '注释内容';
## 在开头添加字段
ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] FIRST;
ALTER TABLE student ADD stuId INT(4) COMMENT '注释内容'FIRST;
##在中间位置添加字段
ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] [AFTER] <已经存在的字段名>
ALTER TABLE student ADD stuno bit(1) DEFAULT b'1' COMMENT '注释' AFTER name
##添加默认值
alter table user add COLUMN new1 VARCHAR(20) DEFAULT NULL; //增加一个字段,默认为空
alter table user add COLUMN new2 VARCHAR(20) NOT NULL; //增加一个字段,默认不能为空
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 修改字段
alter table users modify name varchar(20)not null comment ‘用户名’;
1
# 删除字段
alter table car_evidence drop column `unit_name`
1
上次更新: 2022/12/17, 13:37:51