– MySQL 笔记
这段时间在准备一些面试的知识点,就看了一些 MySQL 常见的知识点,直接做了笔记,下面分享给大家,希望对大家有所帮助
– 数据类型
整形:
整形数值的取值范围:有符号 (-2的字节数次方)~ (2的字节数次方-1)|| 无符号 0 ~ (2的字节数次方)
tiny int: 字节长度 1
small int:字节长度 2
medium int: 字节长度 3
int:字节长度 4
big int:字节长度 8
浮点型:
float: 字节长度 4 、一字节存储符号,八字节存储二进制指数,剩余存储尾数、精确 8位
double: 字节长度 8 精确 16 位
decimal(numeric):DECIMAL(M、D) 字节长度 M+2 字节,M 数值最大数,D 小数点右侧数字的数目
字符串型:
varchar:可变长度字符串
需要用 1-2 位 额外记录字符串长度,超出部分将会被阶段,易产生碎片数据
char:定长字符串
使用时,数据不足的长度部分使用空格填充,数据库搜索速度更快,不会产生碎片
当数据的数据长度差距很小时,使用char 更节省空间,搜索速度会更快
对于经常变更的数据,char比varchar 更好,char不易产生碎片
ENUM:枚举类型,把不重复的集合存储为一个预定义的集合,存储非常紧凑,把数据压缩到1-2个字节
枚举类型的数据在存储空间中使用的是数字存储,所以尽量不要用数字作为枚举类型的常量,容易造成混乱
枚举表大大缩减存储空间
text:长文本类型
blob:二进制形式的长文本数据
时间和日期型:
date:日期,年-月-日
time:时间,时-分-秒
year:年份值
datetime:字节长度 8,混合日期和时间值
timestamp:字节长度 4,混合日期和时间值、时间戳
在使用时间和日期型时,datetime 和 timestamp 尽量使用timestamp,timestamp 效率更高
– 列属性
auto_increment:自动增长
default:默认值
not null:非空集合
zerofill:填充零,配合 整形数据使用,当定义整形长度时,整形数据位数不足时,会使用 0 填充
– 表引擎
InnoDB、MyISAM、CSV、memory、blockhold、archive
– 常用的表引擎
InnoDB
支持 行锁,服务器开销最大,支持事务,数据和索引都存储在共享表空间中,可通过配置分开,崩溃后可安全恢复,支持外键
通过一定的机制和工具下,支持热备份
MyISAM
支持 表锁,服务器开销最小,不支持事务,数据存储在.MYD 文件中,索引存储在.MYI文件中,不支持崩溃后的安全恢复
*注意点:服务器层 不管理事务,由下一层 引擎实现,MyISAM 不支持事务,若在MyISAM 表中使用事务,MySQL 不报错也不会提醒*
– 存储过程
保存一条或多条语句sql语句的集合/ 业务和流程的集合
保持数据的一致性
简化对变动的管理
– 触发器
用来保证数据完整行的一种操作
与表事件相关的特殊存储过程
触发器过多 容易造成数据混乱,不方便管理
– 锁类型
共享锁(读操作)
公共读操作
排他锁(写操作)
单一写操作
– 常用命令操作
mysql -u username -p password -h host -P port
-u 用户名
-h 主机地址
-p 密码
-P 端口号
\G 格式化显示
\c 取消执行
\q quit 退出
\s status 显示当前状态
\h help 帮助
\d 改变执行服务
下面一篇文章将会写一些自己理解的常用算发程序,是由PHP 写的,大家有需要的可以看看,有问题请直接留言