基本类型
字符串类型
英文占一个字节
汉字 要根据编码方式 utf-8 一个汉字占3个字节
char 长度不够 采用空格填充
长度超过 不会被存储
varchar 存储时不会以空格补全
从开发的角度来看数据库 字段名就是变量名 一一进行赋值
不论varchar还是char 在读取时 都会去掉空格
length函数 计算存储消耗的空间
char-length 字符的长度
面试题:
char和varchar区别
长度大小区别:
CHAR(M)定义的列的长度为固定的,M取值可以为0~255之间;
VARCHAR(M)定义的列的长度为可变长,M取值可以为0~65535之间,(VARCHAR的最大有效长度由最大行大小和使用 的字符集确定。整体最大长度是65,532字节)。
存数据时的区别:
CHAR值存储时,如果字符数没有达到定义的位数,会在后面用空格补全,再存入数据库中。比如定义 CHAR(10),那么不论存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充;
VARCHAR值保存时只保存需要的字符数,另加一个字节来记录长度(如果列声明的长度超过255,则使用两个字节)。VARCHAR值保存时不进行填充。
取数据时的区别:自动填充的都会删除,自己特意打进去的都会保留
数据库取CHAR值时,尾部的空格会被删除;
数据库取VARCHAR值时,尾部的空格仍然保留。
总结:
CHAR定长,一般用于固定长度的表单提交数据存储 ;例如:身份证号,手机号,电话,密码等;而VARCHAR不定长。
从空间上考虑,VARCHAR更好,从效率上考虑,CHAR更好
使用,一些app的文本字数限制,比如说说,聊天记录
二进制
一般不会存取图片 视频 音频,会存储相关地址
enum枚举类型
set 集合类型 不允许出现重复的
去重
写日期类型的时候,建议用引号引起来
具体到详细时间 可以插入当前时间
作业讲解:
show databases 显示引擎和字符集
清晰显示 \G 不以表格显示 按行显示
对字段类型的选项 ----属性----约束,限制
zerofill
主键冲突,放不进去
改变主键就行
需要一一对应
自增,即使中间终端,在上一个自增上自增
auto_increment 初始值 为1 偏移量默认为1
delete from xxxx把表里面的内容全部删除,但表格保存
很危险 需要备份
只想删一条 要设立条件
设置初始值和设置偏移量
临时表保存在内存里,当用户登录,可以看到临时表,否则看不到临时表
用户退出,临时表删除,因为没有放在磁盘里,其他人无法看到,
也无法永久保存
根据已有的表来创建新表
复制表的结构
列选项
default
comment
存储引擎
engine 指定表使用的存储引擎
默认引擎 innodb
支持事务 ,行锁,外键
进程的互斥:资源争用 排他性
行锁
表锁
在innodb出现之前,使用的是muisam
csv文件
memory引擎
指定存储引擎
约束
唯一 创建唯一索引
unique可以设为null ,且多次重复
unique可以设为空值 只有一次
主键约束
复合主键 单列主键
两个组合一样 复合主键
建主键的好处----每个表不一定要建索引,但是建一个是最好的
建立 主键索引
快速定位数据:先查询索引,然后根据索引去查询数据
索引的类型