MySQL二--进一步理解

一、数据类型

desc:查看表结构

边界值测试法

1、有符号类型的tinyint的范围是:-128到127

2、无符号类型的的范围是0到255

无符号数和有符号数的使用:

执行a-b=-1的结果,在5.7版本上是这样的

在不同的版本上结果可能会不同。在C语言中无符号类型的-1为ffffffff。尽量不要使用无符号类型,可能会带来一些意想不到的效果。一般需要更大类型的范围的数据,则取出更大类型的数据,而不是使用无符号类型。

3、bit的使用

因为位图以asc码的形式显示,10代表一个位图,是一个不可见字符,所以该结果中没有显示出来

下面插入一个可见字符

(1)bit只可以存储0和1

穷举法:

(2)bit类型多用于,有两种选择的如男和女……

优点:只用一个位存储状态,节省空间

3、小数类型

(1)float:两个参数,第一个参数显示长度,第二个参数显示小数位数

a、小数点是两位表示-99.99到99.99,所以99.978可以插入成功,因为在范围内,但是为了保证4位数字,2位小数,则会进行四舍五入

(2)float的无符号类型定义:0到定义的长度

(3)decimal:第一个参数指定长度,第二个参数指定小数位数

比float的精度更高(能够表示小数点后面的位数越多,精度越高)

float的精度最高大约为7位(浮点类型的大小取决于硬件平台,所以用大约);decmal(整数的最大位数可以取到65,小数位可以取到30),如果小数最大位数被省略默认为0,整数被省略默认是10.

计算机处理浮点运算的效率比处理整型运算的效率低。

(4)字符串:

a、char(L):固定长度字符串,L为可以存储的长度,单位为字符,最大长度为255

b、varchar(L):可变长度字符串,L表示字符长度,最大长度为65535个字节

a、char

 

b、varchar

gb2312一个字符两个字节,能够存储的字符数为65535/2;varchar把第一到第三个字节用于记录数据的大小,能存储数据的字节数是65532个。

c、char和varchar的比较

char所占字节数取决于定义时,定义了多少个字节,vachar是可以随着变化的(即:使用时的字节数*3+1)个字节

数据的长度是确定的(身份证、手机号……),可以使用char;数据的长度是不确定(姓名,家庭住址)的使用varchar。

定长char的会浪费磁盘空间,开辟这么多个字节即使不使用,这个也开辟了;变长的可以节省磁盘空间、但是效率差。

4、日期和时间的类型:

(1)datetime:

(2)date:

(3)timestamp:时间戳,从1970年0时0分1秒开始,到现在的秒数。会自动把当前的时间最为这里的初始值。

会自动更新、自动插入到当前时间;一般用于需要将时间修改为当前时间的地方

5、枚举和set

此时产生错误,因为画画并没有在此处定义(在以前的版本中可以插入)

尽量避免元素的类(一个类名)之间出现逗号。

集合是一个多选,可以在一个集合中插入多个值

枚举是一个单选,都在枚举下定义,且插入多个时会发生数据截断

枚举中默认下标是从1开始的,C语言中默认从0开始

(3)在集合中查找要使用find_in_set,集合存储的是多值不可以比较。如下,查询集合中所有存在击剑的选项

(4)枚举存储的是单值,是可以比较的



6、表的约束

保证数据的合法性。

(1)NULL:默认字段都为空,但是空不能参与实际运算


(2)not null

一旦指定一个字段为not null,那么插入null则不可以

(3)指定默认值

指定默认值后,没有给定值,为默认值

null没办法做数值运算,使用之前先进行判断,有默认值则使用默认值,避免了null的情况


det和枚举不能设置默认值

(4)列描述

数据库中创建表的字段的注释

(5)zerofill:零填充,格式化,使内容更加美观


hex():把一个值变为16进制

说明在数据库中存储的也是23,只是显示的方式不同

(6)主键:约束字段的值是唯一的、不能重复、不能为空。

在一张表中把一个选项指定为一个主键

把一个选项设置为主键,再去设置这个选项则会发生冲突

主键为空也会出错

主键不仅可以指定一个字段为主键,还可以指定符合主键

b、复合主键

复合主键的复杂性较高,容易发生冲突

对于一个已经存在的表,添加主键,即进行表修改

修改表成为一个独立主键,而非符合主键会产生错误

对于一个表,无论是复合主键还是一个列主键,都只能创建一个主键。

c、删除主键

只有一个主键时,不需要指定删除哪一个主键


(7)、自增长:如果一个字段被数据表进行了触发

任何一个字段要做自增长,前提是一个索引(key,主键在一张表中只有一个,以此类推,自增长在一张表中也只有一个)

自增长字段必须是整数

一张表最多只有一个自增长


必须指明列数,并且自增长默认从1开始

自增长会不停的往上加,不管之前的字段做过什么工作,即使是删除。没插入一个数据,触发了一张表,id就会不断的往上加。自增长只会增长,不会往下减。

(8)唯一键:解决一个表中有很多字段都需要唯一性约束,一个表中可以定义多个文件,不能重复,但是可以为null

唯一键不为空则等价于主键

唯一键是不能重复的,给以下唯一键赋一个值之后,如果赋另外一个值,则会发生错误

唯一键可以为null,如下:

总结:



猜你喜欢

转载自blog.csdn.net/xuruhua/article/details/80937936