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)比较运算符
在这里插入图片描述

在这里插入图片描述

注意:

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)逻辑运算符
在这里插入图片描述

(4)表达式优先级

在这里插入图片描述

二、order by子句 排序(位置在整个select子句的结尾处)
–ASC 升序(默认)
–DESC 降序
在这里插入图片描述
1 desc 写在列名之后
2 如果查询列有运算,需要设立别名,如:annsal,再进行排序

在这里插入图片描述
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
  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值