织梦网站模板使用教程,网站 板块 栏目,石家庄关键词优化报价,网络组建实训报告目录
数据类型分类
数值类型
tinyint类型
bit类型
小数类型
字符串类型
日期和时间类型
enum和set
表的约束
空属性
默认值
列描述
zerofill
主键
自增长
唯一键
外键 数据类型分类 数值类型 tinyint类型 MySQL中#xff0c;整形可以是有符号和无符号的…目录
数据类型分类
数值类型
tinyint类型
bit类型
小数类型
字符串类型
日期和时间类型
enum和set
表的约束
空属性
默认值
列描述
zerofill
主键
自增长
唯一键
外键 数据类型分类 数值类型 tinyint类型 MySQL中整形可以是有符号和无符号的默认有无符号的。可以通过unsigned来说明某个字段是无符号的。如果我们向MySQL特定的的类型中插入不合法数据MySQL是直接拦截不让我们做对应的操作这一点和语言不同。反过来如果已经有数据被成功插入到MySQL中了一定插入的时候是合法的。所以MySQL中数据类型本身也是一种约束。
bit类型 bit[(M)]M表示每个值的位数范围从1到64。如果忽略M那么默认是1。 bit字段在显示时是按照ASCII码对应的值显示
小数类型
float float[(m,d)][unsigned]m显示指定长度d指定小数位数占用4字节。 例如float(4,2)表示的范围是-99.99~99.99MySQL在保存值会进行四舍五入(99.991-99.99)。如果定义的是float(4,2)unsigned范围是0-99.99。
decimal decimal(m,d)[unsigned]m显示指定长度d指定小数位数。 decimal(5,2)表示的范围是-999.99-999.99decimal(5,2)unsigned表示的范围是0-999.99decimal和float很像只是精度不一样decimal更精确。
字符串类型
char char(L)固定长度字符串L是可以存储的长度单位是字符最长可以是255。 这里的char和语言中的char不一样char(2)可以存放两个字符可以是字母或汉字但是不能超过2个最多是255个。
varchar varchar(L)可变长度字符串L表示字符长度最长为65535个字节。 L是这个字符串长度的上限其真实长度可能小于等于这个长度。
varchar字节数可以指定为0-65535之间的值但有1-3个字节用于记录数据大小所以有效字节数是65532当表的编码是utf8时varchar(n)的最大值是65532/321844utf8中一个字符占用3个字节。
char和varchar的比较 如何选择定长或变长字符串
如果数据确定长度都一样且不变那就使用char比如身份证手机号。如果数据长度有变化那就使用varchar比如名字地址但是要保证最长的能存进去。定长的磁盘空间比较浪费但是效率高变长的磁盘空间比较节省但是效率低。定长的意义是直接开辟好对应的空间变长的意义是在不超过自定义范围的情况下用多少开辟多少。
日期和时间类型
常用的日期有如下3个
date日期‘yyyy-mm-dd’占用三个字节datetime时间日期格式‘yyyy-mm-dd HH:ii:ss’占用8字节timestamp时间戳和datetime格式完全一致占用4字节。
当对表进行更新时timestamp数据如果有自动更新。
enum和set enum枚举单选类型enum(选项1,选项2,...)。这些选项值依次对应1 2 3 4 5 6...。 set集合多选类型set(选项1,选项2,...)。在插入时如果传入多个选项可以使用逗号分隔符传进去也可以用数组下标位图方式表示这些选项的每个选项值依次对应如下数字1 2 4 8 16 32...。 创建表 插入数据 想查询所有喜欢登山的人 这样查询不能查出所有结果。
集合查询函数find_in_set函数 find_in_set(sub,str_list)如果sub在str_list中那么返回下标非0如果不在返回0。 查询爱好登山的人 查询爱好登山和篮球的人 表的约束
表的约束表中一定要有各种约束通过约束让我们未来插入数据库表中的数据是符合预期的约束本质是通过技术手段倒逼程序员插入正确的数据。反过来站在MySQL的角度凡是插入进来的数据都是符合数据约束的
约束的最终目标保证数据的完整性和可预期性。
空属性
两个值null默认和not null
例子创建一个表包含班级名称和所在教室这两个字段不能为空。 当插入数据时如果没有给not null的字段传入值那么会报错。
默认值
default如果设置了用户将来插入有具体的数据就用用户的没有就用默认的。 如下图如果我们没有明确指定一列要插入用的是default如果建表中对应列没有默认的default值则无法直接插入。 default和not null不冲突而是相互补充的not null是当用户想插入的时候约束的是要么是NULL要么是合法数据。而default是当用户忽略这一列的时候使用默认值如果设置了如果没有设置直接报错
列描述
comment没有实际含义会根据表创建语句保存用来给程序员看的进行了解。 通过show语句可以查看comment zerofill 我们看到int(10)这个10代表什么实际上如果没有zerofill这个属性的话括号内的数字毫无意义。
如果没有设置zerofill那么显示结果是 如果设置了zerofill属性那么显示结果是 这就是说如果宽度小于设定的宽度自动填充0。这只是最后显示的结果实际存储的还是200我们可以通过hex函数证明 主键
主键primary key用来唯一约束该字段里的数据不能重复不能为空自动设置为not null一张表中最多有1个主键主键所在的列通常是整数类型。
案例
创建表的时候直接在字段上指定主键 主键中的字段不能重复一旦重复就会失败 删除主键 当表创建好但是还没主键的时候可以再次追加主键 复合主键
在创建表的时候在所有字段之后使用primary key(主键字段列表)来创建主键如果有多个字段作为主键可以使用复合主键。 自增长
auto_increment对应的字段不给值会自动被系统更新系统从当前字段中已有的最大值1得到一个新的不同的值通常和主键搭配使用作为逻辑主键。
自增长有如下特点
任何一个字段要做自增长前提本身是一个索引。自增长字段必须是整数。一张表最多只能有一个自增长。 如果插入主键值那下次从这个值开始自增长。 通过last_insert_id()查询上次插入的键值。
唯一键
一张表中往往有多个字段需要唯一性数据不能重复但是一张表中只能有一个主键唯一键就可以解决表中有多个字段需要唯一性约束的问题。唯一键的本质和主键差不多但唯一键允许为空且可以多个为空空字段不做唯一性比较。
唯一键和主键的区别主键更多的是标识唯一性的而唯一键更多是保证在业务上不要和别的信息出现重复。比如在员工管理系统可以将员工身份证号作为主键同时为了保证员工号不出现输入重复错误可以将员工号作为唯一键。
一般把和业务无关的字段设为主键这样当业务调整的时候就不会对主键做过大的调整。 外键
外键用于定义主表和从表之间的关系外键约束主要定义在从表上从表则必须是有主键约束或unique约束。当定义外键后要求外键列数据必须在主表的主键列存在或为null。
语法
foreign key (字段名) references 主表(列) 创建主表 创建从表