• oracle入门笔记二


    *****一、事务与锁(TCL Transaction Controller Language)

    1、什么是事务

    事务是把一堆SQL语句绑定在一起执行,在执行过程中,如果有一条SQL语句执行失败,

    那么所有的数据都会回滚到执行前的状态,要么一起成功,要么一起失败。

    使用begin end语句块把SQL语句绑定在一起

    2、事务有两种

    commit     提交事务

    rollback    回滚事务

    只有DML才会用到事务

    3、什么是锁

    锁是事务的保证,事务开启后就会产生锁,直到事务被提交或回滚,锁被释放,如果事务一直

    不提交,锁就一直存在着,其他线程就不能修改此数据,不能更改表结构。

    不能修改此数据是行共享锁,锁数据

    不能更改表结构是共享锁, 锁表

    二、DQL(数据库查询语言)

    1、普通查询语句

    select * from 表名                                                                    全部行全部列

    select 字段1, 字段2 from 表名                                                  全部行部分列

    select 字段1, 字段2 from 表名 where 条件字段 = 值                 部分行部分列

    2、where

    条件:= != <> > >= < <=

    多条件查询:条件与条件之间使用and或or进行连接

    and:并且的关系,两个条件都必须满足

    or:或者的关系,两个条件满足一个就可以

    3、模糊查询

    在where条件中使用like查询,称为模糊查询,只有字符类型的字段才能做模糊查询,

    模糊查询类型如下:

    a、字段 like '%a'              前模糊查询,以a字母结尾的都会被查询出来

    b、字段 like 'a%'              后模糊查询,以a字母开头的都会被查询出来

    c、字段 like '%a%'           完全模糊查询,包含a字母的都会被查询出来

    d、字段 like '_a%'            第二个字母是a的都会被查询出来

    e、字段 like '_a_'              总长度是3,第二个字母是a的都会被查询出来

    注:模糊查询查询效率很低,数据量过多时,查询不出来,目前使用搜索引擎技术代替

           在数据库查询时,能不用模糊查询尽量避免

       

    4、in与not in查询

    in与not in是判断某个字段的值是否在指定范围内,格式如下:

    in查询:

    select * from 表名 where 字段 in (值1, ......,  值N);

    not in查询

    select * from 表名 where 字段 not in (值1, ......,  值N);

    5、嵌套查询

    一条SQL语句包含另一条SQL语句,这样的查询称为嵌套查询,一般用于in查询,嵌套查询是

    有内向外执行,格式如下:

    select * from 表名 where 字段 in (

    select 字段 from 表名

    );

    注:内查询的结果是一个值,外查询条件请使用=,多个值用in

    6、exists查询

    exists查询与in查询是没有区别的,两种书写格式,格式如下:

    select * from 表名 t2 where exists (

    select 字段 from 表名 t1 where t1.字段 = t2.字段

    );

    *****7、in与exists区别

    in与exists都是用于嵌套查询,查询结果没有任何区别

    外表数据大于内表数据,使用in

    内表数据大于外表数据,使用exists

    8、去重查询

    在Oracle中有三种方式可以去重,使用distinct关键字去重,distinct关键字必须写select后面

    第一个,distinct后面有几个字段,就根据几个字段去重,格式如下:

    select distinct 字段1, 字段2 from 表名;

    9、排序查询

    在SQL语句中使用order by进行排序,asc表示升序、desc表示降序,默认是升序,

    可以省略不写,格式如下:

    a、升序(默认)

    select * from 表名 order by 排序字段 asc;

    b、降序

    select * from 表名 order by 排序字段 desc;

    c、混合使用

    select * from 表名 order by 排序字段1 asc, 排序字段2 desc;

    注:排序字段靠前优先级高,排序字段靠后面优先低

    10、聚合函数

    max()                    最大值

    min()                     最小值

    avg()                     平均值

    sum()                    总和

    count()                  统计个数

    一、转换函数

    数字                      to_number()

    字符                      to_char()

    时间                      to_date()

    二、分组查询

    在SQL语句中使用group by进行分组,语句如下:

    select 分组字段, 聚合函数(其他字段) from 表名 group by 分组字段

    注:分组语句只能查询分组字段,查询其他字段必须结合聚合函数

    分组带条件(having)

    group by语句跟having进行条件筛选,having的条件必须结合聚合函数,不能是字段直接比较,

    格式如下:

    select 分组字段, 聚合函数(其他字段) from 表名 group by 分组字段

    having  聚合函数(其他字段) 比较运算符 值

    什么是分组查询

    在SQL语句中使用group by进行分组,分组语句只能查询分组字段,查询其他字段必须

    结合聚合函数,分组带条件使用having语句,having的条件必须结合聚合函数,

    不能是字段直接比较。

    group by 是去重语句之一

    *****三、多表查询

    1、多表查询的种类

    a、内连接查询

    b、外连接查询

    I、左外连接

    II、右外连接

    III、全外连接

    c、自连接

    d、交叉连接(笛卡尔积)

    2、内连接查询

    表与表之间通过关联条件进行查询,两个表符合关联条件的数据都会被查询出来,格式如下:

    select * from 表1 t1 inner join 表2  t2 on t1.关联字段 = t2.关联字段;

    select * from 表1 t1, 表2 t2 where t1.关联字段 = t2.关联字段;

    3、自连接查询

    一个表自己与自己进行连接查询,称为自连接,格式如下:

    select * from 表 t1 inner join 表  t2 on t1.关联字段 = t2.关联字段;

    select * from 表 t1, 表 t2 where t1.关联字段 = t2.关联字段;

  • 相关阅读:
    基于html+css的图展示97
    vue+elementUI实现指定列的单元格可编辑
    51单片机:实现CSGO中C4下包功能(附功能实现视频和代码详解)
    PhantomReference 和 WeakReference 究竟有何不同
    前端后端的爱恨情仇
    论文解读(SUBG-CON)《Sub-graph Contrast for Scalable Self-Supervised Graph Representation Learning》
    java计算机毕业设计远程教学系统录屏源程序+mysql+系统+lw文档+远程调试
    【云原生之K8s】 Pod基础概念
    SpringBoot入门教程:浅聊POJO简单对象(VO、DTO、Entity)
    element-ui的el-tree组件实现单选功能及选择子节点,获取所有父级节点或选中所有父级节点
  • 原文地址:https://blog.csdn.net/a2285786446/article/details/133773008