既往文章请浏览上一篇:17认证网👉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_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’;
未完待续…后续请浏览下一篇:17认证网👉Oracle认证👉技术资料
想了解更多干货,可通过下方扫码关注
详情咨询
可扫码添加上智启元官方客服微信👇