Oracle数据库2--Select查询语句

1.Select查询

select 用于从数据看查询数据。语法:

select field1,filed2,.. .

from tablename

[where condition]

-- 查询所有员工的名字和雇员号
select empno,ename from emp;

-- 查询所有员工的雇员号、姓名、岗位
select empno,ename,job from emp;

-- 字段的别名 as
select ename as "姓名" from emp;
select ename as "姓名",job as "岗位" from emp;

-- 别名一定要用双引号,不能用单引号
select ename "姓名",job "岗位" from emp;
-- 双引号可以省略
select ename 姓名 from emp;

-- 表的别名
select emp.ename,emp.job from emp;
select e.ename,e.job from emp e;

2.where语句

where 表示查询的条件。

[1] =,!= ,<>,<,>,<=,>= 关系运算符

-- where 子句

-- 把部分10的雇员查询出来
select *
from emp
where deptno = 10;

-- 把名称为smith的雇员
select e.*
from emp e
where e.ename = ‘SMITH‘;

-- 查询底薪大于等于1000的员工
select e.*
from emp e
where e.sal >= 1000;

select e.*
from emp e
where e.sal <> 800

【2】any/some/all (list)

any/some(list) 满足list列表中的任意一个条件

all(list) 满足list列表的中所有条件

-- any some all

-- 查询薪资大于1000或者薪资大于800的雇员
select e.*
from emp e
where e.sal > some(1000,800);

-- 查询薪资大于1000
select e.*
from emp e
where e.sal > all(1000,800);

【3】null

null 在sql中表示的是不确定 => 可以认为没有值

-- null/not null
-- 查询没有津贴的雇员
select e.*
from emp e
where e.comm is null

select e.*
from emp e
where e.comm is not null

【4】between x and y

表示一个值位于[x,y]区间,x/y 一般都是数字。

-- between x and y
-- 查询薪资在1000-5000之间的雇员
select e.*
from emp e
where e.sal between 1000 and 5000

-- 查询薪资在(3000,5000]之间的雇员
select e.*
from emp e
where e.sal between 3000.01 and 5000

【5】 in/not in list

表示字段值是否在list列表中

-- in/not in(list)
-- 查询部分号是10和20的员工
select e.*
from emp e
where e.deptno in(10,20);

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

-- 查询薪资是1000,2000,5000的员工
select e.*
from emp e
where e.sal in (1000,2000,5000);

【6】模糊查询

like 关键字用于模糊查询,其中

%:表示任意字符出现多次(含0次),

_:表示任意字符出现1次。

escape(‘x’) 表示指定转义字符为x,一般指定为\

-- 查询名字是c开头的雇员

select e.*
from emp e
where e.ename like ‘c%‘;

-- 查询名字中第二个字母是M的雇员
select e.*
from emp e
where e.ename like ‘_M%‘

-- 查询名字中含有M的雇员
select e.*
from emp e
where e.ename like ‘%M%‘;

-- 查询名字中含有%的雇员
select e.*
from emp e
where e.ename like ‘%\%%‘ escape(‘\‘);

3.复杂查询(and/or)

where 后面的条件可以跟多个通过and 或者 or 连接

and:且、并且

or: 或、或者

-- 查询部门10且薪资大于等2000的雇员
select e.*
from emp e
where e.deptno = 10 and e.sal >= 2000;

-- 查询名字中含M且薪资大于1000的雇员
select e.*
from emp e
where e.ename like ‘%M%‘ and e.sal > 1000

-- 查询部门在10或20的雇员
select e.*
from emp e
where e.deptno = 10 or e.deptno = 20

where 中and、or的执行效率问题

-- 思考:查询条件的顺序对查询速度是否有影响?

/*
分析:
and 表示且,条件越多,检索的数据量越来越少
or 表示或,条件越多,检索的数据量越来越多
where 条件的执行顺序从后向前
*/

-- 优化后的sql
select e.*
from emp e
where e.sal>=2000 and e.deptno = 10
-- 结论
-- AND:  把检索结果较少的条件放到后面

-- 查部门10或30的雇员
select e.*
from emp e
where e.deptno = 10 or e.deptno = 30;

and 和 or同时存在时,and先执行。

案例:

--使用in查询部门名称为 SALES 和 RESEARCH 的雇员姓名、工资、部门编号
-- 思考:部门名称位于dept,雇员信息位于emp表
select e.ename,e.sal,e.deptno
from emp e
where e.deptno in
(
select d.deptno
from dept d
where d.dname = ‘SALES‘ or d.dname = ‘RESEARCH‘
);

原文地址:https://www.cnblogs.com/WhiperHong/p/10859223.html

时间: 2024-11-13 09:43:01

Oracle数据库2--Select查询语句的相关文章

Oracle SQL语言之查询语句_超越OCP精通Oracle视频教程培训29

Oracle SQL语言之查询语句_超越OCP精通Oracle视频教程培训29 本课程介绍: Oracle视频教程,风哥本套oracle教程培训是<<Oracle数据库SQL语言实战培训教程>>的第4/5套:Oracle SQL语言之查询语句.主要学习Oracle数据库SQL查询限制排序.Oracle SQL联接查询.Oracle SQL子查询等. 视频学习地址: http://edu.51cto.com/course/course_id-8047.html Oracle SQL语

ASP.NET操作ORACLE数据库之模糊查询

ASP.NET操作ORACLE数据库之模糊查询 一.ASP.NET MVC利用OracleHelper辅助类操作ORACLE数据库 1 //连接Oracle数据库的连接字符串 2 string connectionString = @"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP) 3 (HOST=localhost) (PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=TestDB)))

hive select查询语句底层实现的某些细微差别

最近,由于工作的需要,学习了基于Hadoop的一个数据仓库工具hive.遇到并解决了一些问题,但是有个select语句的细微差别值得注意. 首先来看两条hql语句: SELECT * FROM MY_TABLE where dt=2014031205 limit 10     SELECT ID,NAME,GENDER,USERNAME,PASSWORD,ISVALID FROM MY_TABLE where dt=2014031205 limit 10 理论上,上述两条hql查询语句的查询结果

oracle数据库删除数据Delete语句和Truncate语句的对比

oracle数据库删除数据Delete语句和Truncate语句的对比 当表中的数据不需要时,则应该删除该数据并释放所占用的空间,删除表中的数据可以使用Delete语句或者Truncate语句,下面分别介绍. 一.delete语句 (1)有条件删除    语法格式:delete [from]  table_name  [where condition]; 如:删除users表中的userid为‘001’的数据:delete from users where userid='001'; (2)无条

oracle物理体系相关查询语句

1.查看SGA和PGA 这里看到SGA和PGA大小为0是因为在oracle 11g中,推出了memory_target这个参数,memory_target参数指定的内存会自动分配内存给SGA与PGA: 查看memory_target: sga_max_size=3200M表示当数据库运行是的内存超过sga_target的大小时,操作系统OS能够分配再分配内存给SGA,但大小不能超过3200M: 2.查看共享池与数据缓冲区 共享池与数据缓冲区大小为0是因为oracle设置为SGA自动管理,共享池与

create table 使用select查询语句创建表的方法分享

转自:http://www.maomao365.com/?p=6642 摘要:下文讲述使用select查询语句建立新的数据表的方法分享 ---1 mysql create table `新数据表名` select * from `旧数据表名`; -------------------------------- ---2 oracle create table 新数据表名 as select * from 旧数据表名 -------------------------------- --3 mss

MySQL学习笔记(10)之select查询语句

select查询语句 格式: Select 选项 字段列表 from.where like.group by.haring.order by.limit: 字段列表:select * from 表名: Select (字段名) from 表名: 字段部分可参与的运算. Select 字段±数字 from 表名: 1.别名: Select 字段名 as 别名 from 表名: 2.From子句: 查询多个表: select 表1.字段1,表1.字段2...表2.字段1... From 表1,表2:

使用explain查询select查询语句执行计划

1.使用explain查询select查询语句执行计划 mysql> select * from baba where name ='fjdsjf'; +------+--------+ | id   | name   | +------+--------+ |    1 | fjdsjf | +------+--------+ 查询该sql语句的执行计划 mysql> explain select * from baba where name ='fjdsjf' \G; **********

一起ORACLE数据库中数据查询结果不一致问题的排查过程

一.问题描述 在某软件开发项目中,需要在ORACLE数据库中建立十张类型相同的员工信息表tb_employeeinfo0~tb_employeeinfo9,并建立向这十张表中插入数据的存储过程.ORACLE数据库安装在Linux操作系统下. 为了操作上的方便性,开发人员在PL/SQL Developer软件(ORACLE数据库开发软件)上实现了建表和建存储过程的操作.之后,开发人员利用SQL语句在在PL/SQL Developer软件上实现了向某个数据表中插入数据的操作.利用select语句查询

Oracle数据库——SQL高级查询

一.涉及内容 1.掌握SELECT语句的多表连接查询. 2.掌握SELECT语句的子查询. 二.具体操作 (一)根据Oracle数据库scott方案下的emp表和dept表,完成下列操作: 1.查询所有工种为CLERK的员工的姓名及其部门名称. select ename,dname from scott.emp t1 inner join scott.dept t2 on t1.deptno=t2.deptno where job='CLERK'; 2.查询所有部门及其员工信息,包括那些没有员工