十三、一些注意事项
一、不要使用保留字和保留字符作为表、列的名称
保留字包括但不限于:SELECT、INSERT、DATE等;
保留字符包括但不限于:*,(),%等;
通配符:
'%':在LIKE子句中代表多个字符;
'_' :在LIKE子句中代表1个字符;
'!':感叹号等于NOT。
注意:'_'下划线除外,它在列名或表名中表示空格。
二、ANY、ALL和SOME
1.ALL,在子查询中表示IN的集合
SELECT name,rating FROM restaurant_ratings
WHERE rating > ALL
(SELECT rating FROM restaurant_ratings WHERE rating >3 AND rating<9);
大于ALL可以找出任何大于集合中最大值的值,同理,小于ALL可以找出任何小于集合中最小值的值。
2.ANY,只需大于或小于集合中的最小值或最大值
SELECT name,rating FROM restaurant_ratings
WHERE rating >ANY
(SELECT rating FROM restaurant_ratings WHERE rating >3 AND rating<9);
大于ANY可以找出任何大于集合中最小值的值,同理,小于ANY可以找出任何小于集合中最大值的值。
最后,SOME和ANY表示相同的意思。
三、数据类型
1.BOOLEAN
只能存储'TRUE'、'FALSE'或NULL;
2.INT
① 存储的数值范围:0到4294967295(42亿9500万),称为无符号整数(unsigned integer);
② 如果想使用正负整数值,需采用有符号整数(signed integer),
数值范围是:-2147483648(负21亿47万)到2147483648,语法 INT(SIGNED)
③ SMALLINT和BIGINT
SMALLINT:
无符号整数数值范围0到65535
有符号整数数值范围-32768到32768
BIGINT:
可以理解为正负无穷
有符号整数数值范围正负9百亿亿
无符号整数数值范围0到1800亿亿
④ TINGINT和MEDIUMINT
TINGINT:
无符号整数数值范围0到255
有符号整数数值范围-128到128
MEDIUMINT:
无符号整数数值范围0到16777218(1670万)
有符号整数数值范围-8388608到8388608(838万)
3.DATE和TIME类型
DATE:YYYY-MM-DD
DATETIME:YYYY-MM-DD HH:MM:SS
TIMESTAMP:YYYYMMDDHHMMSS
TIME:HH:MM:SS
MYSQL处理时间的函数DATE_FORMAT()
SELECT DATEFORMAT(date_colmun_name,'%M%Y') FROM table_name;
四、临时表
1.MYSQL创建临时表
CREATE TEMPORARY TABLE table_name
(
id INT,
column_name VARCHAR(30)
);
2.用SELECT创建临时表
CREATE TEMPORARY TABLE table_name AS
SELECT * FROM table_name;
五、转换数据类型
1.因为列采用某种数据类型,但是希望查询的结果是另一种类型,可用CAST()函数:
CAST(column_name,TYPE)
TYPE可以从以下类型中选择:
CHAR()
DATE
DATETIME
DECIMAL
SIGNDE[INTEGER]
TIME
UNSINGNED[INTEGER]
2.不能使用CAST()的场合
① 从浮点数转换为整数,即DEC变INT;
② 从TIME、DATE、DATETIME、CHAR转换为DECIMAL或INTEGER。