热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

Oracle基础学习笔记(3)

Oracle基础学习笔记(3)管理表1,主键约束表的主键可以确保在一个表中没有重复行,防止冗余的信息。添加主键:Altertableanother_deptaddconstraintanother_dept_pkprimarykey(deptno);www...SyntaxHig

Oracle基础学习笔记(3)
 
管理表
1,主键约束
   表的主键可以确保在一个表中没有重复行,防止冗余的信息。
   添加主键:
Alter table another_dept add constraint another_dept_pk primary key(deptno);
   www.2cto.com  
注意:在创建主键约束时,一定要遵循下面的原则:
(1)       一个表中最多只能有一个主键约束
(2)       表中不能有任何两行在主键约束列上既有相同的值
(3)       主键列不能为空
 
2,外键约束
如果插入子表的行在外键列中具有非null值,那么父表行中必须在所引用的列中有相同的值。
语法格式如下:
Alter table child_table
Add constraint foreign_key_name
Foreign key(child_table_column)
References parent_table(parent_table_column);
 
3,唯一性约束
   唯一性约束可以确保表中的各行,对于值为非null的给定列或列组都具有唯一值。
   语法格式如下:
Alter table table_name
Add constraint unique_key_name
Unique(column_name);
 
4,检查约束
   检查约束就是指定表中某个列的取值范围。对于即将插入表中的数据来说,如果插入的数据满足检查约束指定的条件,则插入操作成功,否则插入操作失败。
 
例句:alter table students
Add constraint ck_gender
Check(gender in(‘female’,’male’));
 
5,  索引
语法格式:
Create index idx_emp_name
On tableName(column_name);
   www.2cto.com  
如果oracle有能力在一次扫描中读取多个数据块,那么他就会将考虑使用索引的阀值设置的相当高。如果oracle认为用户的查询将要选取记录的2%-5%或更多,那么他就会执行全表搜索,而不考虑索引是否可用。
为了防止数据块分割,在创建索引时可以设置pctfree属性
例句:
Create index idx on tableName(column_name) pctfree 0;
修改:
Alter index idx
Rebuild pctfree 10;
 
6,  索引和约束
当某一列有唯一性约束和主键约束时,无论用户是否喜欢,将会自动为这一列创建一个索引。
首先创建表,没有任何约束
接着创建索引(假设表为inventory)
Create indexs idx
On inventory(partno,warehouse)
Pctfree 10;
接下来向表中增加以下约束:
Alter table inventory add(
Constraint pk primary key(partno)
Using index idx);
这时,oracle将会检查它是否可以使用已经存在的索引,如果索引能够满足它,它就会使用这个索引。
 
7,  视图
例句:create view viewName(name)
       As
      Select name from emp;
   www.2cto.com  
查询视图:select * from viewName order by name;
注意:create or replace
删除视图:
      Drop view viewName;
 
8,  过程
使用过程代替PL/SQL程序块有许多好处,例如,增强可扩性,提高模块化水平,可重用性增强,可维护性加强,有利于抽象和数据的隐藏,增强安全性等。
例句:create or replace procedure
      Insert_into_t(p_parm in number)
      Is
      Begin
         Insert into t values(p_parm);
      End insert_into_t;
执行过程:
     Exec insert_into_t(p_parm=>100);
 
参数传递:
名称表示法:parm_name=>value
位置表示法:跟java语言传递参数一样
局域声明:
Declare
   Num1 number:=111;
 
9,  触发器
触发器是一种特殊的过程,但是用户不能直接调用触发器,触发器是当特定事件出现时自动执行的代码块。
 
触发器示例:
Create trigger biufer_emp_empno
Before insert or update
Of empno  www.2cto.com  
On emp
Referencing old as old_value
New as new_value
For each row
When(new_value.empno<>7782)
Begin
:new _value.comm:=0;
End;
 
解析:before insert or update
Of empno
On emp
对emp表进行insert操作时
对emp的表的empno进行update操作时
When(new_value.empno<>7782)
 
这就是说,如果列的新值不等于7782时,触发器就会执行。任何布尔表达式都可以使用when子句。
 
 
作者 pzhtpf

推荐阅读
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 使用C#开发SQL Server存储过程的指南
    本文介绍如何利用C#在SQL Server中创建存储过程,涵盖背景、步骤和应用场景,旨在帮助开发者更好地理解和应用这一技术。 ... [详细]
  • SQL中UPDATE SET FROM语句的使用方法及应用场景
    本文详细介绍了SQL中UPDATE SET FROM语句的使用方法,通过具体示例展示了如何利用该语句高效地更新多表关联数据。适合数据库管理员和开发人员参考。 ... [详细]
  • 本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • 优化版Windows 10 LTSC 21H2企业版:适用于低内存设备
    此版本为经过优化的Windows 10 LTSC 21H2企业版,特别适合低内存配置的计算机。它基于官方版本进行了精简和性能优化,确保在资源有限的情况下依然能够稳定运行。 ... [详细]
  • 当iOS设备越狱后,某些插件可能会导致系统崩溃(白苹果)。此时,可以通过进入安全模式来排查并删除有问题的插件。本文将详细介绍如何通过特定按键组合进入不加载MobileSubstrate的安全模式,并提供相关背景知识。 ... [详细]
  • 新冠肺炎疫情期间,各大银行积极利用手机银行平台,满足客户在金融与生活多方面的需求。线上服务不仅激活了防疫相关的民生场景,还推动了银行通过互联网思维进行获客、引流与经营。本文探讨了银行在找房、买菜、打卡、教育等领域的创新举措。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • 本文探讨了如何在发布 XenApp 应用时,通过命令行参数实现启动时的参数传递。特别介绍了静态和动态参数传递的方法,并详细解释了 ICA 文件中两种参数传递方式的区别及安全检查机制。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
author-avatar
mobiledu2502891987
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有