4.SQL语言基础
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语言基础的更多相关文章
- SQL语言基础和数据库操作
Sql语言基础: 核心思想:我们自己构造一段查询的代码,然后添加到语句后,从而得到想要的某些数据. Mysql是一种开源数据库 APP Serv:Apache+php+mysql,相当于phpstud ...
- PL/SQL语言基础
PL/SQL语言基础 进行PL/SQL编程前,要打开输出set serveroutput on 1.创建一个匿名PL/SQL块,将下列字符输出到屏幕:"My PL/SQL Block Wor ...
- orcale 之 SQL 语言基础
SQL 全称是结构化查询语句(Structure Query Language),是数据库操作的国际化语言,对所有的数据库产品都要支持. SQL 语言的分类 我们按照其功能可以大致分为四类: 数据定义 ...
- 浅谈PL/SQL语言基础
在前面的学习中,我们大部分接触的都是SQL语言,但是,在实现复杂操作的时候,SQL语言就无能为力了,这时候就需要引入新的语言,PL/SQL语言就是对SQL语言的扩展,可以实现存储过程,函数等的创建.下 ...
- 学习笔记:oracle学习三:SQL语言基础之sql语言简介、用户模式
目录 1.sql语言简介 1.1 sql语言特点 1.2 sql语言分类 1.3 sql语言的编写规则 2.用户模式 2.1 模式与模式对象 2.2 实例模式scott 本系列是作为学习笔记,用于记录 ...
- SQL语言基础-基本概念
SQL:IBM的圣约瑟(SanJose),SEQUEL 2(也就是现在的SQL语言) 1979.Oracle首先提出提供了商用的SQL语言 1986.10美国ANSI采用SQL作为关系数据库管理系统的 ...
- OCP认证之Oracle的SQL语言基础(一)
一.Oracle命令类别 数据操纵语言(DML):select;insert;delete;update;merge 数据定义语言(DDL):create;alter;drop;truncate 事物 ...
- SQL语言基础
主要学习链接1 http://www.cnblogs.com/anding/p/5281558.html 搜索学习链接2 http://www.cnblogs.com/libingql/p/41342 ...
- .NET面试题解析(11)-SQL语言基础及数据库基本原理
系列文章目录地址: .NET面试题解析(00)-开篇来谈谈面试 & 系列文章索引 本文内容涉及到基本SQL语法,数据的基本存储原理,数据库一些概念.数据优化等.抱砖引玉,权当一个综合复习! ...
- .NET面试题解析(9)-SQL语言基础及数据库基本原理
见面试题 1. 索引的作用?她的优点缺点是什么? 2. 介绍存储过程基本概念和 她的优缺点? 3. 使用索引有哪些需要注意的地方? 4. 索引碎片是如何产生的?有什么危害?又该如何处理? 5. 锁的目 ...
随机推荐
- log4net.dll配置以及在项目中应用 zt
1 首先在项目中引用log4net.dll,然后项目中添加一个配置文件log4net.config <?xml version="1.0" encoding="ut ...
- IIS短文件漏洞修复
近期网站系统被扫描出漏洞:IIS短文件/文件夹漏洞 漏洞级别:中危漏洞 漏洞地址:全网站 漏洞描述:IIS短文件名泄露漏洞,IIS上实现上存在文件枚举漏洞,攻击者可利用此漏洞枚举获取服务器根目录中的文 ...
- HDOJ/HDU 2565 放大的X(分段思考~)
Problem Description 请你编程画一个放大的'X'. 如3*3的'X'应如下所示: X X XX X5*5的'X'如下所示:X X X X X X XX X Input 输入数据第一行 ...
- Java项目中基于Hibernate分页总结
1,First of all, we should have a wrapper class for page,this class can calculate the startRow by th ...
- C语言宏定义函数中的“_##”的意思
最近在看google vp9的代码的时候碰到: #define intra_pred_sized(type, size) \ void vp9_##type##_predictor_##size##x ...
- sql日志框架log4jdbc的AOP式使用
log4jdbc.log4j2 参考:1. http://badqiu.iteye.com/blog/743100 2. https://code.google.com/p/log4jdbc/ 3 ...
- JDBC_demo:java连接mysql过程
1.任何数据库驱动程序都提供对java.sql.Driver接口的驱动类,mysql-connector-java-5.1.39-bin.jar中Driver: package com.mysql.j ...
- C语言求x的y次方,自定义函数,自己的算法
我是一名高二中学生,初中时接触电脑,非常酷爱电脑技术,自己百度学习了有两年多了,编程语言也零零散散的学习了一点,想在大学学习计算机专业,所以现在准备系统的学习C语言,并在博客中与大家分享我学习中的心得 ...
- Tornado源码探寻(开篇)
一.先从一个简单的socket说起 运行脚本并在浏览器上访问http://127.0.0.1:8080 #!/usr/bin/env python #coding:utf-8 import socke ...
- 日常使用 Git 的 19 个建议
如果你对git一无所知,那么我建议先去读一下Git 常用命令速查.本篇文章主要适合有一定 git 使用基础的人群. 目录: 日志输出参数 查看文件的详细变更 查看文件中指定位置的变更 查看尚未合并(m ...