Oracle基础语法汇总(六)

2024年 5月 22日 71.6k 0

Oracle基础语法汇总(六)-1点击蓝色字关注“SQL数据库运维”,回复“SQL”获取2TB学习资源!Oracle基础语法汇总(六)-2

既往文章链接(点击即可跳转):

Oracle基础语法汇总(一)

Oracle基础语法汇总(二)

Oracle基础语法汇总(三)

Oracle基础语法汇总(四)

Oracle基础语法汇总(五)

锁和数据库对象

1.锁:数据库用来控制共享资源并发访问的机制。
锁的类型:行级锁,表级锁
行级锁:Oracle数据库支持多种行级锁类型,包括行级共享锁(SS)、行级独占锁(SX)和行级排他锁(X)。在事务处理时,可以通过SELECT语句加上FOR UPDATE子句来获取行级排他锁。

行级锁的例子:

    -- 启动第一个会话,开启事务并查询某行数据
    BEGIN TRANSACTION;
    SELECT * FROM your_table WHERE condition = value FOR UPDATE;

    -- 在第一个会话中,此时对该行的操作(如UPDATE、DELETE)将阻塞,直至第一个事务提交或回滚

    -- 启动第二个会话,尝试更新或删除第一个会话锁定的行
    UPDATE your_table SET column = value WHERE condition = value;
    -- 或
    DELETE FROM your_table WHERE condition = value;

    -- 在第二个会话中,上述更新或删除操作将会阻塞,直至第一个事务提交或回滚

    -- 第一个会话提交或回滚事务
    COMMIT; -- 或者 ROLLBACK;

    -- 第二个会话中的更新或删除操作将执行,因为行级锁已被释放

    在使用下列语句时,Oracle会自动应用行级锁:
    insert,update,delete,select…… for update
    select……for update允许用户一次锁定多条记录进行更新。
    使用commit or rollback释放锁。
    表级锁语法:

      LOCK TABLE tables IN lock_mode MODE [ WAIT [, integer] | NOWAIT ];

      表级锁类型lock_mode :

      Oracle基础语法汇总(六)-3

      2.数据库对象
      Oracle数据库对象又称模式对象,是数据库中用于存储数据和对数据进行操作的结构。数据库对象是逻辑结构的集合,最基本的数据库对象是表。

      常见的Oracle数据库对象包括表(Table)、视图(View)、序列(Sequence)、索引(Index)、存储过程(Procedure)、函数(Function)、包(Package)、触发器(Trigger)等。

      序列

      在Oracle数据库中,序列(Sequence)是用来生成数据库表中唯一数字序列的数据库对象。序列通常用于自动生成主键值。

      创建序列的基本语法如下:

        CREATE SEQUENCE sequence_name
        START WITH initial_value
        INCREMENT BY increment_value
        MINVALUE minimum_value
        MAXVALUE maximum_value
        CYCLE | NOCYCLE
        CACHE cache_size
        ORDER | NOORDER;

        创建序列的示例

          CREATE SEQUENCE my_sequence
          START WITH 1
          INCREMENT BY 1
          MINVALUE 1
          MAXVALUE 9999999
          NO CYCLE
          CACHE 20;----指定内存中预先分配的序号

          使用序列生成新的序列号的语法如下:

            SELECT sequence_name.NEXTVAL FROM dual;

            例如,要生成序列my_sequence的下一个值,你可以执行:

              SELECT my_sequence.NEXTVAL FROM dual;

              更改删除序列:

                alter sequence my_sequence maxvalue 1000000;--不能修改其start with 值

                这将返回序列的下一个值,并且更新序列以便下一次调用返回下一个递增的值。

                要删除一个序列,可以使用以下语法:

                  DROP SEQUENCE sequence_name;

                  例如,要删除上面创建的序列my_sequence,你可以执行:

                    DROP SEQUENCE my_sequence;

                    索引

                    索引是一种用于提高查询性能的数据库对象。它可以让你快速找到存储在表中的特定数据,而不需要查看表中的所有数据。
                    索引类型:
                    唯一索引,位图索引,组合索引,基于函数的索引,反向键索引
                    创建标准索引:

                      create index user_id_index on user_tbl(id) tablespace schooltbs;

                      重建索引:

                        alter index user_id_index rebuild;

                        删除索引:

                          drop index user_id_index;

                          创建唯一索引:

                            create unique index user_id_index on user_tbl(id);

                            创建组合索引:

                              create index name_pass_index on user_tbl(user_name,password);

                              创建反向键索引:

                                create index user_id_index on user_tbl(id) reverse;

                                查看已经存在的索引,可以使用以下SQL查询:

                                  SELECT index_name, table_name, column_name
                                  FROM user_ind_columns
                                  WHERE table_name = 'EMPLOYEES';

                                  Oracle基础语法汇总(六)-4

                                  点击关注“SQL数据库运维”,后台或浏览至公众号文章底部点击“发消息”回复关键字:进群,带你进入高手如云的技术交流群。后台回复关键字:SQL,获取学习资料。

                                  动动小手点击加关注呦☟☟☟

                                  相关文章

                                  Oracle如何使用授予和撤销权限的语法和示例
                                  Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
                                  下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
                                  社区版oceanbase安装
                                  Oracle 导出CSV工具-sqluldr2
                                  ETL数据集成丨快速将MySQL数据迁移至Doris数据库

                                  发布评论