MySQL快查
因为在日常工作学习中经常忘记mysql的一些语句、关键字、操作等内容,所以最近抽取时间写了以下关于mysql相关内容。相当于一本字典吧
重置mysql密码
本文
运算符
常用函数
数据完整性
数据库的基本操作
对表本身的操作
对表中数据的操作
子查询
多表连接
索引
视图
预处理SQL语句
自定义函数与存储过程
在MySQL中编程
数据类型
字符串(包括二进制及特殊字符串enum、set)
CHAR, VARCHAR和TEXT是文本类型的字符串,长度规格使用 字符;
BINARY, VARBINARY和BLOB是二进制字符串,长度规格使用字节。
类型 | 取值范围 | 说明 |
---|---|---|
char(n) | 0~255个字符 | 固定长度为n的字符串 |
varchar(n) | 0~255个字符 | 可变长度字符串 |
text | 0~216-1(65535)字节 | 常规的文本字段,适合存储长文本 |
enum | 只能是指定的一个值,如:emnu(‘male’,‘female’) 就只能取"male"或"female" | 枚举 |
set | 只能是指定的一个或几个值,如:set(‘a’,‘b’,‘c’) 可取这三个值的任意组合 | 集合 |
— | — | — |
binary | 0~216-1字节 | 类似char,只是存储的是二进制字符串 |
varbinary | 0~ 216-1字节 | 类似archar,存储二进制文件 |
blob | 0~216-1字节 | 一般用来存放大数据(二进制) |
关于字符串的一些描述
blob和text不能指定default(默认值)
有一些类型会延伸出“tiny"、“medium”、"long"等,它们的最大取值范围一般都是 28-1、224-1、232-1,例如:
类型 | 最大值(字节) |
---|---|
tinytext | 28-1 |
text | 216-1 |
mediumtext | 224-1 |
longtext | 232-1 |
比较char和varchar
值 | CHAR(4) | 占用内存 | VARCHAR(4) | 占用内存 |
---|---|---|---|---|
‘’ | ’ ’ | 4字节 | ‘’ | 1字节 |
‘ab’ | 'ab ’ | 4字节 | ‘ab’ | 3字节 |
‘abcd’ | ‘abcd’ | 4字节 | ‘abcd’ | 5字节 |
‘abcdefg’ | ‘abcd’ | 4字节 | ‘abcd’ | 5字节 |
为字符串指定字符集
可以使用CHARACTER SET指定字符串字段的字符集(CHARSET是简写)
CREATE TABLE t
(
c1 VARCHAR(20) CHARACTER SET utf8,
c2 TEXT CHARACTER SET latin1 COLLATE latin1_general_cs
);
注:字符集后面的“_cs”表示大小写敏感,“_ci”则是大小写不敏感
使用CHARACTER SET指定binary,ASCII和unicode
binary关键字指定了数据是否区分大小写(默认区分)
ASCII关键字指定了在该列中使用latin1字符集
unicode关键字指定了使用UCS字符集
CREATE TABLE t
(
c1 VARCHAR(10) CHARACTER SET binary,
c2 TEXT CHARACTER SET binary,
c3 ENUM('a','b','c') CHARACTER SET binary
);
数字类型
整数类型
类型 | 有符号取值范围 | 无符号取值范围 | 说明 | 占用内存 |
---|---|---|---|---|
tinyint | -128~127 | 0~255 | 最小的整数 | 1字节 |
bit | -128~127 | 0~255 | 最小的整数 | 1字节 |
bool | -128~127 | 0~28-1 | 最小的整数。mysql没有boolean类型,使用bool关键字来模拟boolean,其实bool就是tinyint,一般bool的值只取0(false)和1(true)。可以在sql语句中使用true和false,但存到数据库里面的是1和0 | 1字节 |
smallint | -32768~32767 | 0~216-1 | 小型整数 | 2字节 |
mediumint | -8388608~8388607 | 0~224-1 | 中型整数 | 3字节 |
int | -2147483648~2147483647 | 0~232-1 | 标准整数 | 4字节 |
bigint | -(264/2)~264/2-1 | 0~264-1 | 大整数 | 8字节 |
取值范围其实很好记,从它占用的内存大小来找,比如int,占用4字节,1字节⁼8位,4*8⁼32,所以232⁼4294967296,因为要记录0,所以最大值要减1。有符号数需要拿一位来记录+/-号,所以最小值是-231⁼-2147483648,最大值231-1⁼2147483647(因为要记录0,所以-1)。也可以通过算出232后除以2来得到数的范围。
浮点类型
类型 | 取值范围 | 说明 | 占用内存 |
---|---|---|---|
float | +/-3.402823466E+38 | 单精度浮点数 | 8/4字节 |
double | +/-1.7976931348623157E+308 +/-2.2250738585072014E-308 | 双精度浮点数 | 8字节 |
decimal | 可变 | 定点小数 | 自定义长度 |
日期类型
类型 | 取值范围 | 说明 |
---|---|---|
date | 1000-01-01~9999-12-31 | 日期,YYY-MM-DD |
time | -838:59:59~838:59:59 | 时间,HH:MM:SS |
datetime | 1000-01-01 00:00:00~9999-12-31 23:59:59 | 日期和时间 |
timestamp | 1970-01-01 00:00:01~2038-01-19 03:14:07 | 时间戳 |
year | 1901~2155 | 年份 |