一,存储引擎
数据的存储方式 -- 存储引擎engines
使用不同的存储引擎,数据是以不同的方式存储的
show engines------------查看存储引擎
不同的储存引擎及适用场景
innodb
用于事务处理应用程序,支持外键和行级锁。如果应用对事物的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包括很多更新和删除操作,那么InnoDB存储引擎是比较合适的。InnoDB除了有效的降低由删除和更新导致的锁定,还可以确保事务的完整提交和回滚,对于类似计费系统或者财务系统等对数据准确要求性比较高的系统都是合适的选择。
总结:
innodb2个文件
mysql5.6以上 默认的存储方式
transaction 事务 保证数据安全 数据的完整性而设置的概念
row-level locking 行级锁
table-level locking 表级锁
foreign keys 外键约束
树tree - 加速查询 (树形结构(数据+树) + 表结构)
MyISAM
如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性、并发性要求不高,那么可以选择这个存储引擎。
总结:
3个文件
mysql5.5以下 默认的存储方式
table-level locking 表级锁
树tree - 加速查询 (树形结构 + 数据 + 表结构)
Memory
将所有的数据保存在内存中,在需要快速定位记录和其他类似数据的环境下,可以提供极快的访问。Memory的缺陷是对表的大小有限制,虽然数据库因为异常终止的话数据可以正常恢复,但是一旦数据库关闭,存储在内存中的数据都会丢失
总结:
1个文件
基于hash
存储引擎相关sql语句
查看当前的默认存储引擎:
mysql> show variables like "default_storage_engine";
查询当前数据库;支持的存储引擎
mysql> show engines \G;
指定存储引擎建表
在建表时指定
mysql> create table ai(id bigint(12),name varchar(200)) ENGINE=MyISAM;
mysql> create table country(id int(4),cname varchar(50)) ENGINE=InnoDB;
也可以使用alter table语句,修改一个已经存在的表的存储引擎。
mysql> alter table ai engine = innodb;
在配置文件中指定
#my.ini文件
[mysqld]
default-storage-engine=INNODB
mysql的工作流程
二.表的创建
三,表介绍
表就相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,称为表的字段
id
name
age
sex
phone
job
1
haven
18
male
666666
it
2
angle
18
female
88888888
it
3
周越洋(Barry)
83
不详
11111111
搓脚工
id,name,age,sex,phone,job称为字段,其余的,一行内容称为一条记录
四,创建表
#语法:
create table 表名(
字段名1 类型[(宽度) 约束条件],
字段名2 类型[(宽度) 约束条件],
字段名3 类型[(宽度) 约束条件]
);
#注意:
1. 在同一张表中,字段名是不能相同
2. 宽度和约束条件可选
3. 字段名和类型是必须的
建表,查看表结构
mysql> create database python; -----创建一个库
mysql> use python; ------切换到库
mysql> create table staff_info(id int,name char(12),age int(3),sex enum('男','女'),phone bigint(11),job varchar(11)); ---- 创建表结构
mysql> show tables; --- 查看有哪些表
mysql> desc staff_info; ----- 查看表结构
mysql> insert into staff_info values(1,'猪八戒',18,'女',13838383838,'护士'); -----插入信息
mysql> insert into staff_info values(2,'孙悟空',18,'男',16868686868,'院长');
mysql> select * from staff_info; ----- 查看所有表信息
mysql> desc 表名和describe表名效果相同,---可以查看当前的表结构
mysql> show create table 表名; ----查看更全面的表定义信息
mysql> desc staff_info;
mysql> show create table staff_info;
mysql> show create table staff_info\G; ----查看表的详细信息
五,mysql中常用的数据类型
数值类型
MySQL支持所有标准SQL数值数据类型。
这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。
关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。
MySQL支持的整数类型有TINYINT、MEDIUMINT和BIGINT。下面的表显示了需要的每个整数类型的存储和范围。
对于小数的表示,MYSQL分为两种方式:浮点数和定点数。浮点数包括float(单精度)和double(双精度),而定点数只有decimal一种,在mysql中以字符串的形式存放,比浮点数更精确,适合用来表示货币等精度高的数据。
类型
大小
范围(有符号)
范围(无符号)unsigned约束
用途
INT或INTEGER
4 字节
(-2 147 483 648,2 147 483 647)
(0,4 294 967 295)
大整数值
TINYINT
1 字节
(-128,127)
(0,255)
小整数值
FLOAT
4 字节float(255,30)
(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)
0,(1.175 494 351 E-38,3.402 823 466 E+38)
单精度 浮点数值
DOUBLE
8 字节double(255,30)
(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)
0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)
双精度 浮点数值
DECIMAL
对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2double(65,30)
依赖于M和D的值
依赖于M和D的值
小数值