oracle总结(六)

给表加注释: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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值