目录
-
SQL(基础查询) 2
1.1. 基本查询语句 2
1.1.1. FROM子句 2
1.1.2. 使用别名 2
1.1.3. WHERE子句 3
1.1.4. SELECT子句 3
1.2. 查询条件 4
1.2.1. 使用>, <, >=, <=, !=, <>, = 4
1.2.2. 使用AND,OR关键字 4
1.2.3. 使用LIKE条件(模糊查询) 4
1.2.4. 使用IN和NOT IN 5
1.2.5. BETWEEN…AND… 5
1.2.6. 使用IS NULL和IS NOT NULL 5
1.2.7. 使用ANY和ALL条件 5
1.2.8. 查询条件中使用表达式和函数 6
1.2.9. 使用DISTINCT过滤重复 6
1.3. 排序 7
1.3.1. 使用ORDER BY字句 7
1.3.2. ASC和DESC 7
1.3.3. 多个列排序 8
1.4. 聚合函数 8
1.4.1. 什么是聚合函数 8
1.4.2. MAX和MIN 8
1.4.3. AVG和SUM 9
1.4.4. COUNT 9
1.4.5. 聚合函数对空值的处理 9
1.5. 分组 9
1.5.1. GROUP BY子句 9
1.5.2. 分组查询 10
1.5.3. HAVING字句 10
1.6. 查询语句的执行顺序 10 -
SQL(关联查询) 11
2.1. 关联基础 11
2.1.1. 关联的概念 11
2.1.2. 笛卡尔积 11
2.1.3. 等值连接 11
2.2. 关联查询 12
2.2.1. 内连接 12
2.2.2. 外连接 12
2.2.3. 全连接 14
2.2.4. 自连接 14 -
SQL常用函数 15
3.1 ROW_NUMBER() OVER函数 15
3.2 oracle中的decode的使用 16 -
SQL(基础查询)
1.1. 基本查询语句
1.1.1. FROM子句
SQL查询语句的语法如下: -
SELECT <, column [alias], …> FROM table;
其中:SELECT用于指定要查询的列,FROM指定要从哪个表中查询。如果要查询所有列,可以在SELECT后面使用号,如果只查询特定的列,可以直接在SELECT后面指定列名,列名之间用逗号隔开。例句如下,查询dept表中的所有记录: -
SELECT * FROM dept;
1.1.2. 使用别名
在SQL语句中可以通过使用列的别名改变标题的显示样式,或者表示计算结果的含义,使用语法是列的别名跟在列名后,中间可以加或不加一个“AS”关键字。例如: -
SELECT empno AS id ,ename “Name”, sal * 12 “Annual Salary” FROM emp;
别名可以直接写,不必用双引号引起来。但是如果希望别名中区分大小写字符,或者别名中包含字符或空格,则必须用双引号引起来。
1.1.3. WHERE子句
在SELECT语句中,可以在WHERE子句中使用比较操作符限制查询结果,是可选的。
当查询条件中和数字比较,可以使用单引号引起,也可以不用,当和字符及日期类型的数据比较,则必须用单引号引起。例如查询部门10下的员工信息: -
SELECT * FROM empWHERE deptno = 10;
查询职员表中职位是’SALESMAN’的职员: -
SELECT ename, sal, job FROM emp WHERE job = ‘SALESMAN’;
图-1 用where子句定义查询条件
1.1.4. SELECT子句
如果只查询表的部分列,需要在SELECT后指定列名,例如:
- SELECT empno, ename, sal, job FROM emp;
图-2查询指定的列
1.2. 查询条件
1.2.1. 使用>, <, >=, <=, !=, <>, =
在WHERE子句中的查询条件,可以使用比较运算符来做查询。比如:查询职员表中薪水低于2000元的职员信息:
- SELECT ename, sal FROM emp WHERE sal< 2000;
查询职员表中不属于部门10的员工信息(!=等价于<>): -
SELECT ename, sal, job FROM emp WHERE deptno != 10;
查询职员表中在2002年1月1号以后入职的职员信息,比较日期类型数据:
-
SELECT ename, sal, hiredate FROM emp
-
WHERE hiredate>to_date('2002-1-1','YYYY-MM-DD');
1.2.2. 使用AND,OR关键字
在SQL操作中,如果希望返回的结果必须满足多个条件,应该使用AND逻辑操作符连接这些条件,如果希望返回的结果满足多个条件之一即可,应该使用OR逻辑操作符连接这些条件。例如:查询薪水大于1000并且职位是’CLERK’的职员信息:
- SELECT ename, sal, job FROM emp
- WHERE sal> 1000 AND job = ‘CLERK’;
查询薪水大于1000或者职位是’CLERK’的职员信息: - SELECT ename, sal, job FROM emp
- WHERE sal> 1000 OR job = ‘CLERK’;
1.2.3. 使用LIKE条件(模糊查询)
当用户在执行查询时,不能完全确定某些信息的查询条件,或者只知道信息的一部分,可以借助LIKE来实现模糊查询。LIKE需要借助两个