《SQL入门经典》学习笔记
· 阅读需 4 分钟
这本书总体上来讲还是比较简单的,SQL入门还是不难的。使用了三种数据库,语法有所不同,有点混乱。在看书的过程中记录了一些笔记,以便查阅吧。就是下面这本:

操作符
=相等<>,!=不等>,<,>=,<=IS NULL,IS NOT NULLBETWEEN介于(包含端点)NOT BETWEENIN值在列表中,NOT INLIKE通配符匹配:%(>0个字符),_(1个字符),NOT LIKEEXISTS,NOT EXISTSUNIQUE,NOT UNIQUEALL,ANY,SOME(ANY的别名)AND,OR+,-,*,/算术运算
汇总查询
COUNT, SUM, MAX, MIN, AVG
数据排序与分组
GROUP BY, ORDER BY
CUBE, ROLLUP
WHERE子句设定SELECT选择字段的条件;HAVING子句设定GROUP BY子句形成分组的条件。
字符函数
- 拼接字符串:
||(Oracle),+(SQL Sever),CONCAT(MySQL) TRANSLATE对应替换(类似于tr命令)REPLACE替换UPPER,LOWERSUBSTR,SUBSTRING字符串子串INSTR查找,返回位置LTRIM,RTRIM在一侧切除字符串DECODE在字符串中搜索字符串,如果找到了就显示另一个字符串IFNULL如果是NULL就用替代值COALESCE依次检查,返回第一个非NULL值LPAD,RPAD在一侧填充ASCIIASCII值- 算术函数:
ABS,ROUND,SQRT,SIGN(符号函数),POWER,CEIL,FLOOR,EXP - 与数字转换(有的可以隐式转换):
TO_NUMBER,STR,TO_CHAR
日期和时间
不同的实现有所差别
MySQL:NOW, DATE_ADD, STR_TO_DATE
在查询里结合表
等值结合/内部结合:利用通用字段(一般是主键)结合两个表
SELECT TABLE1.COLUMN1, TABLE2.COLUMN2...
FROM TABLE1, TABLE2
WHERE TABLE1.COLUMN_NAME = TABLE2.COLUMN_NAME
将上面的=改为!=就是不等值结合、
外部结合的一般语法:
FROM TABLE1
{RIGHT | LEFT | FULL} [OUTER] JOIN TABLE2
ON TABLE1.COLUMN_NAME = TABLE2.COLUMN_NAME
使用子查询
子查询就是在另一个查询里执行的查询,用于进一步设置查询的条件。子查询不能使用ORDER BY。
关联子查询是依赖主查询里的信息的子查询,即子查询里能引用主查询里的表(类似于闭包)。