一、概述
1.1 oracle对象的概念
Oracle数据库是一个对象关系型数据库管理系统(ORDBMS),它是一种用于创建和管理对象的数据库。对象是数据库中的一个实体,如表、视图、序列、索引等,每个对象都具有属性和方法。Oracle对象可以存储简单的数据类型,如数字、字符串和日期,还可以存储复杂的数据类型,如XML、LOB(大对象)和用户定义的数据类型。
1.2 oracle对象的种类
Oracle对象有很多种类,包括但不限于以下几种:
1.2.1 表
表是一个包含许多行和列的二维数据结构,是Oracle数据库中最基本的对象之一。表可以用来存储数据,可以通过SQL语句对表进行查询、更新和删除等操作。
1.2.2 视图
视图是基于一个或多个表的查询定义,这些查询可以是简单的SELECT语句或复杂的JOIN语句。视图包含查询定义,但不包含实际的数据,只有在查询视图时才会从基础表中检索数据。
1.2.3 序列
序列是一种对象,它生成一系列唯一的数字,可以用于生成主键值或其他唯一标识符。序列不是表,不能像表一样存储数据,但可以在表中用作默认值。
1.2.4 索引
索引是一种数据结构,用于快速查找表中的数据。索引可以大大提高查询速度,但会增加插入、更新和删除数据的时间。
1.2.5 系统对象
系统对象是Oracle数据库中的内部对象,用于实现数据库的功能和管理。这些对象包括表空间、用户、角色、约束、过程等。
二、表
2.1 表的创建
表可以通过CREATE TABLE语句来创建,语法如下:
CREATE TABLE table_name (
column1 datatype [ optional_parameters ],
column2 datatype [ optional_parameters ],
...,
PRIMARY KEY (one or more columns)
);
其中,table_name是要创建的表的名称,column1、column2等是表的列,datatype是列的数据类型,[ optional_parameters ]是可选的参数,可用于指定列的大小、默认值、约束等。
例如,创建一个名为customers的表,包含id、name、age三个列,其中id列是主键:
CREATE TABLE customers (
id NUMBER(10) PRIMARY KEY,
name VARCHAR2(50),
age NUMBER(3)
);
2.2 表的查询
表可以通过SELECT语句进行查询,语法如下:
SELECT column1, column2, ...
FROM table_name
WHERE condition;
其中,column1、column2等是要查询的列,table_name是要查询的表的名称,condition是查询条件。
例如,查询customers表中所有列的数据:
SELECT * FROM customers;
2.3 表的更新
表可以通过UPDATE语句进行更新,语法如下:
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
其中,table_name是要更新的表的名称,column1、column2等是要更新的列,value1、value2等是要设置的值,condition是更新条件。
例如,将customers表中id为1的记录的name列设置为'John':
UPDATE customers
SET name = 'John'
WHERE id = 1;
2.4 表的删除
表可以通过DELETE语句进行删除,语法如下:
DELETE FROM table_name
WHERE condition;
其中,table_name是要删除的表的名称,condition是删除条件。
例如,删除customers表中id为1的记录:
DELETE FROM customers
WHERE id = 1;
三、视图
3.1 视图的创建
视图可以通过CREATE VIEW语句来创建,语法如下:
CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;
其中,view_name是要创建的视图的名称,column1、column2等是要查询的列,table_name是要查询的表的名称,condition是查询条件。
例如,创建一个名为customer_names的视图,包含customers表中的id和name列:
CREATE VIEW customer_names AS
SELECT id, name
FROM customers;
3.2 视图的查询
视图可以通过SELECT语句进行查询,语法与表的查询相同。
例如,查询customer_names视图:
SELECT * FROM customer_names;
3.3 视图的更新
视图的更新与表的更新类似,使用UPDATE语句,但需要注意以下几点:
1. 视图只能更新其基础表中的数据,不能插入新数据或删除现有数据。
2. 视图必须包含其基础表中的主键,否则无法更新数据。
例如,将customer_names视图中id为1的记录的name列设置为'John':
UPDATE customer_names
SET name = 'John'
WHERE id = 1;
3.4 视图的删除
视图的删除与表的删除相同,使用DELETE语句。
例如,删除customer_names视图中id为1的记录:
DELETE FROM customer_names
WHERE id = 1;
四、序列
4.1 序列的创建
序列可以通过CREATE SEQUENCE语句来创建,语法如下:
CREATE SEQUENCE sequence_name
START WITH start_value
INCREMENT BY increment_value
MINVALUE min_value
MAXVALUE max_value
CYCLE|NOCYCLE;
其中,sequence_name是要创建的序列的名称,start_value是起始值,increment_value是增量,min_value和max_value是序列的最小值和最大值,CYCLE和NOCYCLE用于指定是否循环(达到最大值后是否重新从最小值开始)。
例如,创建一个名为customer_id_seq的序列,起始值为1,增量为1,最小值为1,最大值为9999,不循环:
CREATE SEQUENCE customer_id_seq
START WITH 1
INCREMENT BY 1
MINVALUE 1
MAXVALUE 9999
NOCYCLE;
4.2 序列的使用
序列可以通过NEXTVAL和CURRVAL函数来使用。NEXTVAL函数返回序列的下一个值,CURRVAL函数返回序列的当前值。
例如,使用customer_id_seq序列生成一个唯一的主键值:
INSERT INTO customers (id, name, age)
VALUES (customer_id_seq.NEXTVAL, 'John', 30);
4.3 序列的删除
序列可以通过DROP SEQUENCE语句来删除,语法如下:
DROP SEQUENCE sequence_name;
其中,sequence_name是要删除的序列的名称。
例如,删除customer_id_seq序列:
DROP SEQUENCE customer_id_seq;
五、索引
5.1 索引的创建
索引可以通过CREATE INDEX语句来创建,语法如下:
CREATE INDEX index_name
ON table_name (column1, column2, ...);
其中,index_name是要创建的索引的名称,table_name是要创建索引的表的名称,column1、column2等是要索引的列。
例如,为customers表的name列创建索引:
CREATE INDEX customer_name_idx
ON customers (name);
5.2 索引的使用
索引是用于加速查询的,使用时需要注意以下几点:
1. 索引可能会增加插入、更新和删除数据的时间,因为需要对索引进行维护。
2. 索引适用于经常用于查询的列,不适用于很少查询的列。
3. 索引适用于大型表,不适用于小型表。
例如,查询customers表中name为'John'的记录:
SELECT * FROM customers
WHERE name = 'John';
如果有customer_name_idx索引,查询将非常快。
5.3 索引的删除
索引可以通过DROP INDEX语句来删除,语法如下:
DROP INDEX index_name;
其中,index_name是要删除的索引的名称。
例如,删除customer_name_idx索引:
DROP INDEX customer_name_idx;
六、系统对象
6.1 系统对象的种类
Oracle数据库中的系统对象有很多种类,包括但不限于以下几种:
6.1.1 表空间
表空间是一组数据文件,用于存储表、索引等对象。每个Oracle数据库都包含一个系统表空间(用于存储数据字典和元数据)和一个或多个用户表空间(用于存储用户数据)。
6.1.2 用户
用户是数据库中的一种对象,每个用户都拥有自己的数据库对象,例如表、视图、序列等。用户可以有不同的角色和权限,以控制对数据库的访问和使用。
6.1.3 角色
角色是一种组,可以用于管理访问权限。角色可以包括一组权限或其他角色,用户可以分配给角色,从而使用户继承角色的权限。
6.1.4 约束
约束是一种限制,用于保持数据的完整性和一致性。约束可以是列级的或表级的。列级约束限制单个列的值,表级约束限制整个表的值。常见的约束类型包括主键、外键、唯一和检查约束。
6.1.5 过程
过程是一段PL/SQL代码,可以在数据库中执行。过程可以用于执行常规任务、处理数据等。
6.2 数据字典
数据字典是Oracle数据库中的一组表格和视图,包含数据库对象的元数据和统计信息。数据字典可以用于查询数据库对象的定义、状态和使用情况。
例如,查询customers表的列定义:
SELECT COLUMN_NAME, DATA_TYPE, DATA_LENGTH, NULLABLE
FROM USER_TAB_COLUMNS
WHERE TABLE_NAME = 'CUSTOMERS';
其中,USER_TAB_COLUMNS是描述用户表列的视图。
6.3 系统权限
系统权限是用于控制用户对数据库对象的访问和使用的权限。Oracle数据库中有很多系统权限,例如CREATE TABLE、CREATE VIEW、CREATE PROCEDURE等。
系统权限可以通过GRANT和REVOKE语句进行授权和取消授权。
例如,授权用户test创建表:
GRANT CREATE TABLE TO test;
取消用户test的创建表权限:
REVOKE CREATE TABLE FROM test;
七、总结
Oracle对象是实现数据库功能和管理的关键元素。常见的对象包括表、视图、序列、索引和系统对象。了解这些对象的操作和用途可以使数据库开发和管理更加高效和方便。