当前位置:网站首页 > SQL数据库编程 > 正文

oracle查看锁表SQL(oracle查看锁表SQL)



实验内容

目录

一、创建表语句

二、修改表语句

三、DML语句练习

四、删除表语句


前置条件:
        在中创建了以自己姓名为名的本人用户,并使用system用户完成了BOOKS和CUSTOMERS表的创建,在system.books表中已经插入数据('','Oracle数据库管理与开发','李真',48)。
        注意:Oracle中的DML语句默认需要COMMIT提交事务之后才会保存到硬盘数据中,因此如果system.books表中的数据消失,请重新插入该数据之后,使用COMMIT;语句完成事务提交。

一、创建表语句

先登录system用户为本人用户(本文本人用户用*代替)进行CREATE TABLE权限授权。

如果缺少SELECT权限,还要登录sys账户为本人用户进行授权。

 参考:

SQL> alter user * quota unlimited on BOOKTBS1;
用户已更改。
SQL> GRANT SELECT ON system.books TO *;

以下操作使用本人用户完成

1.基于复制表创建的语句,在本人用户下复制SYSTEM.BOOKS表在表空间BOOKTBS1中创建一张BOOKS表,并复制其中的数据。

2.基于复制表创建的语句,在本人用户下复制SYSTEM.CUSTOMER表在表空间BOOKTBS1中创建一张CUSTOMERS表,只保留表结构,不包含其中的数据(查询数据时指定查不到数据的条件)。

SQL> create table CUSTOMERS tablespace BOOKTBS1

        as select * from SYSTEM.CUSTOMERS where 1=2;

3.在BOOKTBS1表空间下创建如下几张表格,注意选择列级或者表级约束定义语句以创建表格中的约束。

SQL> ALTER TABLE CUSTOMERS ADD PRIMARY KEY (CUSTOMER_ID);

表已更改。

SQL> CREATE TABLE ORDERS
  2  (ORDER_ID NUMBER(4) PRIMARY KEY,
  3  CUSTOMER_ID NUMBER(4),
  4  ORDERDATE  DATE NOT NULL,
  5  FOREIGN KEY (CUSTOMER_ID) REFERENCES CUSTOMERS(CUSTOMER_ID));



表已创建。

SQL> CREATE TABLE ORDERITEM
  2  (ORDER_ID NUMBER(4),
  3  ITEM_ID NUMBER(4),
  4  ISBN VARCHAR2(50) NOT NULL,
  5  QUANTITY NUMBER(4),
  6  PRIMARY KEY(ORDER_ID,ITEM_ID),
  7  FOREIGN KEY(ORDER_ID) REFERENCES ORDERS(ORDER_ID));





表已创建。

4.查看BOOKS表和ORDERITEM表的结构和其中的约束。 使用desc命令查看表结构;查询数据字典user_constraints查看表中的约束名称和约束类型。

SQL> DESC ORDERSITEEM;
SQL> DESC BOOKS;
SQL> SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE
  2  FROM USER_CONSTRAINTS
  3  WHERE TABLE_NAME = 'ORDERITEM';
SQL> SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE
  2  FROM USER_CONSTRAINTS
  3  WHERE TABLE_NAME = 'BOOKS';







二、修改表语句

1.删除表BOOKS中的cost列。

2.向表BOOKS中重新添加COST列,字段类型为NUMBER(6,2)。

3.向表BOOKS中添加category类别列,字段类型为VARCHAR2(10)。

4.修改BOOKS 表中title列的字段类型为VARCHAR2(20),并设置唯一约束UNIQUE。

5.使用表级约束添加语句,为BOOKS表中的author列添加UNIQUE约束,约束名为UA。

6.使用表级约束删除语句,删除上一步添加的约束UA。


三、DML语句练习

1.修改BOOKS表中之前插入的数据('','Oracle数据库管理与开发','李真',48)的cost字段为460.5,category字段为计算机。

SQL> UPDATE BOOKS

        2 SET COST=460.5,CATEGORY='计算机'

2.向BOOKS表、CUSTOMERS表、ORDERS表、ORDERITEM表中插入如下几条数据:

SQL> INSERT ALL
  2  INTO BOOKS(ISBN,TITLE,AUTHOR,COST,CATEGORY)
  3  VALUES('','计算机网络','谢希仁',500,'计算机')
  4  INTO BOOKS(ISBN,TITLE,AUTHOR,COST,CATEGORY)
  5  VALUES('','三体','刘慈欣',320,'小说')
  6  INTO BOOKS(ISBN,TITLE,AUTHOR,COST,CATEGORY)
  7  VALUES('','球状闪电','刘慈欣',360,'小说')
  8  INTO BOOKS(ISBN,TITLE,AUTHOR,COST,CATEGORY)
  9  VALUES('','活着','余华',400,'小说')
 10  SELECT * FROM DUAL;
已创建4行。









SQL> INSERT ALL
  2  INTO CUSTOMERS(CUSTOMER_ID,NAME,PHONE)
  3  VALUES(1,'张三丰','')
  4  INTO CUSTOMERS(CUSTOMER_ID,NAME,PHONE)
  5  VALUES(2,'张无忌','')
  6  SELECT * FROM DUAL;
已创建2行。






SQL> INSERT
  2  INTO ORDERS(ORDER_ID,CUSTOMER_ID,ORDERDATE)
  3  VALUES(1000,1,TO_DATE('24-10月-2024'));
已创建 1 行。




SQL> INSERT ALL
  2  INTO ORDERITEM(ORDER_ID,ITEM_ID,ISBN,QUANTITY)
  3  VALUES(1000,1,'',5)
  4  INTO ORDERITEM(ORDER_ID,ITEM_ID,ISBN,QUANTITY)
  5  VALUES(1000,2,'',10)
  6  SELECT * FROM DUAL;
已创建2行。






3.查询姓刘的作者编写的书籍信息,并按照价格降序排列。

 SQL> SELECT * FROM BOOKS WHERE AUTHOR LIKE '刘%' ORDER BY COST DESC;

4.删除顾客信息中,顾客名为张无忌的数据。

5.查询订单编号为1000的订单订购的书籍的ISBN号,书名和数量。

SQL> SELECT BOOKS.ISBN,BOOKS.TITLE,ORDERITEM.QUANTITY

        2 FROM ORDERITEM,BOOKS

        3 WHERE ORDERITEM.ISBN=BOOKS.ISBN AND ORDERITEM.ORDER_ID=1000;

6.查询本人用户下ORDERITEM表中的约束名、约束类型和约束绑定的列。

SQL> SELECT UC.CONSTRAINT_NAME, UC.CONSTRAINT_TYPE,

        2 CC.COLUMN_NAME FROM USER_CONSTRAINTS UC

        3 JOIN USER_CONS_COLUMNS CC

        4 ON UC.CONSTRAINT_NAME = CC.CONSTRAINT_NAME

        5 WHERE UC.TABLE_NAME = 'ORDERITEM'; 


四、删除表语句

1.尝试使用本人用户删除system.books表,观察是否能够删除,思考如何解决

答:不能删除;登录数据库管理员或者登录system用户删除system.books表,还可以通过为本人用户授予 DROP ANY TABLE 权限解决这个问题。

SQL> DROP TABLE SYSTEM.BOOKS;

2.切换到system用户,删除system.customers表。

SQL> DROP TABLE SYSTEM.CUSTOMERS;

表已删除。

3.为本人用户授权 drop any table系统权限,再切换到本人用户,使用本人用户尝试删除system.books表,观察是否能删除。答:能删除。

SQL> DROP TABLE SYSTEM.BOOKS;

表已删除。


五、提交 

 SQL> commit;

提交完成。


注:如有问题请在评论区或者后台留言! 

到此这篇oracle查看锁表SQL(oracle查看锁表SQL)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • SQL增删改查面试题(sql面试常见增删改查)2025-10-09 07:54:08
  • sqlldr(Sqlldr导入限定条件)2025-10-09 07:54:08
  • mysql主键重复怎么解决(mysql主从主键冲突)2025-10-09 07:54:08
  • sql窗口函数(SQL窗口函数sum求近三天的和)2025-10-09 07:54:08
  • sql server打开sql文件(sql server中打开)2025-10-09 07:54:08
  • sql文件导入sql数据库(sql如何导入sql文件)2025-10-09 07:54:08
  • mysql主键约束关键字是什么(mysql约束的关键字)2025-10-09 07:54:08
  • sql文件格式化在线(sql语句格式化工具)2025-10-09 07:54:08
  • sql文件转json(sql 转json)2025-10-09 07:54:08
  • plsql怎么出现注册码(plsql注册码在哪里输入)2025-10-09 07:54:08
  • 全屏图片