一、MYSQL数据类型
《1》MYSQL数据类型
整数类型 | tinyint smallint mediumint int bigint |
浮点数类型 | float double |
定点数类型 | dec |
位类型 | bit |
(1) 整型
取值范围如果加unsigned ,则最大值翻倍 如:(tinyint unsigned 的取值范围为0~256)
MYSQL数据类型 | 含义(有符号) |
tinyint (m) | 一个字节 范围(-128~127) (-2^8~2^8) |
smallint(m) | 2个字节 范围(-32768~32767) (-2^15~2^15) |
mediumint(m) | 3个字节 范围(-8388608~8388607) (-2^23~2^23) |
int(m) | 4个字节 范围(-2147483648~2147483647)(-2^31~2^31) |
bigint(m) | 5个字节 范围(+-9.22*10的18次方) |
(m):表示slect 查询结果集中的显示宽度
(2)浮点型
(m,d): m 总个数
d 小数位
MYSQL数据结构 |
含义
|
float (m,d) | 单精度浮点型 8位精度(4字节) |
double (m,d) | 双精度浮点型 16位精度 (8字节) |
例:float(6.3) 插入的数: 123.45678 实际储存:123.457
12.12 12.1200
(3)定点数
浮点数在数据库中存放近似值,而定点类型在数据库中存放准确值
decimal(m,d) m:小于65是总位数 d:小于30且小于m是小数位。
(4)字符串
MYSQL数据类型 | 含义 |
char(n) | 固定长度,最多255个字符 |
varchar(n) | 固定长度,最多65535个字符 |
tinytext | 可变长度,最多255个字符 |
text | 可变长度,最多65535个字符 |
mediumtext | 可变长度,最多2^24-1个字符 |
longtext | 可变长度,最多2^32-1个字符 |
①、char和varchar
1、char(n)若存入字符小于n,则以空格补与其后,查询时再将空格去掉。所以char类型存储的字符串末尾不能有空格。
2、char(n) 固定长度,char(4)不管存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n<=255)hu或2个字符(n>255)。即varchar(4),存入三个字符将占用4个字符。
3、char类型的字符串检索速度要比varchar快。
②、varchar和text
1、varchar可指定n,text不能指定,内部存储varchar是存入的实际字符数+1字节(n<=255)或2个字节(n>255),text是实际字符是+2字节。
2、text类型不能有默认值。
3、varchar可直接创建索引,text创建索引要指定前多少个字符。varchar查询速度快于text,在都创建索引的情况下,text的索引似乎不起作用。
(5)二进制数据
1、_BLOB和_text存储方式不同,_text以文本方式存储,英文存储区分大小写,而_Blod是以二进制方式存储,不区分大小。
2、_BLOB存储的数据只能整体读出。
3、_text可以指定字符集,_blob不用指定字符集。
(6)日期时间类型
MYSQL数据类型 | 含义 |
date | 日期“2020-06-09” |
time | 时间“17:29:30” |
datetime | 日期时间 “2020-06-09 17:29:33” |
timestamp | 自动存储记录修改时间 |
timestamp:这个字段的时间数据会随着其他字段修改时候自动刷新,所以这个数据类型的字段可以存放这个记录最后被修改的时间。
《2》数据类型的属性
MYSQL关键字 | 含义 |
NULL | 数据列可包含NULL值 |
NOT NULL | 数据列不允许包含NULL值 |
DEFAULT | 默认值 |
PRIMARY KEY | 主键 |
AUTO_INCREMENT | 自动递增,适用于整数类型 |
UNSIGNED | 无符号 |
CHARACTER SET name | 指定一个字符集 |
二、字符集
(1)概念
MYSQL字符集包括字符集和校对规则两个概念
字符集 | 含义 |
latin1 | 西欧字符、希腊字符 |
gbk | 中文简体字符 |
big5 | 中文繁体字符 |
utf8 | 几乎支持世界所有国家的字符 |
命令:show varuables like 'character%';
命令2:show collation; #查看当前MYSQL服务实例支持的字符序.
(2)mysql字符集命名规则
以字符序对应的字符集名称开头,以国家名居中(或以general居中),以ci(大小写不敏感)、cs(大小写敏感)或bin(按二进制编码值比较)结尾。
(3)默认字符集修改
1、修改my.cnf配置文件,可修改MYSQL默认的字符集,修改完毕重启mysql
<1>[mysqld]下添加 (如何查看mysql版本 :mysql -V)
①、5.1及以前版本 default-character-set=utf8
init_connect = 'SET NAMES utf8'
②、5.5及以后的版本 character-set-server=utf8
init_connect = 'SET NAMES utf8'
<2>[client]下添加 default-character-set=utf8
2、MYSQL提供下列MYSQL命令可以“临时的”修改MYSQL“当前会话的”字符集以及字符序。
set character_set_client = utf8;
set character_set_connection = utf8 ;
set character_set_database = utf8;
set character_set_results = utf8;
set character_set_server = utf8;
set collection_connection = utf8_general_ci;
set collection_database = utf8_general_ci;
set collection_server = utf8_general_ci;
3、MYSQL命令“set name utf8” 可以临时一次性的设置character_set_client等的字符集为utf8
4、连接MYSQL服务器时指定字符集
mysql --default-character-set=字符集 -h 服务器IP地址 -u 账号名 -p密码