给表加注释:COMMENT
comment on table table_name is '注释内容';
ORACLE 支持的约束条件:
1.NOT NULL 非空
特点:唯一一个只能在列级定义的约束条件。
2.UNIQUE 唯一
允许有空值(空值不做比较);
特点:当创建约束的时候,系统会自动创建对应其的索引。
3.PRIMARY KEY 主键
特点:当创建约束的时候,系统会自动创建对应其的索引。
在一个表中只允许一个主键。
4.FOREIGN KEY 外键
外键参照的一定是主表的主键或唯一键;
保证子表外键字段的值一定是主表中的被参照字段值的真子集;
当主表字段被参照的时候,其值不允许被直接删除。
5.CONSTRAINT 约束名 FOREIGNKEY (外键字段名) REFERENCES 主表名(主表字段名);
如果在字段列表中定义外键就可以不写 FOREIGN KEY 关键字。
如下格式:CONSTRAINT 约束名 REFERENCES 主表名(主表字段名);
6.ON DELETE CASCADE 当主表的行被删除的时候,要删除子表中参照主表的行。
ALTER TABLE TABLE_NAME DROP (PK) CASCADE CONSTRAINTS;把作为主键的字段也同时删除了。
7.ON DELETE SET NULL 当主表的行被删除的时候,转换子表中的参照值为空。
视图
一个或多个表的数据集的逻辑表示(虚表,不存储数据)
视图不能提高查询的性能。
eg:
CREATE VIEW [Current Product List] AS
SELECT ProductID,ProductName
FROM Products
WHERE Discontinued=No
我们可以查询上面这个视图:
SELECT * FROM [Current Product List]
使用视图的原因;
为了限制对数据的访问;
为了使复杂的查询变得简单;
提供了数据的独立性;
提供了对相同数据的不同显示;
索引:
一个方案中的对象;
被 ORACLE 服务器用来加速对表的查询;
通过使用快速路径访问方法快速定位数据;
与表独立存放;
被 ORACLE 服务器使用和维护。
一定是 WHERE 条件的才有可能使用索引。
当表中有大量记录时,若要对表进行查询,第一种搜索信息方式是全表搜索,是将所有记录一一取出,和查询条件进行一一对比,然后返回满足条件的记录,这样做会消耗大量数据库系统时间,并造成大量磁盘I/O操作;第二种就是在表中建立索引,然后在索引中找到符合查询条件的索引值,最后通过保存在索引中的ROWID(相当于页码)快速找到表中对应的记录。
手动创建索引:
CREATE INDEX index_name on table_name (col_name列名);
考虑创建索引的情况:
*包含了大量不同值的列;
*包含了大量空值的列;
*一个或者多个列经常被一起出现在 WHERE 条件中或者作为连接的条件出现;
*表的数据量很大,而且对表的查询经常是得到表中数据的 2%到 4%(少量数据).
不应该创建索引的情况:
*一个很小的表;
*列很少被用于查询的条件;
*表上的大多数查询是得到大量数据的;
*表中的数据经常发生变动;
*要被索引的列被作为条件表达式的一部分。
高级子查询
1. 成对子查询:
行内视图的性能比成对子查询的性能高。
相关子查询:
主查询的字段在子查询里做条件(特征)。
主查询先执行,取出第一条数据,把该数据传入子查询做比较,返回查询结果给主查询,主查
询根据这个结果再做查询
依次类推
直到主查询中没有可查询列为止。
EXISTS 操作符
EXISTS 操作符测试子查询的结果是否存在;
返回 TRUE 或 FALSE
查询机制:
如果一个子查询找到了结果:在内部子查询中不在继续执行,条件被设为 TRUE
如果一个子查询没有找到结果:条件被设为 FALSE
comment on table table_name is '注释内容';
ORACLE 支持的约束条件:
1.NOT NULL 非空
特点:唯一一个只能在列级定义的约束条件。
2.UNIQUE 唯一
允许有空值(空值不做比较);
特点:当创建约束的时候,系统会自动创建对应其的索引。
3.PRIMARY KEY 主键
特点:当创建约束的时候,系统会自动创建对应其的索引。
在一个表中只允许一个主键。
4.FOREIGN KEY 外键
外键参照的一定是主表的主键或唯一键;
保证子表外键字段的值一定是主表中的被参照字段值的真子集;
当主表字段被参照的时候,其值不允许被直接删除。
5.CONSTRAINT 约束名 FOREIGNKEY (外键字段名) REFERENCES 主表名(主表字段名);
如果在字段列表中定义外键就可以不写 FOREIGN KEY 关键字。
如下格式:CONSTRAINT 约束名 REFERENCES 主表名(主表字段名);
6.ON DELETE CASCADE 当主表的行被删除的时候,要删除子表中参照主表的行。
ALTER TABLE TABLE_NAME DROP (PK) CASCADE CONSTRAINTS;把作为主键的字段也同时删除了。
7.ON DELETE SET NULL 当主表的行被删除的时候,转换子表中的参照值为空。
视图
一个或多个表的数据集的逻辑表示(虚表,不存储数据)
视图不能提高查询的性能。
eg:
CREATE VIEW [Current Product List] AS
SELECT ProductID,ProductName
FROM Products
WHERE Discontinued=No
我们可以查询上面这个视图:
SELECT * FROM [Current Product List]
使用视图的原因;
为了限制对数据的访问;
为了使复杂的查询变得简单;
提供了数据的独立性;
提供了对相同数据的不同显示;
索引:
一个方案中的对象;
被 ORACLE 服务器用来加速对表的查询;
通过使用快速路径访问方法快速定位数据;
与表独立存放;
被 ORACLE 服务器使用和维护。
一定是 WHERE 条件的才有可能使用索引。
当表中有大量记录时,若要对表进行查询,第一种搜索信息方式是全表搜索,是将所有记录一一取出,和查询条件进行一一对比,然后返回满足条件的记录,这样做会消耗大量数据库系统时间,并造成大量磁盘I/O操作;第二种就是在表中建立索引,然后在索引中找到符合查询条件的索引值,最后通过保存在索引中的ROWID(相当于页码)快速找到表中对应的记录。
手动创建索引:
CREATE INDEX index_name on table_name (col_name列名);
考虑创建索引的情况:
*包含了大量不同值的列;
*包含了大量空值的列;
*一个或者多个列经常被一起出现在 WHERE 条件中或者作为连接的条件出现;
*表的数据量很大,而且对表的查询经常是得到表中数据的 2%到 4%(少量数据).
不应该创建索引的情况:
*一个很小的表;
*列很少被用于查询的条件;
*表上的大多数查询是得到大量数据的;
*表中的数据经常发生变动;
*要被索引的列被作为条件表达式的一部分。
高级子查询
1. 成对子查询:
行内视图的性能比成对子查询的性能高。
相关子查询:
主查询的字段在子查询里做条件(特征)。
主查询先执行,取出第一条数据,把该数据传入子查询做比较,返回查询结果给主查询,主查
询根据这个结果再做查询
依次类推
直到主查询中没有可查询列为止。
EXISTS 操作符
EXISTS 操作符测试子查询的结果是否存在;
返回 TRUE 或 FALSE
查询机制:
如果一个子查询找到了结果:在内部子查询中不在继续执行,条件被设为 TRUE
如果一个子查询没有找到结果:条件被设为 FALSE