Oracle数据库 拾漏补缺

时间:2022-04-29
本文章向大家介绍Oracle数据库 拾漏补缺,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

select语句的基本使用

可以查询需要的列,行,可以进行多表链接,连接查询。

select e.*,e.sal/30 from p_emp e

select 后面跟的是要显示的结果,可以是通过运算或者连接符号得出的伪列

null  空值

在数据库中不确定的值,未定义的值叫做空值

空值不能引入到运算中,+ - * / 和空值的结果都是空

注意:在查询中可以给表定义一个别名以便于多个表的区分

||  链接运算符 

||  运算符可以链接列或者字符串到另一个列,生成的字符串表达式作为一个目标列

--将姓名和职位显示到一起
select e.ename||e.job from p_emp e ;
--更有好的显示方法
select e.ename||'   的职务是  '||e.job from p_emp e ;

||  操作符也可以用于批量操作

--生成批量删除表命令
select 'drop table '|| tname || ';' from tab

distinct  查询去重复

--去重复
select distinct e.job from p_emp e;

限制数据的返回

where  关键字

where 后面跟判断语句  只有表中结果为 true 结果会显示

注意:如果用字符作条件,需要注意大小写

查询Student表中“95031”班
select s.* from student s where s.class= '95031'

and:连接条件,  与

or: 或

not: 非

in:属于

后面可以是多个数据,但数据类型需要一致

查找空值

不能用 = , 因为在 select 中 = 是比较大小,但是 null 空值 没有大小

注意: 在 update 中, =  是赋值, = 后面可以跟 null。

应使用 is  not  null  

--去空值
select e.job from p_emp e where e.mgr is not null;

 like 模糊匹配

 exits:exists其实等同于表关联后,只取主表部分内容而已,用exists时 小表在前大表在后

connect by

一般用来查找存在父子关系的数据,也就是树形结构的数据;其返还的数据也能够明确的区分出每一层的数据。

select * from table [start with condition1]
    connect by [prior] id=parentid
--这种用法就表示从下往上查找数据,可以理解为从叶子节点往上查找父级几点,用第一层数据的parentid去跟表记录里面的id进行匹配,匹配成功那么查找出来的就是第二层数据;
--上面的那种就是从父级节点往下查找叶子节点。
select * from table [start with condition1]
    connect by id= [prior] parentid
--第一种,修改prior关键字位置
select t.*, level, CONNECT_BY_ROOT(id)
  from tab_test t
 start with t.id = 4
connect by t.id = prior t.fid;

--第二种,prior关键字不动 调换后面的id=fid逻辑关系的顺序
select t.*, level, CONNECT_BY_ROOT(id)
  from tab_test t
 start with t.id = 4
connect by prior t.fid = t.id;