4.1语言分类和用户模式

4.1.1语言分类

1)数据查询语言

用语检索数据库中的数据,主要是select语句,是操作数据库时最为频繁使用。

2)数据操纵语言

用语改变数据库中的数据,主要包括insert、update和delete这3条语句。

3)事务控制语言

用语维护数据的一致性,包括commit、rollback和savepoint这3条语句。其中commit语句用于提交对数据库的更改,rollback语句用于取消对数据库的更改,savepoint语句用于设置保存点。

4)数据定义语言

用于建立、修改和删除数据库对象。如:可以使用create table语句创建表,alter table语句修改表结构,drop table语句删除表。

5)数据控制语言

用于执行权限授予和权限收回操作,主要包括grant和revoke两条命令。其中grant命令用于给用户和角色授予权限,而revoke命令则用于收回用户和角色权限。

4.1.2用户模式

在Oracle数据库中,为了便于管理用户所创建的数据库对象,引入了模式概念,这样某个用户所创建的数据库对象就都属于该用户模式。

模式是一个数据库对象的集合。模式为一个数据库所拥有,并且具有与该用户相同的名称,常见的有SYSTEM模式,SCOTT模式等。简单地说,模式与模式对象之间的关系就是拥有与被拥有的关系,即模式拥有模式对象;而模式对象被模式所拥有。

4.2检索数据

4.2.1去重查询

在select语句中,可以使用DISTINCT关键字来限制在查询结果显示不重复数据,该关键字用在SELECT子句的列表前面。

如:select distinct user_id from user_cont;

4.2.2筛选查询

1)where删选。

2)Like关键字(前加NOT,表示否定判断)。

3)In关键字(前加NOT,表示否定判断)。

4)Between关键字(通常使用between..and和not...between...and指定范围条件)

5)Is null关键字

4.2.3分组查询

数据分组的目的是用来汇总数据或为整个分组显示单行的汇总信息,通常在查询结果集中使用GROUP BY字句对记录进行分组,经常和聚合函数一起使用。语法格式:

Select columns_list from table_name [where conditional_expression] group by columns_list

4.2.4排序查询

在select语句中,可以使用order by字句对检索结果集进行排序,该字句位于from子句之后,默认按升序ASC排列。语法格式:

Select columns_list from table_name

[where conditional_expression]

[group by columns_list]

Order by{order_by_expression[ASC|DESC]}

4.3操作数据库

INSERT语句:insert into table_name[(column_name1,column_name2)]...values(values1,values2)

UPDATE语句:update table_name set column_name1=express1... Where condition

DELETE语句:delete from table_name [where condition]

4.4事务处理

4.4.1事务概述

事务是由一系列语句构成的逻辑工作单元。事务和存储过程等批处理有一定程度的相似,通常都是为了完成一定业务逻辑而将一条或者多条语句“封装”起来,使它们与其他语句之间出现一个逻辑上的边界。并形成相对独立的一个工作单元。

事务处理的结果只有两种:一种是在事务处理的过程中,如果发生了某种错误则整个事务全部回滚,使所有对数据的操作全部撤销,事务对数据库的操作是单步执行的,当遇到错误时可以随时地回滚;另一种是如果没有发生任何错误且每一步操作都执行成功,则整个事务全部被提交。从而可以看出,有效地使用事务可以提高数据的安全性,而且还可以增强数据的处理效率。

事务包含四种重要的属性:ACID(原子性、一致性、隔离性和持久性),一个事务必须通过ACID。

1)原子性(Atomic):事务是一个整体的工作单元,事务对数据库所做的操作要么全部执行,要么全部撤销。如果某条语句执行失败,则所有语句全部回滚。

2)一致性(ConDemoltent):事务在完成时,必须使所有的数据保持一致的状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。如果事务成功,则所有数据都变为一个新的状态;如果事务失败,则所有数据将处于原来的开始的状态。

3)隔离性(Isolated):由事务所做的修改必须与其他事物所做的修改隔离。事务查看数据时,数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。

4)持久性(Durability):当事务提交后,对数据库所做的操作就会永久的保存下来。

4.4.2事务操作

Oracle结束一个事务,要么执行commit语句,要么执行rollback语句。

1)提交事务(commit语句)

提交事务是指把数据库进行的全部操作持久性地保存到数据库中,这种操作通常使用commit语句来完成。执行顺序:

A.在回滚段内记录当前事务已提交,并且声称一个唯一的系统编号(SCN),以唯一标识这个事务。

B.启动后台的日志写入进程(LGWR),将SGA区的重做日志缓冲区中的数据和当前事务的SCN写入重做日志文件中。

C.Oracle服务器开始释放事务处理所使用的系统资源。

D.显示通知,告诉用户事务已成功提交。

2)回滚事务(rollback语句)

回滚事务是指撤销对数据库的全部操作,Oracle利用回滚段来存储修改前的数据,通过重做日志来记录所做的修改。如果要回滚整个事务,Oracle系统内部将会执行下列操作过程:

A.使用回滚段中的数据撤销对数据库所做的修改。

B.Oracle后台服务进程释放掉事务所使用的系统资源。

C.显示通知,告诉用户事务回滚成功。

4.SQL语言基础的更多相关文章

  1. SQL语言基础和数据库操作

    Sql语言基础: 核心思想:我们自己构造一段查询的代码,然后添加到语句后,从而得到想要的某些数据. Mysql是一种开源数据库 APP Serv:Apache+php+mysql,相当于phpstud ...

  2. PL/SQL语言基础

    PL/SQL语言基础 进行PL/SQL编程前,要打开输出set serveroutput on 1.创建一个匿名PL/SQL块,将下列字符输出到屏幕:"My PL/SQL Block Wor ...

  3. orcale 之 SQL 语言基础

    SQL 全称是结构化查询语句(Structure Query Language),是数据库操作的国际化语言,对所有的数据库产品都要支持. SQL 语言的分类 我们按照其功能可以大致分为四类: 数据定义 ...

  4. 浅谈PL/SQL语言基础

    在前面的学习中,我们大部分接触的都是SQL语言,但是,在实现复杂操作的时候,SQL语言就无能为力了,这时候就需要引入新的语言,PL/SQL语言就是对SQL语言的扩展,可以实现存储过程,函数等的创建.下 ...

  5. 学习笔记:oracle学习三:SQL语言基础之sql语言简介、用户模式

    目录 1.sql语言简介 1.1 sql语言特点 1.2 sql语言分类 1.3 sql语言的编写规则 2.用户模式 2.1 模式与模式对象 2.2 实例模式scott 本系列是作为学习笔记,用于记录 ...

  6. SQL语言基础-基本概念

    SQL:IBM的圣约瑟(SanJose),SEQUEL 2(也就是现在的SQL语言) 1979.Oracle首先提出提供了商用的SQL语言 1986.10美国ANSI采用SQL作为关系数据库管理系统的 ...

  7. OCP认证之Oracle的SQL语言基础(一)

    一.Oracle命令类别 数据操纵语言(DML):select;insert;delete;update;merge 数据定义语言(DDL):create;alter;drop;truncate 事物 ...

  8. SQL语言基础

    主要学习链接1 http://www.cnblogs.com/anding/p/5281558.html 搜索学习链接2 http://www.cnblogs.com/libingql/p/41342 ...

  9. .NET面试题解析(11)-SQL语言基础及数据库基本原理

      系列文章目录地址: .NET面试题解析(00)-开篇来谈谈面试 & 系列文章索引 本文内容涉及到基本SQL语法,数据的基本存储原理,数据库一些概念.数据优化等.抱砖引玉,权当一个综合复习! ...

  10. .NET面试题解析(9)-SQL语言基础及数据库基本原理

    见面试题 1. 索引的作用?她的优点缺点是什么? 2. 介绍存储过程基本概念和 她的优缺点? 3. 使用索引有哪些需要注意的地方? 4. 索引碎片是如何产生的?有什么危害?又该如何处理? 5. 锁的目 ...

随机推荐

  1. Xamarin.Android 4.10.01068 & Xamarin.iOS 1.8.361

    Xamarin.Android 4.10.01068 & Xamarin.iOS 1.8.361 NEW support for Visual Studio 2013 & Portab ...

  2. 2013 ACM区域赛长沙 K Pocket Cube hdu 4801

    题意:给了一个2*2的魔方..每步操作可以将任意一面翻转90度..现在问在N(<=7)步内.最多能翻出几面相同的. 直接打表模拟每种翻转情况 #include<cstdio> #in ...

  3. HW4.18

    public class Solution { public static void main(String[] args) { System.out.println("Graph 1&qu ...

  4. C文件操作之写入字符串到指定文件并在屏幕显示

  5. iOS开发之状态栏UIStatusBar图标操作

    NSArray *subIcons = [[[[UIApplication sharedApplication] valueForKeyPath:@"statusBar"] val ...

  6. radix树

    今天在学Linux内核页高速缓存时,学到了一种新的数据结构radix树(基数),经过分析,感觉此数据结构有点鸡肋,有可能是我理解不到位吧. 先来张图,给大家以直观的印象 当有一个key-value型的 ...

  7. thinkphp如何写find_in_set这样的orm查询封装

    今天写thinkphp的orm封装的时候 需要写一个 select * from table where user_id=xxx and find_in_set(100,group_id)这样的SQL ...

  8. [置顶] 第二届微软CRM交流年会

    第二届微软CRM交流会将在12月14日举行,亲们要是感兴趣可以查看下面的活动详情.Jeff也是第一次参加这类活动,作为本次活动的嘉宾我为大家带来一个挺有意思的分享主题<Dynamics CRM ...

  9. TI-Davinci开发系列之二使用CCS5.2TI Simulator模拟环境调试DSP程序

    上接博文<TI-Davinci开发系列之一CCS5.2的安装及注意事项>. 如何没有实际的开发板或者仿真器,可以使用CCS自带的TISimulator来学习与熟悉CCS开发调试环境.下面是 ...

  10. python学习笔记--Django入门二 Django 的模板系统

    为了使网站更干净简洁更容易维护,页面的设计和Python的代码必须分离开.我们可以使用Django的 模板系统 (Template System)来实现这种模式. 几个简单的模板标签(tag):   ...