Oracle 11g基础学习---(2)SQL语言基础(一)

2014-11-24 09:16:28 · 作者: · 浏览: 13

学习Oracle从哪里入手呢,在这里,我将带你走进Oracle的大门,一天一章,7天入门不是梦

1. SQL语言概述

1.1 SQL语言分类

数据定义(Data Definition Language,DDL)

用于创建、修改和删除数据库对象,如CREATE TABLE、ALTER TABLE、DROP TABLE等。DDL语句会自动提交事务

数据操纵语言(Data Manipulation Language,DML)

用于操纵数据库,包括INSERT、UPDATE、DELETE、SELECT等

数据控制语言(Data Control Language,DCL)

用于执行授予权限和撤销权限的操作,包括GRANT(授予权限)、REVOKE(撤销权限)两条命令。DCL语句会自动提交事务

事务控制语言(Transactional Control Language,TCL)

用于维护数据的一致性,包括COMMIT(提交事务)、ROLLBACK(回滚事务)和SAVEPOINT(设置保存点)3条语句

1.2 SQL语句编写规则

SQL关键字不区分大小写,既可以使用大写格式,又可使用小写格式,或者大小写混用

对象名与列名不区分大小写

字符值与日期值区分大小写

在SQL*Plus中,每条SQL语句要以分号结束。如果语句比较长,可以将语句文本分布到多行上,最后以分号结束

2. 使用DDL语句

2.1 Oracle 11g常用的数据类型

字符类型

CHAR类型

CHAR表示固定长度字符串,长度不够的用空格补充,最多可以存储2000字节

CHAR类型区分中英文,中文在CHAR中占两个字节,而英文只占一个字节

VARCHAR2类型

VARCHAR2表示可变长度字符串,最多可以存储4000字节

在定义该数据类型时,应该指定其大小。与CHAR类型相比,使用VARCHAR2可以节省磁盘空间

数值类型

NUMBER类型可以存储正数、负数、零、定点数和精度为38位的浮点数

NUMBER(M,N)。其中,M表示精度,代表数字的总位数;N表示小数点右边数字的位数

日期类型

DATE类型

DATE数据类型用于存储表中的日期和时间数据,取值范围是公元前4712年1月1日至公元9999年12月31日

DATE类型的长度是7,7个字节分别表示世纪、年、月、日、时、分和秒

TIMESTAMP类型

TIMESTAMP数据类型用于存储日期的年、月、日以及时间的小时、分和秒值

其中,秒值精确到小数点后6位,该数据类型同时包含时区信息

2.2 CREATE TABLE命令

CREATE TABLE用于创建表。在创建表时,经常会创建该表的主键、外键、唯一约束、Check约束等

2.3 ALTER TABLE 命令

向已经创建的表中增加一个新列

alter table tableName add columnName dataType

修改表中指定列的数据类型和类型长度

alter table tableName modify column columnName dataType

删除表中指定的列

alter table tableName drop columnName

2.4 TRUNCATE TABLE命令

RUNCATE TABLE命令用于删除表的所有内容,并释放表使用的存储空间,但不删除表结构

语法

truncate table tableName

TRUNCATE TABLE命令可以快速删除表的记录并释放空间,不使用事务处理,速度快且效率高,但无法回滚事务

DELETE命令可以在执行删除之后通过ROLLBACK撤销删除

2.5 DROP TABLE 命令

DROP TABLE命令用于从数据库中删除表及全部数据

3. 使用DML语句

3.2 UPDATE命令

3.3 DELETE 命令

DELETE命令用于删除表的内容

4. 使用SELECT语句

4.1 示例数据库概述

安装Oracle 11g创建数据库的环节中,如果在“指定数据库配置详细资料”窗口的“示例方案”选项卡中选择了“创建带样本方案的数据库”复选框,就会安装新的用户示例数据库

Oracle的示例方案都基于一个虚拟的通过各种渠道销售物质的公司

其中,HR方案是基本的关系数据库方案,用于介绍最简单和最基本的话题

该方案中包含7张表:雇员(employees)、部门(departments)、地点(locations)、国家(countries)、地区(regions)、岗位(jobs)和工作履历(job_history)

4.2 HR示例方案简介

默认情况下,所有示例方案的账户都已被锁定,它们的密码是过期的,不能连接到数据库

解除HR用户的锁定状态

4.3 HR示例方案中的表结构

4.4 子查询

4.5

在DDL、DML语句中使用子查询

在CREATE TABLE语句中使用子查询

在INSERT语句中使用子查询

在DELETE语句中使用子查询

在UPDATE语句中使用子查询

5. 使用DCL数据控制语言

5.1 GRANT

如果用户在自己的模式中创建了一张表,则该用户即为此表的所有者,拥有对这张表的所有操作权限

除非该用户希望与其他用户共享这张表,否则无须为其他用户赋予该表的任何操作权限

可以通过GRANT命令为其他用户授予该表的某些操作权限,这样的权限被称为对象权限

语法

GRANT privileges ON object-name TO userName

5.2 REVOKE

REVOKE命令用于撤销已经授予的用户对象权限

语法

REVOKE privileges ON object-name FROM userName

6. 使用TCL事务控制语言

事物的开始和结束

事务开始

连接到数据库,并开始执行一条DML(UPDATE、INSERT、DELETE)语句

前一个事务结束或者执行一条会自动提交事务的语句

事务结束

执行一条COMMIT(事务提交)或ROLBACK(事务回滚)语句

执行一条会自动提交事务的语句

执行一条DML语句却失败了

自动提交事务

执行一条DDL语句(如CREATE TABLE、ALTER TABLE等)

执行一条DCL语句(如GRANT、REVOKE等)

断开与数据库的连接。例如,在SQL*PLUS中执行一条DISCONNECT命令,或在同一个SQL*PLUS中执行一条CONNECT命令启动一个会话,或者执行EXIT命令退出SQL*PLUS等

6.2 使用COMMIT命令提交事务

会话A向emp表中插入一条记录,在提交之前,另一个会话B无法查看到新的记录。

只有在会话A提交事务之后,会话B才可以查看新增加的记录,这实际上就是事务的隔离性

6.3 使用ROLLBACK回滚事务

6.4 回滚部分事务

7. 使用基本函数

dual表

dual表是Oracle数据库中的一个虚表,它有一行一列,所有者是SYS用户,但可以被数据库中的所有用户使用

不能向该表插入数据,但可以使用该表来选择系统变量,或者求一个表达式的值

单行函数

日期函数

ADD_M