2020-3-10 758 0
未分类

概述SQL字段的约束是保证字段内容符合要求的一种方法,有六大约束,MySQL只支持其中五种,还有一种语法不报错,但没有实际的作用。六大约束primarykey(主键):唯一,不能为空。notnull(非空):不能为空。default(默认值):字段默认值。unique(唯一):唯一,能为空。foreignkey(外键):为了使两张表的数据更好的关联。check(内容检查MySQL不支持):检查内容是否要求。使用本质是两种不同的写法,效果没有区别列级约束createtablestuinfo.sinfo(idintprimarykey,#主键namevarchar(20)notnull,#不能为空sexenum("男","女")default"女",#检查&默认值stuidintunique,#唯一值skilltypeintreferencesstype(id)#外键)#类型表用以外键关联createtablestuinfo.stype(idint,skillvarchar(255)notnull)表级约束在表级约束中,不能设置notnull、default关键字constraint是可以省略的createtablestuinfo.sinfo(idint,namevarchar(20)notnull,sexenum("男","女"),stuidint,skilltypeint,#constraint别名约束constraintid_pkprimarykey(id),#主键constraintsec_ckcheck(sexin("男","女")),#检查点constraintstuid_ununique(stuid),#唯一键constraintst_fkforeignkey(skilltype)referencesstype(id)#外键)#类型表createtablestuinfo.stype(idint,skillvarchar(255)notnull)主键和唯一关键字唯一性是否允许为空一个表中是否能有多个是否允许组合primarykey√××√(不推荐)unique√√√√(不推荐)设置字段约束组合需要表级约束。createtablestuinfo.sinfo(idint,namevarchar(20)notnull,sexenum("男","女"),/*组合主键两个字段组成唯一性*/id_pkprimarykey(id,name),)字段约束的修改添加字段时加上约束altertable表名modifycolumn字段名约束;修改约束当新旧字段名一样时,就是修改类型、约束。altertable表名changecolumn旧字段名新字段名约束;

2020-3-8 839 0
2020-3-7 795 0
2020-3-7 844 0
2020-3-7 686 0
未分类

数值分为两类整数小数整数类型概述SQL的整数类型有5种有符号就是正负数都可以存储,无符号只能存正数,需要unsigned修饰。Tinyint:占位1字节有符号:-128~127无符号:0~255Smallint:占位2字节有符号:-32768~32767无符号:0~65535Mediumint:占位3字节有符号:-8388608~8388607无符号:0~1677215Int:占位4字节有符号:-2147483648~2147483647无符号:0~4294967295Bigint:占位8字节有符号:-9223372036854775808~9223372036854775807无符号:0~9223372036854775807*2+1使用只用int举个例子,其他也是同理。创建表createtablet(t1int,#默认有符号t2intunsigned,#无符号不能插入负数t3int(4),/*数值代表查询结果显示的长度(不是范围,范围是intbigdata使用什么类型确定的),这样单独写是看不出效果的。*/t4int(4)unsignedzerofill/*1.需要转换成无符号添加不足长度0填充(zerofill)来显示。2.如果使用某些软件查询,查询结果可能会把填充的0去掉。*/)插入数据insertintotvalues(-1,1,1,1)查询有填充的0。mysql>select*fromt;+------+------+------+------+|t1|t2|t3|t4|+------+------+------+------+|-1|1|1|0001|+------+------+------+------+1rowinset(0.00sec)小数类型概述SQL的小数类型可以分为两大类小数型,常用于计算,浮点的运算在精度上要求不高(了解)。float(M,D):占有4字节范围:±1.75494351E-38~±3.402823466E+38double(M,D):占有8字节范围:±2.2250738585072014E-308~±1.7976931348623157E+308定点型,常用于货币的计算dec(M,D)是decimal(M,D)的缩写。dec(M,D):占有M+2个字节范围:最大取值范围与double相同,给定dec的有效取值范围由M和D决定特点M&D详解M&D的作用M:整数位数+DD:小数的位数M&D都是可以省略的小数类型省略,就不受位数限制定点数省略,将会默认dec(10,0)使用创建表createtablenum.f(f1float,#不带参数f2float(5,2),#带参数,超过范围会报错f3dec,#不带参数默认dec(10,0)f4dec(5,4)#达不到5长度,小数后0填充)查看表的结构关注表字段的Type。mysql>descf;+-------+---------------+------+-----+---------+-------+|Field|Type|Null|Key|Default|Extra|+-------+---------------+------+-----+---------+-------+|f1|float|YES||NULL|||f2|float(5,2)|YES||NULL|||f3|decimal(10,0)|YES||NULL|||f4|decimal(5,4)|YES||NULL||+-------+---------------+------+-----+---------+-------+4rowsinset(0.01sec)插入数据insertintofvalues(-1,1.56,1,1.56)查看结果dec类型填充的0,在某些软件查询会被过滤。mysql>select*fromf;+------+------+------+--------+|f1|f2|f3|f4|+------+------+------+--------+|-1|1.56|-1|1.5600|+------+------+------+--------+2rowsinset(0.00sec)

2020-3-7 825 0
2020-3-6 708 0
2020-3-6 762 0
2020-3-6 690 0
2020-3-5 721 0