1.整型类型

类型 大小 范围(有符号) 范围(无符号) 用途
TINYINT 1 byte (-128,127) (0,255) 小整数值
SMALLINT 2 bytes (-32 768,32 767) (0,65 535) 大整数值
MEDIUMINT 3 bytes (-8 388 608,8 388 607) (0,16 777 215) 大整数值
INT或INTEGER 4 bytes (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值
BIGINT 8 bytes (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值

整形类型 不用在后面加()

他那个限制住的只是显示宽了

2.浮点类型

FLOAT 4 bytes (-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) 单精度 浮点数值
DOUBLE 8 bytes (-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的值 小数

decimal精度最高 但是M存储的少,

剩下的俩虽然精度低但是M存储的多

double精度大于float

3.日期类型

类型 大小 ( bytes) 范围 格式 用途
DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
TIME 3 ‘-838:59:59’/‘838:59:59’ HH:MM:SS 时间值或持续时间
YEAR 1 1901/2155 YYYY 年份值
DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值
TIMESTAMP 4 1970-01-01 00:00:00/2038结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07 YYYYMMDD HHMMSS 混合日期和时间值,时间戳

4.枚举类型和集合类型

枚举类型说白了就是单选

enum

  1. create table test(
  2. sex enum('male','female'), # 在指定范围内单选
  3. level enum('vip1','vip2','vip3') # 在指定范围内单选
  4. )
  5. insert into test values
  6. ('male','vip2');
  7. # 如果要是不是里面的就是空

集合类型说白了就是多选

set

  1. create table test(
  2. hobby set('run','security'), # 在指定范围内单选
  3. be good it set('security','shooting','eat','run') # 在指定范围内单选
  4. )
  5. insert into test values
  6. ('security','security');
  7. # 如果要是不是里面的就是空

MYSQL 类型转换函数 CONVERT() 和 CAST()

在 mysql 的 sql 语句中,有时需要进行类型转换, mysql 类型转换函数 convert() 和 cast(),是用的较多的两个方法,详细的介绍如下:

convert()

使用例子: SELECT CONVERT(“2017-08-29”, DATE);

cast()

使用例子: SELECT CAST(“2017-08-29” AS DATE);

常用的转换类型

类型名 描述
DATE 日期类型
DATETIME 日期时间类型
TIME 时间类型
CHAR 字符类型
SIGNED 有符号整型(包含正负数)
UNSIGNED 无符号整型(正数)
BINARY 二进制格式

两个方法的区别

参数不同
方法 说明
convert() 有两个参数,第一个为转换内容,第二个为转换类型; 如:convert(‘123’, unsigned integer);
cast() 只有一个参数,参数格式:转换内容 AS 转换类型; 如:cast(‘123’ as unsigned integer);

字符集:

问题现象:

utf8字符集 插入 生僻字报错 1366 - Incorrect string value

原因:MySQL中的utf8 一个字符最多为3个字节 ; 而正常的utf8 (用来标识Unicode标准中的任何字符)是最多支持 4个字节(生僻字、emoj)

解决: 2010年 mysql 发布 utf8mb4 字符集 ;支持 英文1字节 大部分中文 3字节 生僻汉字、emoji 4个字节

参考:https://www.yuque.com/tully/python/vspasx#ArN9J

  1. CREATE TABLE `t3` (
  2. `id` varchar(12) NOT NULL DEFAULT 'ssssss',
  3. PRIMARY KEY (`id`)
  4. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  5. INSERT into t3(id) VALUES('😍')

MySQL-基础 - 图1

MySQL-基础 - 图2

MySQL-基础 - 图3