mysql存md⽂件_mysql存储引擎.md
#### 存储引擎
```
存储引擎其实就是如何存储数据,如何为储存数据建⽴索引和如何更新数据等技术的实现⽅法因为关系型数据库中的数据是以表的形式储存的,所以存储引擎也可以称为表类型
```
#### 查询MySQL存储引擎
```
show engines;
show engines \g
以上两⾏代码是相同作⽤的
show engines \G 可以使得查询的结果更加美观
```
```
show variables like 'have%';
```
#### InnoDB存储引擎
```
InnoDB给MySQL提供的表事务,回滚,崩溃修复能⼒和多版本并发控制的事务安全,InnoDB也是MYSQL上第⼀个提供外键约束表引擎
InnoDB存储引擎中⽀持⾃动增长列AUTO_INCREAMENT. ⾃动增长列的值不能为空⽽且必须唯⼀,MySQL中规定⾃动增长必须为主键。
也就是当插⼊值时,会⾃动增长
InnoDB⽀持外键,外键所在的表为⼦表,外键所依赖的表为⽗表,⽗表中被外键关联的字段必须为主
在InnoDB引擎中,创建的表的表结构存储在 .frm⽂件中,数据和引擎存储在 innodb_data_home_dir 和 innodb_data_file_path表中
但是其读写效率⽐较差,占⽤空间相对⽐较⼤
```
#### MyISAM存储引擎
```
frm表存储的结构
myd 存储数据,是MYData的简写
myi 存储索引,是MYIndex的简写
```
#### 数字类型
TINYINT: 最⼩整数,有符号的范围:-127-127,⽆符号的范围:0-255,⼀个字节
BOOL: 最⼩整数,有符号的范围:-127-127,⽆符号的范围:0-255,⼀个字节SMALLINT: ⼩型整数,有符号的范围:-32768-32767,⽆符号的范围:0-65536,两个字节INT: 标准整数,4字节,
BIGINT: ⼤整数
```
```
浮点型
FLOAT: 单精度
DOUBLE: 双精度
DECIMAL: 可变
```
#### 选择技巧
```
选择最⼩的可⽤性,如果值永远⼩于127,则使⽤TINYINT⽐INT好
对于完全都是数字的,可以选择整数类型
浮点型⽤于可能具有⼩数,例如购物单价,⽹上交付⾦额
```
#### 字符串类型
```
普通⽂本字符串:CHAR和VARCHAR类型
可变类型:TEXT和BLOB
特殊类型:SET和ENUM
```
#### 普通⽂本字符串
````
CHAR的长度是被固定的,VARCHAR长度是可变的,都是0-255个字符
````
#### 可变类型
```
⼤⼩可变,TEXT更适合⽤于存储长⽂本类型,
BLOB更适合于存储⼆进制数据,例如 图⽚,声⾳,⽂本。
```
存储枚举值 Enum('value1','value2')
存储集合值 Set('value1','value2')
mysql存储文档
```
#### 选择技巧
```
当从速度⽅⾯考虑,优先选择CHAR类型
要节省空间,使⽤动态咧,可以选择VARCHAR
要列出内容限制在⼀种选择,可以使⽤ENUM类型
允许在⼀个列中有多于⼀条的条⽬,可以使⽤SET类型
如果要搜索内容不区分⼤⼩,可以使⽤TEXT类型
如果搜索的内容区分⼤⼩,可以使⽤BLOB类型
```
#### ⽇期和⽇期类型
```
DATE ⽇期格式YYYY-MM-DD
TIME 时间格式HH:MM:SS
DATETIME ⽇期和时间格式YYYY-MM-DD HH:MM:SS
TIMESTAMP 时间标签 1907-01-01 00:00:00 2037年的某个时间
YEAR 1901-2155
```
#### 算术运算符
```
= : 空值不能⽤(NULL) select id,books,id=27 from tb_books;
<>和!= : 空值不能⽤(NULL) select id,books,row<>1,row!=41,row!=24 from tb_books where id=27; > : 空值不能⽤(NULL) select id, books, roow>90 from tb_books;
IS NULL : select id,books,row IS NULL from tb_books;
BETWEEN AND : select row,row between 10 and 50, row between 25 and 28 from tb_books;
IN : select row,row IN(10,95,30) from tb_books;
LIKE : select user,user like "mr",user like "%1%" from tb_books;
```
#### 创建数据库
创建数据库的时候,我们应该记住以下⼏点:
1 不能与其他数据库名重复
2 名称可以由任意字母,阿拉伯数字,下划线,美元符,但是必须以字母开头
3 名称最长为64个字符,别名最长可为256个字符
4 在windows系统下,数据库名称不区分⼤⼩写,在linux下区分⼤⼩写
```
#### 查看数据库
```
show databases;
查看所有的数据库
```
#### 选择数据库
```
use 数据库名;
```
#### 删除数据库
```
drop database 数据库名称;
这⼀步操作千万要谨慎,不然已经删除的数据库可能会不回来了,这种操作太危险了,⽽且不是很常⽤```
#### 创建数据表
```
create table 表名;
还有其他许多属性
create table 表名 (列名1 属性, 列名2 属性...);
```
#### 查看表结构
```
有三种⽅式
1 show columns from 表名 from 数据库名称;
2 show columns from 数据库名称.表名
3 desc 表名
#### 修改表结构
```
alter table 数据表名 。。。。
⽐如我们添加⼀个字段emil 类型为varchar(50) not null, 将字段user的类型由varchar(30)变为varchar(40) alter table tb_admin add emil varchar(50) not null, modify user varchar(40);
```
#### 重命名表名
```
rename table 数据表名1 to 数据表名2
```
#### 删除表
```
drop table 表名;
```
#### 插⼊数据
```
insert into 表名(字段名) values(字段值);
```
#### 查询数据
```
select [distinct][concat(col1,":",col2)] as collection_list
from 表名 指定数据表
where primary_constrait 查询条件
group by grouping_colums 如何对结果进⾏分组
order by sorting_columns 如何对结果进⾏排序
having secondary_constrait 查询条件
limit count 限制输出
```
#### 修改记录
```
update 表名 set 字段名=新的值 where 条件;
```

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。