oracle 运算符和表单查询 (学习Oracle的第二天)

一、select语句的基本结构

 

select 子句  from 子句  [where 子句]  [group by 子句]  [having 子句]   [order by 子句]
 

select * from emp;
select empno , ename from emp;  /*投影,选取某些字段的数据 */

/*选择:查询符合条件的记录*/

查询工资不高于2500的员工工资
SELECT * from emp where sal <= 2500;

给表和字段取别名
select * from emp;

SELECT empno as 员工编号 , ename as 姓名 from emp;
SELECT empno 员工编号 , ename 姓名 from emp;
SELECT empno as "员工编号" , ename as "姓名" from emp;   //可以双引号
SELECT empno as '员工编号' , ename as '姓名' from emp;   //不能单引号

SELECT * from emp 员工表;  //不能加as

算术运算符
SELECT 10+5 from dual;  /*dual 是一个用来显示单行单列的一张系统表 */
SELECT 10-5 from dual;
SELECT 10*5 from dual;
SELECT 10/5 from dual;
SELECT 10%5 from dual;  //报错 因为%是一种通配符
SELECT MOD(10,5) from dual;  //求余
SELECT 10-5.8 from dual;  //4.2  挺精确

例:--把所有的员工的工资加1000元
SELECT ename , sal+1000 as 加薪后工资 from emp;

连接运算符
SELECT empno||ename as 员工编号和性名 from emp;
select concat(empno,ename) as 员工编号和性名 from emp;

select ename||'的月薪是'||sal as 员工月薪 from emp;
select ename||'的年薪是'||sal*12 员工年薪 from emp;

在日期上使用加法或减法运算符,加减操作的数字表示天数。
  例如,在日期上加3天
        SELECT TO_DATE('2012-10-12')+3 from dual;  //日期格式写你设置的格式
    在某日期上减3天
        SELECT TO_DATE('2012-10-12')-3 from dual;
  今天在过100天是几月几号
    SELECT sysdate+100 from dual;


二、比较运算符或者关系运算符

=              等于(赋值也是这个)    
<>或!=     不等于    
<              小于
>              大于
<=           小于等于
>=           大于等于    
ANY        比较值列表中的任何一个值
ALL         比较列表值中的所有值

 =运算符

select * from emp;
--查询job为MANAGER的员工信息
SELECT * from emp where job = 'MANAGER';  /*区分大小写*/
update emp set hiredate = '1998-10-25' where empno = 7499;

<>和!=运算符

--查找部门编号DEPTNO不等于20的员工信息
select * from emp where deptno <> 20;
select * from emp where deptno != 20;

ANY运算符
例如:查询emp表,empno值只要大于列表(7369,7521,7499)中的任意一个值即满足条件
select * from emp where empno > ANY(7369,7521,7499);
等同于:
select * from emp where empno > 7369 or empno > 7521 or empno > 7499;

ALL运算符
例如,查询emp表,empno值只要大于列表(7369,7521,7499)中的所有值即满足条件
select * from emp where empno > ALL(7369,7521,7499);
等同于:
select * from emp where empno > 7369 and empno > 7521 and empno > 7499;

 


三、SQL运算符

 SQL运算符可以进行模式匹配,像字符串、列表值、NULL值。

 LIKE:匹配字符串
 IN:匹配列表值
 BETWEEN:匹配范围值
 IS NULL:匹配空值
 IS NAN:匹配非数字值

--同样可以在上述运算符前加NOT取反
 如:NOT LIKE,NOT BETWEEN,IS NOT NULL,IS NOT NAN

 

NULL实现空值查询

--例如:查找comm字段等于null的员工信息
select * from emp where comm is null;
--例如:查找comm字段不等null的员工信息
select * from emp where comm is not null;  //null 不能使用 <>或!=
--处理NULL值
  NULL值被查询出来的时候没有显示信息,如何告知用户这是空字符串还是NULL,
这可以通过NVL()函数来进行处理。是NULL用0替代。
   select empno,ename,NVL(comm,0) FROM emp;

LIKE实现模糊查询

例如:查找名字以S开头的员工资料
select * from emp where ename like 'S%';

可以使用普通字符及通配符进行组合,通配符如下:
 下划线(_):表示匹配某个位置的字符
 百分号(%):表示在某个位置的任意个字符
例如:匹配'_o%',表示第一个字母任意,第二个是o,%表示最后可以是任意个字母

  如果要查询实际的下划线或百分号就需要使用ESCAPE选项区分通配符
  ESCAPE选项告知数据库如何区分通配符和要匹配的字符,可以使用反斜杠(\),
  例如:查找员工姓名中带%的员工姓名
  select ename from emp where ename LIKE '%\%%' ESCAPE '\';
  insert into emp values(7988,'张%风','CLERK',7902,'1998-10-22',1000,200,20);


查找名字第二个是A的员工资料
select * from emp where ename like '_A%';

BETWEEN实现范围查询

例如:查找工资在1500-3000之间的员工资料
select * from emp where sal between 1500 and 3000;  //别写颠倒了
等同于:
select * from emp sal >= 1500 and sal <= 3000;

IN筛选某列的值是否在列表中

例如:查询empno在(7369,7521,7499)中的员工
select * from emp where empno in(7369,7521,7499);
例如:查询empno不在(7369,7521,7499)中的员工
select * from emp where empno not in(7369,7521,7499);

EXISTS(存在)运算符

select * from emp where exists(select * from emp);  
不关心括号到底是啥值,只关心能不能查出记录,如果能查询出则执行where前的语句
select * from emp where exists(select * from emp where empno = 9999);

逻辑运算符

AND运算符  --->  与(并且)
OR运算符   --->  或(或者)

排序(ORDER BY)

 可以使用ORDER BY对查询的结果进行排序,可以对一列或多列进行排序,
ORDER By必须在FROM子句后或者WHERE子句后(如果有WHERE子句)。
  
  例如:查询EMP表,并对ename列进行排序
      select * from emp order by ename;

  默认情况下,ORDER BY是按照升序(ASC)排序,也可以使用DESC指定为
降序排序。
  
  例如:查询EMP表,先按empno升序排序,再按ename降序排序
      select * from emp order by empno ASC,ename DESC;

  同样可以是列的位置编号,指定哪列需要需要进行排序
  
  例如:查询emp表,要对查询的第二列ename列进行降序排序
      select * from emp order by 2 DESC;

DISTINCT

 在SELECT语句中,使用DISTINCT关键字删除重复的行
  例如:查询公司有多少个职位类型。(查询emp表中,删除重复的job值)
    select distinct job from emp;

SELECT中使用参数

  语法:使用&+参数名
  例如:查询员工编号为某数值的员工
  select * from emp where empno = &arg;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值