SQL 过滤和筛选

SQL 过滤和筛选

一、where子句将不满足条件的行过滤,并且紧随from子句

(1)数字、字符、日期
例子:

... WHERE ename='KING';
... WHERE hire_date = '01-JAN-95'  #默认日期格式
... WHERE last_name = 'Smith'

tips:
字符和日期要包含在‘ ’单引号中
字符大小写敏感,日期格式敏感
默认日期格式是:DD-MON-RR
修改系统默认日期格式:

alter session set nls_date_format='YYYY-MM-DD hh24:mi:ss';  #修改当前对话的时间格式,关闭对话则无效!
select sysdate from dual;    #sysdate 是系统时间
set pages 200   #设置一次显示的数据行
set lines 200  #设置一次显示的数据列
set pages 200 lines 200 #可以合并写在一行
/ 执行上一个输入的命令
l 查找上一个输入的命令

(2)比较运算符
SQL 过滤和筛选_第1张图片

SQL 过滤和筛选_第2张图片

注意:

between..and...:显示在一个区间内的值的筛选
not between..and...: 取反

in(条件1,条件2):在一个列表中只要满足其中一个条件的筛选
not in (条件1,条件2):取反
is null:专门对空值的筛选
is not null :取反
!=   or   ^=    :不等于

like:模糊查询,选择类似的值
%   代表一个或多个字符
 _   代表一个字符
\_   代表转译后面的_字符

例子:

... WHERE salary >= 6000
... WHERE last_name BETWEEN 'King' AND 'Smith';
... WHERE last_name IN ('Hartstein', 'Vargas');
... WHERE hire_date LIKE '%95';
FROM employees WHERE job_id LIKE '%SA\_%' ESCAPE '\';
WHERE commission_pct IS NULL;

sql优化:
1、like在使用时,不要‘%Ss’在前,查找效率很低,正确要放在’Ss%’之后
2、在列上进行计算,效率很低
3、不建议在比较运算符的左边或者(列上)进行运算,左边一般放置列名,但在select查找时可以转换方便显示
4、不建议在列上进行函数转换,但在select查找时可以转换方便显示

(3)逻辑运算符
SQL 过滤和筛选_第3张图片

(4)表达式优先级

SQL 过滤和筛选_第4张图片

二、order by子句 排序(位置在整个select子句的结尾处)
–ASC 升序(默认)
–DESC 降序
SQL 过滤和筛选_第5张图片
1 desc 写在列名之后
2 如果查询列有运算,需要设立别名,如:annsal,再进行排序

SQL 过滤和筛选_第6张图片
3 order by 后面可以是数字,代表第几列
4 order by可以先按第一个department_id条件排序,之后在同一个department条件中按第二个条件salary降序排序

三、替代变量
& :提示用户输入的一个值,每次执行都要对指定的变量输入变量的当前值
&& :记录上一次的enter输入,每次重复使用变量值
如果替代变量是字符,需要在‘&name’在单引号中声明该变量,输出‘name’否则&name输出的是数值类型

**&可以替代如下位置的变量:

select &col 列名
from &tab 表名
where &condition 表达式
where deptno = &deptno 字符(文本、数字、符号)
order by &order

四、define命令
define 创建和分配一个变量的值,用于之后的变量调用
undefine 删除一个变量
例子:

SQL> define deptno=10
SQL> select * from emp
2  where deptno=&deptno;
old   2: where deptno=&deptno
new   2: where deptno=10

五、verify命令
set verify on 显示替代变量之前和之后替换变量的值
例子:

  SQL> set verify on
    SQL> select * from emp
    2  where deptno =&deptno;
    old   2: where deptno =&deptno
    new   2: where deptno =10

你可能感兴趣的:(sql,ORACLE,DATBASE_SQL语句)