Oracle基础语法汇总(六)

科技   2024-05-22 08:23   河南  

点击蓝色字关注“SQL数据库运维”,回复“SQL”获取2TB学习资源!

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

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

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

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

序列

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

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

CREATE SEQUENCE sequence_nameSTART WITH initial_valueINCREMENT BY increment_valueMINVALUE minimum_valueMAXVALUE maximum_valueCYCLE | NOCYCLECACHE cache_sizeORDER | NOORDER;

创建序列的示例

CREATE SEQUENCE my_sequenceSTART WITH 1INCREMENT BY 1MINVALUE 1MAXVALUE 9999999NO CYCLECACHE 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_nameFROM user_ind_columnsWHERE table_name = 'EMPLOYEES';


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


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

SQL数据库运维
专注于SQL数据库相关领域,Oracle、MySQL、SQL Server、PostgreSQL、大数据,数据分析等相关技术内容的分享,关注回复「SQL」可免费获取海量学习资料,包含文档、视频及部分常用软件安装包和日常小工具等资源。
 最新文章