MySQL学习笔记(二)MySQL数据类型

一、创建数据库:
create database 数据库名 default charset=utf8; //创建数据库并指定默认编码
二、创建表

 create table 表名(
        c1 数据类型(M) [unsigned not null zerofill default .....],
        c2 ........,
        ....
  )engine=存储引擎 default charset=字符集;

三、MySQL的数据类型:
1. 查看MySQL支持的数据类型:
mysql> ? data types;
2. MySQL8+支持的数据类型如下表:
1)数值类型:

类型 字节大小(bytes) 范围(有符号) 范围无符号 用途说明
tinyint(M) 1 -128 ~ 127 0 ~ 255 非常小的整数类型
smallint(M) 2 -32768 ~ 32767 0 ~ 65535 非常小的整数类型
mediumint(M) 3 -8388608~8388607 0 ~ 16777215 中型整数
int(M) 4 -2147483648~2147483647 0 ~ 4294967295 普通大型整数
bigint(M) 8 -2^63 ~ 2^63-1 0 ~ 2^64-1 大型整数
decimal(M[,D]) 与M和D的值有关,M>D时为:M+2,否则为:D+2 精确的数值类型,M精确值,最大65,D小数位,最大30
float(M,D) 4 -3.402823466E+38 ~ -1.175494351E-38,
0,
1.175494351E-38 ~ 3.402823466351E+38
0,
1.175 494 351 E-38 ~ 3.402 823 466 E+38
单精度浮点数
double(M,D) 8 -1.7976931348623157E+308 ~ -2.2250738585072014E-308,
0,
2.2250738585072014E-308 ~ 1.7976931348623157E+308
0,
2.2250738585072014E-308 ~ 1.7976931348623157E+308
双精度浮点数

说明:
1. 数值型一旦确定了类型,其所占的字节大小就是固定的了,也就是说,该字段所能存储的数值大小就是与括号内的M值无关,tinyint(1)和tinyint(4)能储存的数值大小是一样的,M代表的是显示宽度,也即是当设定了zerofill属性时,tinyint(1)显示的就是1,而tinyint(4)显示的是0001。

2. bit(M):bit-value类型,M表示每个值的位数,M的值为:1 ~ 64,默认是:1。
3. bool,boolean:布尔类型,1为真,0为假,值true和false分别是1和0的别名。


2)日期和时间类型:

类型 字节长度(bytes) 范围 格式 用途说明
date 3 1000-01-01 ~ 9999-12-31 YYYY-MM-DD 日期值
datetime 8 1000-01-01 00:00:00/9999 ~ 9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 日期和时间值
timestamp 4 1970-01-01 00:00:01.000000 ~ 结束时间是第 2147483647 秒,
北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07
YYYYMMDD HHMMSS 日期和时间值,时间戳
time 3 -838:59:59.000000 ~ 838:59:59.000000 HH:MM:SS 时间值或持续时间
year 1 1901 ~ 2155 YYYY 年份值
3)字符串类型
类型 字节长度(bytes) 用途说明
---- ---- ----
char(M) 0 ~ 255 定长字符串
varchar(M) 0 ~ 65535 变长字符串
tinyblob 0 ~ 255 不超过 255 个字符的二进制字符串
tinytext(M) 0 ~ 255 短文本字符串
blob 0 ~ 65535 二进制形式的长文本数据
text(M) 0 ~ 65535 长文本数据
mediumblob 0 ~ 16777215 二进制形式的中等长度文本数据
mediumtext(M) 0 ~ 16777215 中等长度文本数据
longblob 0 ~ 4294967295 二进制形式的极大文本数据
longtext(M) 0 ~ 4294967295 极大文本数据

说明:
1. 对于char(M)、varchar(M)、text(M)字符串类型,M表示所能存储的最大字符数,在MySQL严格模式下,若insert的值超出M的大小将报数据过长的错误。
2. BLOB值被视为二进制字符串,对于BLOB(M)类型,M表示所能存储的最大字节数。
3. enum类型:枚举类型,MySQL为枚举列值列表分配索引(指枚举值列表中的位置,它与表索引无关),索引从1开始,实际存储的是索引,使用where查询时可以使用枚举列值列表中的值查询也可以使用索引查询。null值的索引是null,空字符串或错误的字符串值的索引为0。在MySQL严格模式下,insert超出枚举列表值的值会报错。一个枚举列最多可以包含65535个不同的元素。若将数字存储在枚举列中,则该数字将被视为可能值的索引,并且存储的值是具有该索引的枚举成员,这很容易造成混淆。枚举值不能是表达式,即使是求值为字符串值的表达式,也不能使用用户变量作为枚举值。

4. set类型:
a)SET是可以具有零个或多个值的字符串对象,每个值都必须从创建表时指定的允许值列表中选择;
b)一个SET列最多可包含64个不同的成员;
c)定义中的重复值会导致警告,如果启用了严格的SQL模式,则会导致错误;
d)如果启用了严格的SQL模式,则尝试插入无效 SET值将导致错误;
e)SET值按数字排序, NULL值在非NULL SET值之前排序。

原文地址:https://www.cnblogs.com/huige185/p/13921850.html