Oracle基础学习之简单查询和限定查询

本文主要介绍的是关于Oracle中的简单查询和限定查询,下面话不多说,来一起看看吧。

SQL:

1,DML(数据操作语言):主要指的是数据库的查询与更新的操作,查询操作是整个sql语法 中最麻烦也是笔试中最常用的部分。

2,DDL(数据定义语言):主要指的是数据对象的创建(表、用户、)例如:creat.需要相关的设计范式。

3,DCL(数据控制语言):主要进行权限的操作(需要结合用户来观察),此部分由DBA负责。

简单查询:

1,利用select 子句控制要显示的数据列:

 select empno,ename,ename,job,sal from emp;

2,可以使用distinct来消除重复的数据行显示:

 select distinct job from emp;

3,select子句可以进行四则运算,可以直接输出常量内容,但是对于字符串使用单引号数字直接编写,日期格式按照字符格式:

select empno,ename,(sal*15+(200+100)) income from emp;

4,||负责输出内容连接此类的操作很少直接在查询中出现:

 select empno||ename from emp;

5,where子句一般都写在from子句之后,但是是紧跟着from子句之后执行的,where子句控制显示数据行的操作,而select控制数据列,select子句要落后于where子句执行,所以在select子句之中定义的别名无法在where中使用。

限定查询:

1,关系运算符:

 select * from emp where sal>1500;

 select * from emp where ename ='SMITH'

 select empno,ename,job from emp where job<>'SALESMAN';

2,逻辑运算符:

 select * from emp where sal>1500 and sal<3000;
 select * from emp where sal>2000 or job='CLERK';
 select * from emp where not sal >=2000;

3,范围查询:

 select * from emp where sal between 1500 and 2000;
 select * from emp where hiredate between '01-1月-1981'and'31-12月-1981';

4,空判断(空在数据库上表示不确定,如果在数据列使用null不表示0)

select * from emp where comm is not null;

5,IN操作符(类似于between and 而in给出的是指定的范围):

 select * from emp where empno in (7369,7566,7788,9999);

关于not innull的问题:

在使用not in 进行范围判断的时候,如果范围有null,那么不会有任何结果返回。

6,模糊查询:

“-”:匹配任意一位字符;

“%”:匹配任意的0,1,,或者多位字符;

查询姓名是以字母A开头的雇员信息:

 select * from emp where ename like 'A%'

查询姓名第二个字母是A的雇员信息:

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

查询姓名任意位置是A的雇员信息:

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

查询排序:

ASC(默认):按照升序排列;

DESC: 按照降序排列;

查询所有的雇员信息,要求按照工资的由高到低:

 select * from emp order by sal desc;

查询每个雇员的编号,姓名,年薪,按照年薪由低到高排序:

  select empno ,ename,sal*12 income from emp order by income;

语句的执行顺序:from - where -select - order by

基础练习:

1,选择部门30中的所有员工:

 select * from emp where deptno=30;

2,列出所有办事员(clerk)的姓名,编号,和部门编号:

select ename,empno,deptno from emp
where job='CLERK';

3,找出佣金高于薪金的60%的员工:

 select * from emp where comm>sal*0.6 ;

4,找出部门10中所有的经理(manager)和部门20中所有的办事员(clerk):

 select *
 from emp
 where (deptno=10 and job='MANAGER' )or(deptno=20 and job='CLERK'   );

5,找出部门10中所有的经理(manager),部门20中的所有办事员(clerk),以及既不是经理又不是办事员但是工资高于等于2000的所有员工资料:

 select *
 from emp
 where (deptno=10 and job='MANAGER')or(deptno=20 and
 job='CLERK')or(job! ='MANAGER'and job!='CLERK' and sal>=2000);
  select *
  from emp
  where (deptno=10 and job='MANAGER')or(deptno=20 and job='CLERK')or(job
  not in ('CLERK','MANAGER') and sal>=2000);

6,找出收取佣金的员工的不同工作:

select distinct job
 from emp
 where comm is not null;

7,找出收取佣金或者收取的佣金低于100的员工:

  select distinct job
  from emp
 where comm is null or comm<100;

8,显示不带有“R”的员工姓名:

 select *
 from emp
 where ename not like '%R%';

9,显示姓名字段含有A的所有员工姓名,显示的结果按照基本的工资由高到低,如果工资相同,则按照雇佣年限由早到晚,如果雇佣日期相同,则按职位排序:

 select * from emp where ename like '%A%' order by sal desc,hiredate
 asc,job;

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

(0)

相关推荐

  • oracle常用sql查询语句部分集合(图文)

    Oracle查询语句 select * from scott.emp ; 1.--dense_rank()分析函数(查找每个部门工资最高前三名员工信息) select * from (select deptno,ename,sal,dense_rank() over(partition by deptno order by sal desc) a from scott.emp) where a<=3 order by deptno asc,sal desc ; 结果: --rank()分析函数(

  • oracle查询语句大全(oracle 基本命令大全一)

    1.create user username identified by password;//建用户名和密码oracle ,oracle 2.grant connect,resource,dba to username;//授权 grant connect,resource,dba,sysdba to username; 3.connect username/password//进入. 4.select table_name,column_name from user_tab_columns

  • mysql仿oracle的decode效果查询

    以下代码在MYSQL中测试通过,MSSQL应该能跑通,未测试. 复制代码 代码如下: #创建表如下 create temporary table tmp (a int, b int ,c int); insert into tmp VALUES (1,10,1),(10,10,2),(10,100,2); #mysql执行 select sum(case when c = '1' then A else B end) from tmp #oracle执行 select sum(decode(c,

  • oracle表空间表分区详解及oracle表分区查询使用方法

    此文从以下几个方面来整理关于分区表的概念及操作:1.表空间及分区表的概念2.表分区的具体作用3.表分区的优缺点4.表分区的几种类型及操作方法5.对表分区的维护性操作.(1.) 表空间及分区表的概念表空间:是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表, 所以称作表空间. 分区表: 当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区.表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间

  • Oracle 表空间查询与操作方法

    一.查询篇 1.查询oracle表空间的使用情况 select b.file_id 文件ID, b.tablespace_name 表空间, b.file_name 物理文件名, b.bytes 总字节数, (b.bytes-sum(nvl(a.bytes,0))) 已使用, sum(nvl(a.bytes,0)) 剩余, sum(nvl(a.bytes,0))/(b.bytes)*100 剩余百分比 from dba_free_space a,dba_data_files b where a.

  • Oracle基础学习之子查询

    首先使用子查询的时候注意事项包括,子查询可以嵌套多层和子查询需要圆括号()括起来,下面我们来看看详细的介绍. 基础介绍 1,wherer:子查询一般会返回单行单列 单行多列 多行单列 : 2,having:子查询会返回单行单列,同时表示要使用统计函数: 3,from:子查询返回多行多列数据(表结构): 4,select:返回单行单列 (一般不使用): 示例详解 where(进行数据行的筛选操作): a:查询出低于公司平均工资的雇员信息. select * from emp where sal<(

  • php连接oracle数据库及查询数据的方法

    本文实例讲述了php连接oracle数据库及查询数据的方法.分享给大家供大家参考.具体分析如下: php有强大的功能不但可以支持mysql,mssql,mysqli之个我们还可以与oracle数据连接,要让php支持oracle非常的简单我们只要把php.ini中的;extention = php_oci8.dll分号去掉即可. php支持oracle连接函数 php.ini文件中的配置,去掉 ;extention = php_oci8.dll,去掉前面的分号,重启apache就可以了,如果不行

  • oracle 查询表名以及表的列名

    1.查询表名: 复制代码 代码如下: select table_name,tablespace_name,temporary from user_tables [where table_name=表名] 其中:table_name:表名(varchar2(30)); tablespace_name:存储表名的表空间(varchar2(30)): temporary:是否为临时表(varchar2(1)). eg: select table_name,tablespace_name,tempora

  • oracle数据库常用的99条查询语句

    1. select * from emp; 2. select empno, ename, job from emp; 3. select empno 编号, ename 姓名, job 工作 from emp; 4. select job from emp; 5. select distinct job from emp; 6. select distinct empno, job from emp;说明:因为雇员编号不重复, 所以此时证明所有的列没有重复,所以不能消除掉重复的列. 7. 查询

  • ORACLE 如何查询被锁定表及如何解锁释放session

    ORACLE EBS操作某一个FORM界面,或者后台数据库操作某一个表时发现一直出于"假死"状态,可能是该表被某一用户锁定,导致其他用户无法继续操作 复制代码 代码如下: --锁表查询SQLSELECT object_name, machine, s.sid, s.serial# FROM gv$locked_object l, dba_objects o, gv$session s WHERE l.object_id = o.object_id AND l.session_id =

随机推荐