Mysql数据类型
数字类型
整数类型
tinyint 1字节
smallint 2字节
mediumint 3字节
int 4字节
bigint 5字节
小数类型
float 4字节
double 8字节
字符类型
char(n) 最多255
varchar(n) n取值与字符集有关
tinytext 与字符集有关,下同
text
mediumtext
longtext
日期类型
date 类型 3字节
time 类型 3字节
year 类型 1字节
datetime 类型 8字节
timestamp类型 8字节
复合类型
enum 类型 最多65535
set 集合类型 最多64
二进制类型
blob 类型
tinyblob
blob
mediumblob
longblob
binary 类型 n字节
varbinary 类型 实际占用
bit 类型 n个位
image.png
show index from 表名; 查看索引
constraint 约束名 foreign key 表A references 表B [on delete 级联选项] [on update 级联选项]
级联选项取值: cascade , set null, no action, restrict
MyISAM 引擎不支持外键
engine=存储引擎 , default charset=字符集类型, pack_keys = 压缩类型,1压缩索引中所有关键字,0取消索引中所有关键字压缩,default 字压缩索引中字符类型的关键字,如 char, varchar,text
单行注释以#开头,或--加空格,多行注释以/* */
复制表结构 1: create table 新表名 like 源表
复制表结构及数据 2: create table 新表名 select * from 源表
alter table 表名 drop 字段名
alter table 表名 add 新字段名 数据类型 [约束条件] [first|after 旧字段名]
alter tabel 表名 change 旧字段名 新字段名 数据类型
如果仅修改数据类型 alter table 表名 modify 字段名 字段类型
alter table 表名 add constraint 约束名 约束类型(字段名)
alter table person add constraint name_unique unique(name);
alter table 表名 drop primary key;
alter table 表名 drop foreign key 约束名;
alter table 表名 drop index 唯一索引;
修改表选项
alter table 表名 engine=新存储引擎类型;
alter table 表名 default charset=新的字符集;
alter table 表名 auto_increment=新的初始值;
alter table 表名 pake_keys=新的压缩类型;
rename talbe 旧表名 to 新表名;
alter table 旧表名 rename 新表名;
drop talbeNmae;
truncate tableName;
对于MyISAM 索引数据存放在 MYI索引文件中
对于InnoDB 索引数据存放在表空间文件中,可以是共享表空间也可能是独立表空间
索引关键字选取原则
1:表的某个字段值的离散度越高,越适合作为索引关键字。
如主键,唯一约束
2:占用存储空间少的字段更适合作为索引关键字。
3:存储空间固定的字段更适合作索引
4:where子句经常使用的字段,分组或排序字段,两个表连接字段更适合作索引
5:更新频繁的字段不适合作索引,不出现在where子句中的字段不适合作索引
6:最左前缀原则
7:尽量使用前缀索引
主键约束,唯一约束,默认值约束,检查约束,非空约束,外键约束
索引分为:
聚簇索引,主索引,唯一性索引,普通索引,复合索引等,MYSQL还支持全文索引
create [unique | fulltext] index 索引名 on 表名(字段名[(长度)]) [asc | desc]
alter table add [unique | fulltext] index 索引名 on 表名(字段名[(长度)]) [asc | desc]
drop index 索引名 on 表名;
网友评论