Oracle(四)这些SQL基础你都会了么

目录

1.SQL语言基础

1.1 DDL(数据定义语言DDL)

1.2 DCL(数据控制语言DCL)

1.3 DML(数据操纵语言DML)

 SQL语句的一些规范:

2.用户与模式

      2.1 用户(user):

     2.2 模式/方案(schema) :

3.select语句的使用(重点)

4.SQL中常用内置函数(重点)

5.子查询(难点)

6.Oracle事务处理(重点)

6.1 事务的基本概念

6.2 事务控制

6.3 事务回退

6.4 事务回退举例

                                           

 


1.SQL语言基础

1.1 DDL(数据定义语言DDL

CREATE
ALTER
DROP

1.2 DCL(数据控制语言DCL

GRANT
REVOKE

1.3 DML(数据操纵语言DML

SELECT
INSERT
DELETE
UPDATE
 

      SQL语句的一些规范:

  1. SQL关键字、对象名和列名不区分大小写,既可以使用大写格式,也可以使用小写格式,或者混用大小写格式。

  2. 字符值和日期值区分大小写。当在SQL语句中引用字符值和日期值时,必须要给出正确的大小写数据,否则不能返回正确信息。
  3. 在应用程序中编写SQL语句时,如果SQL语 句文本很短,可以将语句文本放在一行上:如果SQL语句文本很长,可以将语句文本分布到多行上,并且可以通过使用跳格和缩进提高代码的可读性。
  4. SQL* Plus中的SQL语句要以分号(;)结束

2.用户与模式

          2.1 用户(user):

  用户是用来连接数据库和访问数据库对象的。(如我们使用的system、hr等)

     2.2 模式/方案(schema) :

模式(又称为方案)是用户所拥有的数据库对象的集合。在ORACLE数据库中,对象是以用户来组织的,用户与模式是一一对应的关系,并且两者名称相同。例如:SCOTT用户拥有的所有对象(表、视图、索引、序列、过程、程序、函数……)都属于SCOTT模式。

注意

  1. Oracle数据库中不能新创建一个schema,要想创建一个schema,只能通过创建一个用户的方法解决。
  2. 同一个模式不能存在同名对象,但不同模式中的对象名称可以相同。
  3. 用户可以直接访问其他模式对象,但如果要访问其他模式对象,必须具有对象权限。

Oracle附带的示例方案中给了我们带了很多模式:HR、SCOTT、订单目录(OE)模式、产品媒体(PM)模式、信息交换(IX)模式和销售记录(SH)模式。有了模式怎么用呢?

--当我们要利用一个模式,首先要将它解锁,我们才能使用它。这里以解锁HR为例
--首先我们要先连接到数据库,才能解锁用户
connect system/password;  --以system连接数据库

alter user hr account unclock;       ---解锁用户hr
alter user hr identified by password; --给hr设置密码,password是我们设置的密码

conn hr/password;           --连接到hr
select table_name from user_tables;    --查看HR模式下所有的表

3.select语句的使用(重点

select语句的使用,算是基础中的基础,大家应该都会,这里就不赘述了,不知道的也可以参考这篇博客select语句,也比较详细了

4.SQL中常用内置函数(重点

这里推荐一个博主写的内置函数练习。不知道怎么用的,可以学习学习。Oracle中的SQL使用

 

5.子查询(难点

子查询也是基础,这里也不赘述了,不会的可以参考这篇博客Oracle之子查询(嵌套查询select嵌套)

6.Oracle事务处理(重点

Oracle系统中,在使用INSERTUPDATEDELETE语句操作数据时,数据库中的数据并不会立即改变,用户还可以通过控制事务确认是否提交或取消先前的操作。

6.1 事务的基本概念

        事务是数据库系统工作的一个逻辑单元,它由一个或多个SQL语句组成。对于数据库而言,事务是不可分割的工作单元,一个事务中的所有SQL语句要么全部执行,要么全部不执行。当事务被提交后,该事务的操作才直正被保存到数据库中。如果某个事务被回退了,那么该事务的所有操作都被取消。事务的回退和提交可以由用户显式执行(COMMIT语句提交事务),也可以隐含地执行。只有当事务被提交后,其他用户才能够看到对数据库的修改结果。

简言之:如果第一个会话没有提交事务,所以在第二个会话中看不到第一个会话对数据库数据的改变。可以开两个会话自己去验证。

6.2 事务控制

 Oracle中的事务是隐式自动开始,它不需要用户显式地使用语句开始事务处理。当发生如下情况时,Oracle认为一个事务结束: 

  • 执行COMMIT语句提交事务。 
  • 执行ROLLBACK语句撤销事务
  • 执行一条数据定义语句(例如CREAEDROPALTER语句等)。如果该语句执行成功,那么表示系统自动执行COMMIT命令;如果这种操作失败,那么表示系统自动执行ROLLBACK命令。
  •  执行一个数据控制命令(例如GRANTREVOKE等),这种操作表示自动执行COMMIT命令
  • 断开数据库的连接。如果使用EXIT命令正常退出SQL*Plus,则系统自动执行COMMIT命令;如果退出SQL*Plus出现异常,则系统自动执行ROLLBACK命令

6.3 事务回退

Oracle不仅允许回退整个未提交的事务,还允许回退事务的一部分,这是通过一种称为“保存点的机制实现的。在事务的执行过程中,用户可以通过建立保存点将较长的事务分割为几部分。用户就可以有选择性地回退到某个保存点,该保存点之后的操作都将被取消。

6.4 事务回退举例

在SCOTT模式中的DEPT表添加两行记录,并且在执行第一条INSERT语句后建立一个保存点,在第二条INSERT语句后查询当前事务对数据库所做的操作。随后回退事务到保存点,以撤销第二条INSERT语句所执行的操作。

--先查看dept里面的数据
select * from dept;

--插入第一条记录,设置保存点。
insert into dept values (50,'COMPUTER','CHANGSHA');
savepoint s1;

--插入第二条记录,并进行查看。
insert into dept values (60,'DRUG','SHANGHAI');
select * from dept where deptno>40;

--回退到保存点。
rollback to savepoint s1;
commit;

--再次查看结果。
select * from dept;

 

                                           

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章