Oracle基础语法汇总(六)17认证网

正规官方授权
更专业・更权威

Oracle基础语法汇总(六)

既往文章请浏览上一篇: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认证👉技术资料

想了解更多干货,可通过下方扫码关注

详情咨询

可扫码添加上智启元官方客服微信👇

未经允许不得转载:17认证网 » Oracle基础语法汇总(六)
分享到:0

评论已关闭。

400-663-6632
咨询老师
咨询老师
咨询老师