需求分析
创表出来表结构
核心SQL
总结分析: 可以会遇到什么样的性能瓶颈
表
存储过程
触发器
事件
表:字段, 索引(约束)
高并发不允许触发器和存储过程
要背下来:占用空间,每个值的范围
固定小数点类型
Decimal
salary decimal(8,2)
最大65位
可以用来记录工资
不要用四舍五入
做彩票时: decimal
每次钱会少个几百块或是多个几百块
交易量5千万左右
int 单位按份来存储
单位: 分
导出乱码
共享表空间转成独立表空间
浮点数
浮点数用二进制表示
小数点后复杂,移位补位,算法符号变法
尽可能减少浮点数出现,运算占开销很大
不能做精确值比较
Floathe(M,D)
小数点后:0-23位精度,存储占用<=4个字节
DOUBLE(M,D)
小数点后:24-53位精度,存储占用8个字节
BIT
status&0/10
BIT(M)#M用于表示有多少个二进制位.M可以支持0-64位
对于bit写入会左填充0.如果bit(8)写入b'1001' 查询得到的值 :00001001
数据类型
数据类型支持属性
int(4)
int(4)zerofill 写入数字5,显示:0005
int(11)auto_increment 每次自增加一
int(1)存100是可以存的 只是有坑,1是宽度
数据溢出
5.5和5.6有区别
Set sql_mode = ‘’;
Select cast(0 as UNSIGNED) – 1;
SELECT 9223372036854775807 + 1;
SELECT CAST(9223372036854775807 AS UNSIGNED) + 1;
timestamp占用字节数更少
varchar
utf8汉字需要占用3个字节
255 byte能存多少个汉字
varchar 低于255 byte需在一个字节 用来记录长度大于255 2个字节
varchar最大长度65535
如果存的字母就按ascII 2字节
用记录长度
char 定长的
varchar变长
其他类型能记住存多大就行
Enum
5.6在线表空间定义
减少join
核心sql尽可能不要join