数据类型取值范围
int、bigint、smallint 和 tinyint取值范围
bigint从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。存储大小为 8 个字节。
int从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字)。存储大小为 4 个字节。int 的 SQL-92 同义字为 integer。
smallint从 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型数据。存储大小为 2 个字节。
tinyint从 0 到 255 的整型数据。存储大小为 1 字节。
在支持整数值的地方支持 bigint 数据类型。但是,bigint 用于某些特殊的情况,当整数值超过 int 数据类型支持的范围时,就可以采用 bigint。在 MySQL中,int 数据类型是主要的整数数据类型。
在数据类型优先次序表中,bigint 位于 smallmoney 和 int 之间。只有当参数表达式是 bigint 数据类型时,函数才返回 bigint。MySQL不会自动将其它整数数据类型(tinyint、smallint 和 int)提升为 bigint。
CAHR(Length)
Length字节
定长字段
长度为0~255个字符
VARCHAR(Length)
String长度+1字节或String长度+2字节
变长字段
长度为0~65 535个字符
TINYTEXT
String长度+1字节
字符串
最大长度为255个字符
TEXT
String长度+2字节
字符串
最大长度为65 535个字符
MEDIUMINT
String长度+3字节
字符串
最大长度为16 777 215个字符
LONGTEXT
String长度+4字节
字符串
最大长度为4 294 967 295个字符
TINYINT(Length)
1字节
范围:-128~127
或者0~255(无符号)
SMALLINT(Length)
2字节
范围:-32 768~32 767,或者0~65 535(无符号)
MEDIUMINT(Length)
3字节
范围:-8 388 608~8 388 607,或者0~16 777 215(无符号)
INT(Length)
4字节
范围:-2 147 483 648~2 147 483 647,或者0~4 294 967 295(无符号)
BIGINT(Length)
8字节
范围:-9 223 372 036 854 775 808~9 223 372 036 854 775 807,或者0~18 446 744 073 709 551 615(无符号)
FLOAT(Length, Decimals)
4字节
具有浮动小数点的较小的数
DOUBLE(Length, Decimals)
8字节
具有浮动小数点的较大的数
DECIMAL(Length, Decimals)
Length+1字节或Length+2字节
存储为字符串的DOUBLE,允许固定的小数点
DATE
3字节
采用YYYY-MM-DD格式
DATETIME
8字节
采用YYYY-MM-DD HH:MM:SS格式
TIMESTAMP
4字节
采用YYYYMMDDHHMMSS格式;可接受的范围终止于2037年
TIME
3字节
采用HH:MM:SS格式
ENUM
1或2字节 Enumeration(枚举)的简写,这意味着每一列都可以具有多个可能的值之一
SET
1、2、3、4或8字节
与ENUM一样,只不过每一列都可以具有多个可能的值
MyISAM和INNODB引擎的区别
MyISAM:适合执行大量的SELECT操作的数据库。
InnoDB:适合执行大量UPDATE、INSERT、Delete。
左连接、右连接、内连接介绍
左链接,以左表为基础,显示所有数据,右边少了用Null标识;
SELECT * FROM ATable AT RIGHT JOIN BTable BT ON AT.ID = BT.ID;
右链接,以右表为基础,显示所有数据,左边少了用Null标识;
SELECT * FROM ATable AT LEFT JOIN BTable BT ON AT.ID = BT.ID;
内连接,显示两个表中有联系的所有数据;
SELECT * FROM ATable AT INNER JOIN BTable BT ON AT.ID = BT.ID;
like通配符介绍
MySQL中的常用通配符有三个:
%:用来表示任意多个字符,包含0个字符
select * from user where username like '%huxiao';
select * from user where username like 'huxiao%';
select * from user where username like '%huxiao%';
_ : 用来表示任意单个字符
select * from user where username like '_';
select * from user where username like 'huxia_';
select * from user where username like 'h_xiao';
escape:用来转义特定字符,escape后的通配符就失效了。按照正常字符使用。
select username from gg_user where username like '%xiao/_%' escape '/';
select username from gg_user where username like '%xiao/%%' escape '/';