Oracle 19C学习 - 3. 使用where进行条件查询和数据排序

WHERE命令进行搜索结果的限制

SELECT column_name,column_name
FROM table_name
WHERE column_name operator value;

 

WHERE子句位于FROM命令之后。

SELECT * FROM EMPLOYEES WHERE department_id = 100;

Oracle 19C学习 - 3. 使用where进行条件查询和数据排序

 

作为常量的字符串和日期都要用单引号引起来,字符串要区分大小写。

日期 常量按照‘DD-MMM-YY’来写,中文系统的月份用中文写,英文系统的月份用OCT, AUG这样的缩写来写。

SELECT * FROM employees WHERE last_name = ‘Popp‘;

SELECT * FROM employees WHERE hire_date=‘07-12月-07‘ 

 

比较运算符操作

Oracle 19C学习 - 3. 使用where进行条件查询和数据排序

 

 

SELECT last_name 名字, salary 工资
FROM employees
WHERE salary <> 3000;   --不等于还可以写为 !=

SELECT last_name 名字, salary 工资
FROM employees
WHERE salary BETWEEN 2500 AND 3000   --工资在2500 -3000的人

Oracle 19C学习 - 3. 使用where进行条件查询和数据排序

 

用IN运算找出来部门编号为90和100的人员

SELECT *
FROM employees
WHERE department_id IN (90,100);

Oracle 19C学习 - 3. 使用where进行条件查询和数据排序

 

 

LIKE命令使用的时候, %代表通配符,_代表单字符通配符。

使用LIKE找到lastname是K开头,firstname为g结尾的人员。

SELECT *
FROM employees
WHERE last_name LIKE ‘K%‘ AND first_name LIKE ‘%g‘;

Oracle 19C学习 - 3. 使用where进行条件查询和数据排序

 

 

使用LIKE找到姓的第二个字母是a,倒数第二个字母也是a的人。

SELECT *
FROM employees
WHERE last_name LIKE ‘_a%‘ AND last_name LIKE ‘%a_‘;

Oracle 19C学习 - 3. 使用where进行条件查询和数据排序

 

 

IS NULL 查找含有空值的记录。

SELECT last_name, salary, commission_pct
FROM employees
WHERE commission_pct IS NULL;

Oracle 19C学习 - 3. 使用where进行条件查询和数据排序

 

 

逻辑运算符操作

Oracle 19C学习 - 3. 使用where进行条件查询和数据排序

 

 

AND: 找出来工资大于1000并且名字带man的人

SELECT last_name, first_name, salary
FROM employees
WHERE salary > 1000
AND last_name LIKE ‘%man%‘

 

OR: 找出来工资大于1000,或者名字带man的人

SELECT last_name, first_name, salary
FROM employees
WHERE salary > 1000
OR last_name LIKE ‘%man%‘

 

NOT: 找出来所有职位不是‘IT_PROG‘, ‘ST_CLERK‘, ‘SA_REP‘的人

SELECT last_name, salary
FROM employees
WHERE job_id NOT IN (‘IT_PROG‘, ‘ST_CLERK‘, ‘SA_REP‘)

 

 使用ORDER BY子句对结果进行排序

SELECT column_name,column_name
FROM table_name
ORDER BY column_name,column_name ASC|DESC;

 

使用ORDER BY对工资进行降序排序。

SELECT first_name || ‘.‘ ||last_name 姓名, salary 工资
FROM employees
ORDER BY salary DESC;

 

使用列别名同样可以排序。

SELECT first_name || ‘.‘ ||last_name 姓名, salary 工资
FROM employees
ORDER BY 姓名;

 

按照列号也能够排序。

SELECT first_name ,last_name 姓名, salary 工资  --按照last_name进行排序
FROM employees
ORDER BY 2;

 

按照多列进行排序。比如先按照部门进行升序排序,然后再在本部门内,进行工资的降序排序。

SELECT last_name, department_id, salary
FROM employees
ORDER BY department_id ASC, salary DESC;

Oracle 19C学习 - 3. 使用where进行条件查询和数据排序

 

 

 

SQL行限制子句

FETCH FIRST n ROWS ONLY:取出前n行的数据。

SELECT last_name, department_id, salary
FROM employees
ORDER BY salary
FETCH FIRST 5 ROWS ONLY;

Oracle 19C学习 - 3. 使用where进行条件查询和数据排序

 

 

OFFSET n ROWS FETCH NEXT n ROWS ONLY : 跳过某些行以后再往后取n行数据。

SELECT last_name, department_id, salary
FROM employees
ORDER BY salary
OFFSET 2 ROWS FETCH NEXT 5 ROWS ONLY;

Oracle 19C学习 - 3. 使用where进行条件查询和数据排序

 

 

 

替代变量

在SQL语句中,可以使用& 或者&&定义变量。

一个&的变量,每次遇到都要求进行赋值, 即使是同一句语句的同名变量,都要每次赋值。

SELECT &A FROM dual;  --这里输入102

SELECT last_name, salary
FROM employees
WHERE employee_id = &A;  --这里仍然提示输入值

 

 

两个&&的变量相当于全局变量,全局变量在给定一次值以后,运行所有的语句都不会再要求输入值。

SELECT &&A FROM dual;  --这里输入102

SELECT last_name, salary 
FROM employees
WHERE employee_id = &&A;  --这里直接以102代入

 

 

如果是字符的变量,必须将变量名放到单引号之间。

SELECT last_name, salary, job_id 
FROM employees
WHERE last_name = &emp_name‘  --输入king可以查询 last_name是King的人员。

SELECT last_name, salary 
FROM employees
WHERE hire_date = &hiredate‘ --输入30-1月-04

 

 

用变量替代列名。

SELECT last_name, department_id, job_id, &&column
FROM employees
ORDER BY &&column

 

 

DEFINE和UNDEFINE进行变量操作

DEFINE employee_num = 200 声明一个变量并赋值。

UNDEFINE employee_num 删除变量

DEFINE employee_name = King

SELECT * FROM employees WHERE last_name = &employee_name‘  --要用&来引用变量,字符串变量用单引号包围。
ORDER BY last_name ASC;

UNDEFINE employee_name;

 

 

SET VERIFY ON 验证变量的值

在SQLPLUS和SQLDeveloper中可以用来显示变量新旧值的变化。

SQL> SET VERIFY ON;
SQL> SELECT * FROM employees
  2  WHERE employee_id = &emp_id;
Enter value for emp_id: 102
old   2: WHERE employee_id = &emp_id
new   2: WHERE employee_id = 102

EMPLOYEE_ID FIRST_NAME           LAST_NAME
----------- -------------------- -------------------------
EMAIL                     PHONE_NUMBER         HIRE_DATE           JOB_ID
------------------------- -------------------- ------------------- ----------
    SALARY COMMISSION_PCT MANAGER_ID DEPARTMENT_ID
---------- -------------- ---------- -------------
        102 Lex                  De Haan
LDEHAAN                   515.123.4569         2001-01-13 00:00:00 AD_VP
     17000                       100            90

 

在SQLDeveloper中要把SET VERIFY ON;与其他的语句一起选择起来执行才能看到效果。

Oracle 19C学习 - 3. 使用where进行条件查询和数据排序

 

Oracle 19C学习 - 3. 使用where进行条件查询和数据排序

上一篇:Go使用纯真IP数据库获取地理位置


下一篇:[linux] centos 7 安装mysql5.7详细流程