MySQL核心技术与最佳实践(第3章表结构关联)

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 表名;

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,972评论 0 9
  • 手动不易,转发请注明出处 --Trance 数据库系统命令: (1).查看存储过程状态:show pro...
    Trance_b54c阅读 1,828评论 0 8
  • MYSQL 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 MySQL基本操...
    Kingtester阅读 8,060评论 5 115
  • 一、MySQL优化 MySQL优化从哪些方面入手: (1)存储层(数据) 构建良好的数据结构。可以大大的提升我们S...
    宠辱不惊丶岁月静好阅读 2,654评论 1 8
  • vector(向量) C++中的一种数据结构,确切的说是一个类。它相当于一个动态的数组,当程序员无法知道自己需要的...
    资深小夏阅读 525评论 0 2

友情链接更多精彩内容