MySQL 数据类型

MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。

数值类型

tinyint 1字节 可以表示 0-255 (无符号) 可以表示 -128 ~ 127 (有符号) 用途:小整数值

tinyint(1) 和 tinyint(4) 中的1和4并不表示存储长度,只有字段指定zerofill是有用,如tinyint(4),如果实际值是2,如果列指定了zerofill,查询结果就是0002,左边用0来填充

int 4字节 无符号(0,4 294 967 295) 有符号 (-2 147 483 648,2 147 483 647)用途:大整数值 。

decimal(P,D) P是表示有效数字数的精度。 P范围为1〜65。 D是表示小数点后的位数。 D的范围是0~30。MySQL要求D小于或等于(<=)P。 以字符串形式存储的浮点数 decimal(6, 2) 表示数值总共6位, 小数占2位范围 从-9999.99到9999.99 用途:在数据库中存储精确的数值

日期和时间类型

datetime 8字节 1000-01-01 00:00:00 -- 9999-12-31 23:59:59

字符串类型

char 定长字符串​
char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空格字符补足.在检索操作中那些填补出来的空格字符将被去掉) char(7) 不管实际插入多少字符, 它都会占用7个字符位置(中文一个汉字也是一个位置)

varchar 变长字符串 varchar(7) 如果实际插入4个字符, 那么它只占4个字符位置

text 这种类型用来存放超大文本

​enum 枚举类型( 多选一 ) ​sex enum('w','m','x') 代表sex这个字段, 可以取 'w', 'm', 'x' 中的一个值 insert into Num(sex)values(1|2|3); ---可代表前面的值 'w', 'm', 'x'

表的字段约束

unsigned 无符号

​int(4) 显示宽度

zerofill 零填充, 位数不够的时候用前导零填充

not null 不能为空 在操作数据库时如果输入该字段的数据为NULL ,就会报错

default 设置默认值

​primary key 主键 不能为空 且唯一

​auto_increment 定义列为自增的属性,一般用于主键,数值会自动加1。

​unique 唯一

定义主键和外键主要是为了维护关系数据库的完整性:

1.主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。 身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。

2.外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。

比如:A有一个字段,在B表中是B的主键,那么是A的外键。

举个例子来说,比如你在为某商场做一个会员卡的系统。 这个系统有一个会员表

    有下列字段:
            会员编号 INT
            会员姓名 VARCHAR(10)
            会员身份证号码 VARCHAR(18)
            会员电话 VARCHAR(10)
            会员住址 VARCHAR(50)
            会员备注信息 TEXT

那么这个 会员编号,作为主键,使用 PRIMARY 会员姓名 如果要建索引的话,那么就是普通的 INDEX 会员身份证号码 如果要建索引的话,那么可以选择 UNIQUE 会员备注信息 , 如果需要建索引的话,可以选择 FULLTEXT,全文搜索。

不过 FULLTEXT 用于搜索很长一篇文章的时候,效果最好。 用在比较短的文本,如果就一两行字的,普通的 INDEX 也可以。

 定义作用个数
主键唯一标识一条记录,不能有重复,不能为空用来保证数据完整性主键只能有一个
外键另一表的主键,可以重复,可以为空用来和其他表建立联系用的一个表可以有多个外键
索引没有重复值,可以有同一个空值是提高查询排序的速度一个表可以有多个唯一索引

MySQL的运算符:

算术运算符:+ - * / % 

比较运算符:= > < >= <= <> != 

查看a是否是等于1和22.返回的是判断结果 

数据库特有的比较:in,not in, is null,is not null,like, between and

----between and  开始结束都是闭区间
select * from teacher where tid between 1 and 3;

说明:“=”、“<>”、“!=”、“>”、“>=”、“<”、“<=”等运算符都不能用来判断空值(NULL)。一旦使用,结果将返回NULL。如果要判断一个值是否为空值,可以使用IS NULL和IS NOT NULL来判断。注意:NULL和'NULL'是不同的,前者表示为空值,后者表示一个由4个字母组成的字符串。

逻辑运算符: 与:&&或and 或:||或 or 非:!或 not 异或:XOR ```sql select from teacher where height=170 or age=25; selectfrom teacher where height=170 and age=25;

``` 

like: 支持特殊符号%和 ; 其中 %表示任意数量的任意字符,表示任意一位字符。

拓展

数值类型

MySQL支持所有标准SQL数值数据类型。 这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。

类型大小范围(有符号)范围(无符号)用途
TINYINT1 字节(-128,127)(0,255)小整数值
SMALLINT2 字节(-32 768,32 767)(0,65 535)大整数值
MEDIUMINT3 字节(-8 388 608,8 388 607)(0,16 777 215)大整数值
INT或INTEGER4 字节(-2 147 483 648,2 147 483 647)(0,4 294 967 295)大整数值
BIGINT8 字节(-9 233 372 036 854 775 808,9 223 372 036 854 775 807)(0,18 446 744 073 709 551 615)极大整数值
FLOAT4 字节(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)0,(1.175 494 351 E-38,3.402 823 466 E+38)单精度 浮点数值
DOUBLE8 字节(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)双精度 浮点数值
DECIMAL对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2依赖于M和D的值依赖于M和D的值小数值

日期和时间类型

表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。

每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。

TIMESTAMP类型有专有的自动更新特性,将在后面描述。

类型大小(字节)范围格式用途
DATA31000-01-01/9999-12-31YYYY-MM-DD日期值
TIME3'-838:59:59'/'838:59:59'HH:MM:SS时间值或持续时间
YEAR11901/2155YYYY年份值
DATETIME81000-01-01 00:00:00/9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间值
TIMESTAMP41970-01-01 00:00:00/2038 结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07YYYYMMDD HHMMSS混合日期和时间值,时间戳

字符串类型

字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。

 

 

类型 大小 用途

CHAR 0-255字节 定长字符串

VARCHAR 0-65535 字节 变长字符串

TINYBLOB 0-255字节 不超过 255 个字符的二进制字符串

TINYTEXT 0-255字节 短文本字符串

BLOB 0-65 535字节 二进制形式的长文本数据

TEXT 0-65 535字节 长文本数据

MEDIUMBLOB 0-16 777 215字节 二进制形式的中等长度文本数据

MEDIUMTEXT 0-16 777 215字节 中等长度文本数据

LONGBLOB 0-4 294 967 295字节 二进制形式的极大文本数据

LONGTEXT 0-4 294 967 295字节 极大文本数据 </table> CHAR和VARCHAR类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。

BINARY和VARBINARY类类似于CHAR和VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。

BLOB是一个二进制大对象,可以容纳可变数量的数据。有4种BLOB类型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。它们只是可容纳值的最大长度不同。

有4种TEXT类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。这些对应4种BLOB类型,有相同的最大长度和存储需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值