数据库:CHAR,VARCHAR,TEXT,ENUM ,SET,BINARY,VARBINARY 列的完整性约束
数据库
- CHAR类型和VARCHAR类型
- TEXT类型
- ENUM 和SET类型
- SET类型
- 二进制类型
- BINARY和VARBINARY类型
- BIT类型
- 列的完整性约束
CHAR类型和VARCHAR类型
- “字符串类型”参数指定了数据类型为CHAR类型还是VARCHAR类型;M参数指定了该字符串的最大长度为M。
- VARCHAR类型的长度是可变的,在创建表时指定了最大长度。定义时,其最大值可以取0~65535之间的任意值。指定VARCHAR类型的最大值以后,其长度可以在0到最大长度之间。
TEXT类型
- 以上各类型无须指定长度!
- 允许的长度是指实际存储的字节数,而不是实际的字符个数,比如假设一个中文字符占两个字节, 那么TEXT 类型可存储 65535/2 = 32767 个中文字符,而varchar(100)可存储100个中文字 符,实际占200个字节,但varchar(65535) 并不能存储65535个中文字符,因为已超出表达范围.
ENUM 和SET类型
ENUM类型
- ENUM类型又称为枚举类型。在创建表时,ENUM类型的取值范围以列表的形式指定,其基本形式如下:
属性名 ENUM(‘值1’, ‘值2’, …, ‘值n’)
其中,“属性名”参数指字段的名称,“值n”参数表示列表中的第n个值。ENUM类型的值只能取列表中的一个元素。其取值列表中最多能有65535个值。列表中的每个值独有一个顺序排列的编号,MySQL中存入的是这个编号,而不是列表中的值。默认编号从1开始!
如果ENUM类型加上了NOT NULL属性,其默认值为取值列表的第一个元素。如果不加NOT NULL属性,ENUM类型将允许插入NULL,而且NULL为默认值。
SET类型
属性名参数指字段的名称,“值n”参数表示列表中的第n个值,这些值末尾的空格将会被系统直接删除。其基本形式与ENUM类型一样。SET类型的值可以取列表中的一个元素或者多个元素的组合。取多个元素时,不同元素之间用逗号隔开。SET类型的值最多只能是由64个元素构成的组合。
二进制类型
二进制数据和文本数据在mysql 中的最大区别在于:二进制类型存储原始的二进制数据(如图片,视频,exe文件等)。文本类型(TEXT)用来存储字符字符串(如由英文字符、中文字符或其它语言字符组成的字符串)。
二进制类型没有字符集,并且排序和比较基于列值字节的数值。而TEXT类型有字符集,并且根据字符集的校对规则 对值进行排序和比较。
二进制类型是存储二进制数据的数据类型,包括BINARY、VARBINARY、BIT、TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。二进制类型之间的对比如下表所示。
BINARY和VARBINARY类型
“字符串类型”参数指定数据类型为BINARY类型还是VARBINARY类型;M参数指定该二进制数的最大字节长度为M。这与CHAR类型和VARCHAR类型相似。例如,BINARY(10)就是指数据类型为BINARY类型,其最大长度为10。
BINARY类型的长度是固定的,在创建表时就指定了,不足最大长度的空间由″\0″补全。例如,BINARY(50)就是指定BINARY类型的长度为50。
VARBINARY类型的长度是可变的,在创建表时指定了最大的长度,其长度可以在0到最大长度之间,在这个最大值范围内使用多少就分配多少。
BIT类型
要点:
插入数据时,使用 b’位串’的方式插入相应值!
查询时,可以使用 bin() 、oct() 、hex() 函数讲字段的值转成相应的二进制、八进制和十六进制.
- binary长度固定, 即每条数据占用等长字节空间;保存长度不超过255字节的二进制数据;
- varbinary可变长度,可以设置最大长度,最大长度65535;适合用在长度可变的二进制数据;
- blob不设置长度, 当不知道属性的最大长度时,适合用blob, 能用varbinary的地方不用blob;
- 如果都可以选择,按照查询速度: binary最快, varbinary次之,blob最慢。
列的完整性约束
完整性约束条件是对字段进行限制,要求用户对该属性进行的操作符合特定的要求。如果不满足完整性约束条件,数据库系统将不再执行用户的操作。MySQL中基本的完整性约束条件如表
设置表字段的主键约束(PRIMARY KEY,PK)
主键是表的一个特殊字段,能唯一标识该表中的每条信息。主键和记录的关系,如同身份证和人的关系。主键用来标识每个记录,每个记录的主键值都不同。身份证用来表明人的身份,每个人都具有唯一的身份证号。设置表的主键是指在创建表时设置表的某个字段为该表的主键。
主键的主要目的是帮助数据库管理系统以最快的速度查找到表的某一条信息。主键必须满足的条件就是主键必须是唯一的,表中任意两条记录的主键字段的值不能相同,并且是非空值。主键可以是单一的字段,也可以是多个字段的组合。
- 单字段主键
单字段主键的语法规则如下:
CREATE TABLE tablename(
propName propType PRIMARY KEY, …
);
或
CREATE TABLE tablename(
propName propType , …
PRIMARY KEY(propType)
);
2.多字段主键
主键是由多个属性组合而成时,在属性定义完之后统一设置主键。语法规则如下:
CREATE TABLE tablename(
propName1 propType ,
propName2 propType ,
…
[CONSTRAINT pk_name]PRIMARY KEY(propName1, propName2)
);
数据库:CHAR,VARCHAR,TEXT,ENUM ,SET,BINARY,VARBINARY 列的完整性约束相关推荐
- mysql char varchar text 对比
检索效率 char > varchar > text 当varchar长度超过255之后,跟text一致,但是设置varchar(n)的话,可以防止恶意使用text撑爆数据库 类型名称 说 ...
- mysql varchar tinytext_mysql列类型char,varchar,text,tinytext,mediumtext,longtext的比较与选择...
储存不区分大小写的字符数据 TINYTEXT 最大长度是 255 (2^8 – 1) 个字符. TEXT 最大长度是 65535 (2^16 – 1) 个字符. MEDIUMTEXT 最大长度是 16 ...
- mysql中char,varchar,text
1.char char最大长度是255字符,注意是字符数和字符集没关系. 1)可以有默认值, 2)尾部有空格会被截断 3)不管汉字.英文,还是其他编码,都可以存255字符 2.varchar 1)va ...
- mysql中text格式化_mysql中char,varchar,text
1.char char最大长度是255字符,注意是字符数和字符集没关系. 1)可以有默认值, 2)尾部有空格会被截断 3)不管汉字.英文,还是其他编码,都可以存255字符 2.varchar 1)va ...
- SQL中char\varchar\text与nchar\nvarchar\ntext的区别
SQL中char\varchar\text与nchar\nvarchar\ntext的区别 定义 特点 定义 char char(n)是长度不可变的,用于表示非Unicode字符数据.n代表该数据类型 ...
- sqlite数据库的char,varchar,text,nchar,nvarchar,ntext的区别
1.CHAR.CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充. 2.VAR ...
- 数据库-mysql的text属性
文章目录 属性 对比 属性 一种特殊的字符串,存储单位为字节,有四种类型 TINYTEXT.TEXT.MEDIUMTEXT和LONGTEXT 不同的是可以存储的字符串的长度以及空间占用大小 使用时不需 ...
- postgresql、mysql数据库varchar、char、text的比较
MYSQL: 1.char长度固定, 即每条数据占用等长字节空间: 2. varchar可变长度,可以设置最大长度,而varchar只会占用实际字符应该占用的空间+1,并且实际空间+1<=n. ...
- postgresql数据库varchar、char、text的比较
https://blog.csdn.net/u013992330/article/details/76653361/ postgresql数据库varchar.char.text的比较 2017年08 ...
最新文章
- 负载分析及问题排查极简教程
- 2016年3月23日作业(项目进度管理、项目成本管理)
- 引用计数(Reference Counting)和代理(Proxy)的应用
- 保护DNS对数字网络安全越来越重要—Vecloud
- 解决ECSHOP后台订单里面点击编辑配送方式时出现的警告问题
- C#正则表达式MatchCollection类浅析
- Change Fiori launchpad logo
- 白硕 | 基于区块链的众包社区激励机制
- 给 Android 研发的一些的建议
- 从0开始python后端开发_配置apache服务器(Mac系统)
- Linux中的用户切换:su和su - 的区别
- usbasp下载器制作
- Matlab实现sift特征检测和两幅图像的特征点匹配(D. Lowe)
- linux进入cbq文件夹,Linux流量控制(SFQ/TBFPRIO/CBQ/HTB原理介绍)
- 7-7 六度空间 (30分)
- 【U8+】U8+自动备份不成功BackupDB日志中显示“数据源.未找到”
- 巴克莱、高盛支持区块链衍生品领域的ISDA标准
- vue、Cascader 级联选择、Cascader 属性事件方法、vue Cascader 所有级联选择样式、vue Cascader 级联选择全部属性事件方法
- 算法-狄克斯特拉算法
- spring getway的配置