oracle数据库基础学习二

本文深入解析SQL查询语句的运用,包括where子句、特殊运算符、逻辑条件连接符、orderby子句及函数的使用,通过实例演示如何高效筛选、排序和处理数据。

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

一、select查询语句

1、where子句(对查询结果进行筛选、过滤)

常用的比较运算符:= != > < >= <=

字符串在比较相等时,一样使用符号!

格式:select 列名 from表名 where 查询条件;

案例:查询员工信息(id,last_name,salary)要求id等于10

语句:select id,last_name,salary,from emp where id =10;

练习:查询员工的信息(id,last_name,salary)要求id 大于10

语句:select id,last_name,salary from emp where id >10;

2、特殊的条件:

极限条件:永真条件,永假条件

永真条件:

select * from emp where 1=1;

永假条件:

select * from emp where 1!=1;

3、对于字符串进行比较时候,需要注意的地方:

  • 在oracle数据库中字符串需要使用单引号引住!
  • 在oracle中字符串是大小写敏感的,也就是比较时区分大小写。

案例:查询员工查询的信息(id,last_name,salary)条件:last_name等于Chang

语句:select id,last_name,salary from emp where last_name='Chang';

二、特殊的运算符(关键字)

1、between:表示一个闭合区间(包含开始和结尾)

使用方法:。。。where字段between 初始范围 and 最大范围;

案例:查询员工的信息(id,last_name,salary,条件为:工资在800到1000内的员工

语句:select id,last_name,salary from emp where salary between 800 and 1000;

2、in:表示从某个取值列表中匹配!

使用方法:。。。where字段in(取值1,取值2,取值3....取值n);

案列:查询领导编号(manager_id)为1或者是2或3的员工信息(id,last_name,salary)

语句:select id,last_name,salary from emp where manager_id in(1,2,3);

3、对于null值如何进行判断

对于null值得判断,需要使用 is null 来判断

格式:。。。。where 字段 is null;

案例:查询领导编号为null的员工;

语句:select id from emp where manager_id is null;

4、模糊查询——关键字:like

使用方式:...where 字段名 like '模糊格式文本';

文本中可以存在两种特殊含义的符号(通配符):

  • _:表示一个任意的文本字符
  • %:表示0-n个任意的文本字符
  • 转义字符:escape

案例1:查询以晓阳开头的文本:

语句:。。。where 字段名 like '晓阳%';

案例2:查询包含娃娃的文本:

语句:。。。where 字段名 like '%娃娃%';

案例3:查询倒数第三个字为轩的文本

语句:。。。where 字段名 like ‘%轩__’

案例4:查询第二个字符为飞的文本

语句:。。。where 字段名 like '_飞%';

案例5转义字符的使用:查询user_table表格中table_name 中以s_开头的数据

select table_name from user_tables where table_name like 's\_%' escape '\';

三、逻辑条件连接符

1、用于连接多个条件

  • 与:and

案例:查询员工的ID为6,并且领导编号为2的员工信息(id,last_name,salary)

语句:select id,last_name,salary from emp where id=6 and manager_id=2;

  • 或: or

案例:查询员工的薪资为1400或者1450的员工的信息(id,last_name,salary)

select salary,id,last_name from emp where salary=1400 or salary=1450;

  • 非:not(闭区间的not使用,得到不属于闭区间的内容)

格式:。。。where 字段名称 not between 最小范围 and最大范围;

案例:获取员工的信息(id,last_name,salary)条件为薪资不在1000-1300之间的员工

语句:select id,last_name,salary from emp where salary not between 1000 and 1300;

  • in的使用:从结果集中忽略列表中的值!

格式:where字段名称 not in(值1,值2...值n);

案例:查询员工薪资不是1400和1450的员工信息(id,last_name,salary)

语句:select id,last_name,salary from emp where salary not in (1400,1450);

  • is null的not使用

格式:where 字段名称 is not null (取出不为null的数据行)

案例:获取员工的信息,条件为manager_id 不为null

语句:select id ,last_name,salary from emp where manager_id is not null;

四、order by 子句的排序(order by 子句如果出现必须放在select语句的最后面)

order by可以对查询的结果集,指定排序的规则

规则:升序(ASC)\降序(desc)

1、格式:order by排序的字段【排序顺序】;

案例:查询所有员工的信息(Id,last_name,salary),按照部门编号dept_id进行升序;

语句:select id,last_name,salary from emp order by dept_id asc;

特殊情况:null在参与排序时候,是最大的!

案例:查询员工的信息(id,last_name,salary,manager_id),按照领导编号(manager_id)降序排序

语句:select id,last_name,salary,manager_id from emp order by manager_id desc;

2、多字段多规则排序

格式:order by 排序字段1 规则1,排序字段2 规则2.。。。排序字段N 规则N;

按照两个排序规则解释含义:

在排序时,按照排序字段1与规则1进行排序,如果排序字段1的值相同,则按照字段2排序

案列:按照部门编号(dept_id)降序排列,如果部门编号相同,则按照员工薪资倒序排列,如果员工薪资倒序排列,如果员工工资相同按照员工编号(id)升序排列

语句:select id,last_name,salary,manager_id from emp order by manager_id desc,salary desc,id asc;

五、函数

1、单行函数(针对每一行的数据都会返回一个结果,dual表格进行函数的测试)

常用的字符串处理单行函数

  • upper(列名/字符串):把字符串结果改为全大写

案例:select upper(‘guojiao’) from dual;

  • lower(列名/字符串):把字符串结果改为全小写

案例:select lower('Guo Jiao')from dual ;

  • initcap(列名/字符串):单词首字母大写

案列:select initcap ('dong fei')from dual;

  • length(列名/字符串):获取字符串的长度

案例:select length(‘guojiao’)from dual

  • substr(参数1,参数2,参数3):截取字符串

参数1:要被截取的字符串

参数2:截取的开始下标从参数1开始,支持负数(负数表示倒数的下标)

参数3:截取的长度

案例:select substr('12345678',0,5)from dual;结果:12345

select substr('12345678',1,5)from dual;结果:12345

select substr('12345678',-5,5)from dual;结果:45678

  • concat(参数1,参数2):拼接字符串

将参数1和参数2进行拼接返回

select concat('guojiao','ai bian cheng') zhenai from dual;

  • replace(参数1,参数2,参数3):替换字符串中的内容

参数1:要被替换内容的原字符串

参数2:在参数1中存在的要被替换的字符串片段

参数3:替换的新的字符串片段内容

案例:select replace(‘guojiao ai biancheng’,'biancheng','ji suan ji bian cheng') zhenai from dual ;

  • nvl(参数1,参数2)处理空值

如果参数1为空则返回参数2,如果参数1不为null则返回参数1;

案例:select nvl(manager_id,0)from emp;

常用的处理number类型数据的单行函数:

  • round(参数1,参数2):四舍五入

参数1:要被四舍五入的数字

参数2:要保留的小数点后的位数,可以省略,默认值是0

案列:select round (3.1415926,3)from dual;结果:3.142

  • trunc(参数1,参数2):截取数字

参数1:要截取的数字

参数2:要保留的小数点后的位数,可以省略,默认为0

案例:select trunc(3.1415926,3)from dual;

  • to_char(参数 1,参数2):格式化显示

参数1:要被格式化的数字/列名

参数2:格式化的模板,是一个字符串类型的参数

模板中的特殊字符:

-FM:格式的开头,可以忽略

-L:本地(语言环境)货币单位

-$:美元符号

-9:分两种情况:

1、数字9出现在小数点的后面,在模板中表示1-9的任意数字(不建议)

2、数字9出现在小数点前面,在模板中表示0-9的任意数字

-0:分两种情况:

1、数字0出现在小数点的后面,在模板中表示0-9的任意数字

2、数字0出现在小数点的前面,数字的前面,在模板中表示强制显示前导零

- . :小数点

-,:分隔符

 

案列:查询s_emp表格中所有的salary,并将其进行格式化显示;

格式化:例如2500美元应显示为$002,500.00

格式化:FM$099,999.00(建议)|FM$099,999.99(不建议)

select to_char(salary,'FM$099,999.00'),id ,last_name from emp;

注意:在小数后的后面建议编写0,不要写9!

  • 函数的相互嵌套

函数在调用时候,都有返回值存在,将一个函数的返回值传递给另一个参数进行使用!

练习:查询emp表格中的last_name最后的5个字符截取(substr)出,以大写(upper)方式显示出来

语句:select upper(substr(last_name,-5,5))from emp;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值