Oracle 11g 第二章知识点总结——过滤 排序

本文深入解析了Oracle11g中的表创建、数据插入、过滤与排序等核心知识点,包括如何创建表、插入数据、使用WHERE子句进行过滤、排序操作以及涉及的比较运算、NULL判断、逻辑运算和示例应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Oracle 11g 第二章知识点总结——过滤 排序


知识点预览


创建表

插入数据

过滤

排序

 

创建表

 

1. 创建表

create table emp(
       empnonumber(4) not null,
       enamevarchar2(10),
       jobvarchar2(9),
mgr number(4),
hiredate date,
sal number(7,2),
comm  number(7,2),
deptno number(4)
);


 

Create table dept(
       Deptnonumber(4),
       Dnamevarchar2(20),
       Locvarchar2(13)
);


插入数据


1. 插入数据

a) 插入全字段


insert into dept values(10,’Accounting’,’NewYork’);



b)插入某个字段(非全字段插入)


insert into dept(deptno) values(40);


过滤

 

 

1.使用WHERE 子句,将不满足条件的行过滤掉。

SELECT  *|{[DISTINCT] column|expression [alias],...}

FROM    table

[WHERE condition(s)];


2. WHERE 子句紧随 FROM 子句。


3. 字符和日期

a) 字符和日期要包含在单引号中。

b)字符大小写敏感,日期格式敏感。

c) 默认的日期格式是 DD-MON-RR。


4. 比较运算


 


5. 其他比较运算


 


6. Between

 

使用 BETWEEN 运算来显示在一个区间内的值。

SELECTlast_name, salary
FROM   employees
WHERE  salary BETWEEN 2500 AND 3500;


7. IN

使用 IN运算显示列表中的值。

SELECT employee_id, last_name,salary, manager_id
FROM   employees
WHERE  manager_id IN (100, 101, 201);


8.LIKE

a)使用 LIKE 运算选择类似的值

b)选择条件可以包含字符或数字:

% 代表一个或多个字符。

_ 代表一个字符。


SELECT first_name
FROM    employees
WHERE  first_nameLIKE 'S%';


c)‘%’和‘-’可以同时使用。

SELECT last_name
FROM   employees
WHERE  last_name LIKE '_o%';


d)可以使用 ESCAPE 标识符 选择‘%’和‘_’符号。


9. NULL

使用 NULL 判断空值。

SELECTlast_name, manager_id
FROM   employees
WHERE  manager_id IS NULL;


10. 逻辑运算



 


11.  AND

 

SELECTemployee_id, last_name, job_id, salary
FROM   employees
WHERE  salary >=10000
AND    job_id LIKE '%MAN%';


12.  OR

 

OR 要求或关系为真。

SELECTemployee_id, last_name, job_id, salary
FROM   employees
WHERE  salary >= 10000
OR     job_id LIKE '%MAN%';


13.  NOT

 

SELECTlast_name, job_id
FROM   employees
WHERE  job_id
       NOT IN ('IT_PROG', 'ST_CLERK','SA_REP');


14.  优先级


 

 


 

可以使用括号改变优先级顺序

 

SELECT last_name, job_id, salary
FROM   employees
WHERE  job_id = 'SA_REP'
OR     job_id = 'AD_PRES'
AND    salary > 15000;


 

使用括号控制执行顺序。

 

SELECT last_name, job_id, salary
FROM   employees
WHERE  (job_id = 'SA_REP'
OR     job_id = 'AD_PRES')
AND    salary > 15000;


 

15.  示例

a) where子句

select * from tabname

where

b)查询sal大于等于1000的所有员工


select * from emp
where sal>=1000;

c)查询sal大于等于1000的所有job是salesman的员工信息。


select * from emp
where sal>=1000 and job=’salesman’;


d)查询sal大于等于1000的并且小于等于2000的员工信息。

select * from emp
where sal>=1000 and sal<=2000;


 

等效于


select * from emp
where sal between 1000 and 2000;
 


 

e)查询部门编号是10和20的所有员工


select * from emp
where deptno not in (10,20);


 

select * from emp
where deptno=10 or deptno=20 and sal between 1000 and 2000;


--顺序问题:先查deptno=10且工资在1000到200之间的,然后再查deptno=20且工资在1000到200之间的。


select * from emp
where (deptno=10 or deptno=20) and sal between 1000 and 2000;
 


 

优先级问题——括号解决

 

f)查询名字里包含S的所有员工

%:匹配任意字符


select  * from emp
where ename like ‘%S%’;


g)查询名字里第二个字母是A的所有员工


select * from emp
where ename like ‘_A%’;


 

h)查询名字里第一个字母是S的所有员工

 

select * from emp where ename like 'S%';


 

i)查询名字里第二个字母是S的所有员工

 

select * fromemp where ename like '_S%';


g)查询comm不为空的所有员工信息


select * from emp
where comm is not null;
 


--为空

select * from emp
where comm is null;


 

排序

 

1. ORDER BY子句

 

SELECT     *|{[DISTINCT] column|expression [alias],...}

FROM       table

[WHERE     condition(s)]

[ORDERBY  {column, expr, alias}[ASC|DESC]];

 

2.使用 ORDER BY 子句排序

a)ASC: 升序

b)DESC: 降序


3.ORDER BY 子句在SELECT语句的结尾。

 

SELECT  last_name, job_id, department_id, hire_date
FROM    employees
ORDER BY hire_date ;


 

4.降序排序

 

SELECT   last_name, job_id, department_id, hire_date
FROM     employees
ORDER BYhire_date DESC ;


5.按别名排序

 

SELECTemployee_id, last_name, salary*12 annsal
FROM   employees
ORDER BY annsal;


6. 多个列排序

a)按照ORDER BY 列表的顺序排序。

 

SELECTlast_name, department_id, salary
FROM   employees
ORDER BYdepartment_id, salary DESC;


b) 可以使用不在SELECT 列表中的列排序。


7.示例

a)按照雇员薪资高低排序

select * from emp
order by sal DESC;


ASC 升序(默认)

 

b)按照雇员薪资高低和按字母顺序对名字排序

 

select * from emp
order by sal desc,name asc;


--工资相同,才会按照名字排序

c)也可以按照列名进行排序


select ename,sal+comm as s from emp
order by s ;


d)值:区分大小写

e) != 等效于<> :不等于

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值