列类型
文本类型
enum(枚举类型)
语法:
enum(值列表);
说明:
- 值是使用逗号分隔多个值
- 值列表中的值的个数最多是65535个
- 作用是规范数据,节省空间。
- 类比于form表单中的单选按钮
示例:
示例:
原理:
????
set集合类型
语法:
????set(值列表);
说明:
- 值是使用逗号分隔多个值
- 值列表中的值的个数最多是64个
- 作用是规范数据,节省空间。
- 类比于form表单中的多选按钮
- 字段的数据型是一个字符串,相当于将值列表中的多个值拼接成一个字符串,值的顺序可以是任意
示例:
原理:
????MySQL会将集合类型组织一个二进制数,集合中的每一个值,按顺序被组织二进制中的一位
图解:
插入数据:值是red、silver、pink组合
????
日期时间型
date????????日期型????????格式 ‘yyyy-mm-dd‘
time????????时间型????????格式 ‘hh:ii:ss‘
datetime????日期时间型????????格式 ‘yyyy-mm-dd hh:ii:ss‘
year(m)????????年
????m取的是4或2,
????4表示4位的年份,取值????0000至2155
????2表示2位的年份,取值70以上表示19xx,如果是69表示20xx
示例1:
示例2:
timestamp????时间戳类型
说明:
- 格式 ‘yyyy-mm-dd hh:ii:ss‘
- 缺省值是0000-00-00 00:00:00
- 只要对具有时间戳字段的表中进行更改,那么被更改的记录第1个时间戳字段会自动使用当前的时间进行填充。
示例:
?
列属性
列类型与列属性区别:
列类型针对的是单独的一个个体,是对单独个体的一个限制。
列属性针对列的整体进行约束。列属性也就是约束(constraint)。
示例:
primary key????主键
主键:就主要的键,主键是索引中的一种,索引就是唯一标识一条记录,提供用记数据查询,索引就是加快表的查询速度。一般会自定义一个与用户数据无关的字段作为主键字段。
?
创建主键
方法1:在创建表结构时,在需要定义主键的字段后使用primary key,来定义主键
示例:
方法2:
????在创建表结构时,在所有的字段后,使用primary key(‘字段名‘)
示例:
方法3:
????在表结构好后之后,通过修改表结构来添加主键字段
查看表结构
主键的特点:
1、主键一定要唯一
2、主键字段的值不能为null
3、主键字段如果没有使用auto_increment,那么缺省值是0,
4、一个表中的主键字段只能有一个
主键的修改
主键不能修改,只能通过删除的方式,再重新添加主键
删除主键
语法:
????alter table 表名 drop primary key;
示例:
复合主键
????就是由两个或多个字段共同组成主键字段
示例:
说明:
????对于复合主键,只要当复合主键中所有的字段都相同时,才算是主键重复。
?
auto_increment????自增长
- 自动根据表中的数据进行,新记录字段值的填充。
- 对于自增长自段,只能是整型
- 自增长字段,只能是一个索引字段(primary key 或者unique)
- 主要与primary key配合使用
错误示例:
示例:
主键字段数据的插入:
对于自增长字段,可以人为的更改自增长的数据规律
(默认)新记录的自增加字段的值,是表中最大的自增长字段的值+1
自增长的字段的值保存位置:
show create table 表名;
示例:
自增长变量:
语法:
show variables like ‘auto_increment_%‘;
示例:
auto_increment_increment????表示步长
auto_increment_offset????表示起始值
示例:
自增长的删除
通过修改字段类型的方式
alter table 表名 modify 字段名 字段类型;
示例:
null
空
????在进行数据插入时,如果没有为具有约束的字段赋值时,那么MySQL默认会以null填充。
????在实际工作中,一般字段都不允许为null,
示例:
default????
缺省值
当插入记录时,如果没有为某些字段赋值,那么可人为指定一个缺省值
示例:
unique
唯一键
????用于约束整个列中的数据不能重复。
唯一键的特点:
????不能重复,但可以是为null(原因null不等于null)
示例1:
示例2:
查看
删除唯一键
????由于唯一键就是一个普通索引(index)
语法:
????alter table 表名 drop index 约束名;
示例:
查看约束名:
show create table 表名;
模拟主键
????如果一个表中没有主键(primary key)字段,那么MySQL会将第一个具有not null&&unique约束的字段设置为主键字段。