`
tanyunfei
  • 浏览: 3971 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

oracle 创建表及其相关约束

阅读更多

   在我们项目的开发过程中,数据库的开发是很常见的,本文简单介绍下非常基本的数据库操作,主要包括以下方面:

 

 

  •  创建表
  •  创建触发器
  •  创建存储过程
  •  创建索引
  • 创建视图

创建表

基本语法结构:  

 

CREATE TABLE [schema.]tablename 
( column1 datatype, 
column2,datatype ...... )
 [TABLESPACE space_name]
 [PCTFREE integer] 
[PCTUSED integer]
 [INITRANS integer]
 [MAXTRANS integer] 
[STORAGE stroage_clause]
 [LOGGING|NOLOGGING] 
[CACHE|NOCACHE] 

 

SCHEMA: 表的所有者

TABLE: 表名

column1 :属性名

datatype :属性的数据类型

TABLESPACE: 表的空间名

PCTFREE :用来为一个块保留的空间百分比,以防止在今后的更新操作中增加一列或多列值的长度

PCTUSED :一个块的使用水位的百分比,这个水位将使该块返回到可用列表中去等待更多的插入操作

INITRANS :在块中预先分配的事物项数,默认为1

MAXTRANS :在块中可以分配的最大事物项数,最大为255

LOGGING :将表的创建记录到重做日志中

NOLOGGING: 部将表的创建记录到重做日志中

STORAGE :当数据增长时,如何将区分配给表的数据增长

CACHE :在进行全表扫描时,为表建立的索引的块将放置在高速缓存的lru 列表的最近使用的一端

NOCACHE :在进行全表扫描时,为表建立的索引的块将放置在高速缓存的lru 列表的最近未使用的一端

例子:  

  

TABLE TAN.Student 
( StuentId INTEGER NOT NULL, 
Name VARCHAR2(200 CHAR) NOT NULL ENABLE, 
Age NUMBER, 
classid INTEGER NOT NULL, 
STATUS VARCHAR2(10) NULL, 
ADD_USER VARCHAR2(20) NULL,
 ADD_TS DATE DEFAULT SYSDATE, 
MOD_USER VARCHAR2(20) NULL, 
MOD_TS DATE NULL CONSTRAINT PK_STUDENT_ID PRIMARY KEY(StuentId) ) 
STORAGE( 
        INITIAL 100K
    NEXT 100K 
    MINEXTENTS 2
      MAXEXTENTS 100 PCTINCREASE 100) 

 

 说明:

      初始给Student 表分配两个Extent
  第一个Extent100K ,因INITIAL=100K
  第二个Extent100K ,因NEXT=100K
  如果因表内数据增长,需要分配第三个Extent ,因PCTINCREASE100 ,则
  第三个Extent200K=100K+100K
  第四个Extent400K=200K+200K

LOGGING :创建表的过程将被记录在重做日志中

TABLESAPCE test :该表创建在test 的空间下

INITRAN 1 :该空间块最小的事物项目数是1

MAXTRANS 255 :该空间块最多的事物项目数是255

PCTFREE 20 :当数据量大于1-20% ,此块不再插入新数据

PCTUSED 40 :当数据量要低于40% 才会接受新的数据插入

 

建立主键

在创建主键时,首先,所有的主键值都是唯一的,第二,它们必须有一个值,也就是说,作为主键的列不能 NULL

创建主键有几种方式:

1.   列约束子句:

CREATE TABLE TAN.Student ( StuentId INTEGER NOT NULL PRIMARY KEY , ...) 

 

2.   表约束子句 

CONSTRAINT PK_STUDENT_ID PRIMARY KEY (StuentId) 

    

3.   ALTER TABLE 语句  

ALTER TABLE Student ADD CONSTRAINT PK_STUDENT_ID PRIMARY KEY ( StuentId )

   

建立外键

1.   列约束子句:  

CREATE TABLE TAN.Student 
( StuentId INTEGER NOT NULL PRIMARY KEY , 
classid INTEGER NOT NULL REFERENCES Class(classid), 
...) 

 

  

2.   表约束子句   

CONSTRAINT fk_students_class 
FOREIGN KEY (classid) REFERENCES Class(classid)
 ON [DELETE CASCADE] | [DELETE CASCADE] |[SET NULL]|[NO ACTION] 

  

3.   ALTER TABLE 语句   

ALTER TABLE Student ADD CONSTRAINT fk_students_class 
FOREIGN KEY (classid) REFERENCES Class(classid) 
ON [DELETE CASCADE] |[SET NULL]|[NO ACTION]

  

   

DELETE CASCADE: 级联删除
SET NULL:--
删除主表中的记录后,子表中的相应记录的列被设置为null( 但子表的该字段必须支持null)
NO ACTION:
不允许删除主表中被引用的数据,该操作会被禁止。

 

unique 约束

unique约束是用来保证表中的某一类,或者表中的某一类组合起来不重复的一种手段,需要注意的是引用unique约束的列并不代表一定要非空,可以为null,因为空值(null)含义是该当前列的状态不存在,永远不会和另一个空值相等,所以不违法唯一约束。

 

 

1.   列约束子句:

 

CREATE TABLE TAN.Student( ... STATUS VARCHAR2(10) unique ...)

  

 

2.   表约束子句

 

constraint name_unique unique(status)

   

3.   ALTER TABLE 语句:

alter table student add constraint status_unique unique(status) 

 

  

 

check 约束

在oracle check约束的表达式中必须至少包含表中一个或者多个列的引用,并且表达式的计算结果必须是一个布尔型的结果,该约束的级别可以定义在列或者表的级别,同时,也可以在一个列上加多个check约束。

 

1.   列约束子句:

CREATE TABLE TAN.Student( ... Age NUMBER check(Age>18)...) 

   

2.   表约束子句 

constraint age_check check(Age>18) 

   

3.   ALTER TABLE 语句:

alter table student add constraint age_check check(Age>18) 

 

default value

DEFAULT 约束用于向列中插入默认值。如果没有规定其他的值,那么会将默认值添加到所有的新纪录。 

 

1.   列约束子句:

CREATE TABLE TAN.Student( ... Age NUMBER defalt 18)...) 

    

2.   ALTER TABLE 语句:

 

alter table TAN modify (age number default 18)

   

 

在已有表的基础上建立新表

 

create table newtable as select studentid,name,age,status from student where name like '%jack%' 

 

 新建了newtable 表,其结构为student 表中的studentid,name,age,status ,可以说这种手段是一种表的复制,基本用于系统的数据移植,dbmigration

 

ORACLE 常用基本类型,并非所有:

字段类型

说明

VARCHAR2 (size)

可变长度的字符串, 必须规定长度

CHAR(size)

固定长度的字符串, 不规定长度默认值为1

NUMBER(p,s) 

数字型p 是位数总长度,s 是小数的长度, 可存负数最长38. 不够位时会四舍五入.

LONG

LONG 类型的列存储可变长度的字符串,最多可以存储 2GB 的数据

DATE 

日期和时间类型

TIMESTAMP

使用年、月、日、小时、分钟、秒域来对日期/ 时间提供更详细的支持

CLOB

用于存储基于字符的大对象最大可达4G

BLOB 

最多可以存储 4GB 数据的二进制大对象

BFILE 

存储指向数据库外部文件的定位符, 外部文件最大为 4GB

 

 

    

分享到:
评论
2 楼 tanyunfei 2011-12-22  
初次发帖,多谢指教,必定改正!
1 楼 斌-黄 2011-12-22  
建议在文章中插入代码的时候使用 Code 标签

相关推荐

    Oracle 10g应用指导

    在案例精讲中,对表压缩、约束的使能与失能、表的层次结构查询、防止删除表及对象、提取创建外键约束的脚本以及在线重新定义表结构的方法做了详细讲解。第6章 PL/SQL程序设计。介绍了PL/SQL中常用的函数、异常处理等...

    Oracle数据库Sql语句详解大全

    第一章 SELECT查询 写一条SELECT查询语句 在查询中使用表达式、运算符 对空值的处理 对查询字段起别名 ...在已创建表中插入新的数据 修改已经存在的数据 删除表中的数据 理解事物控制及其重要性 等等......

    Oracle+10g应用指导与案例精讲

    在案例精讲中,对表压缩、约束的使能与失能、表的层次结构查询、防止删除表及对象、提取创建外键约束的脚本以及在线重新定义表结构的方法做了详细讲解。第6章 PL/SQL程序设计。介绍了PL/SQL中常用的函数、异常处理等...

    oracle实验报告

    【例3-2】:使用%TYPE声明变量,输出制定表中的相关信息。 DECLARE my_name student.sname%TYPE; BEGIN SELECT sname INTO my_name FROM student WHERE no=’01203001’; DBMS_OUTPUT.PUT_LINE(my_name); END;...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    在创建表时,经常会创建该表的主键、外键、唯一约束、Check约束等  语法结构 create table 表名( [字段名] [类型] [约束] ……….. CONSTRAINT fk_column FOREIGN KEY(column1,column2,…..column_n) ...

    韩顺平oracle学习笔记

    2.介绍oracle及其公司的背景 3.学会安装、启动、卸载oracle 4.oracle开发工具 5.Sql*plus的常用命令 6.oracle用户管理 一、主流数据库包括: ?微软:sql server 和 access ?瑞典:mysql AB公司 ?IBM公司:DB2 ?...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    Karen Morton及其团队在本书中提供了专业的方案:先掌握语言特性,再学习Oracle为提升语言效率而加入的支持特性,进而将两者综合考虑并在工作中加以应用。作者通过总结各自多年的软件开发和教学培训经验,与大家...

    Oracle DBA 参考手册

    10.5.2. 完整性约束及其优点 59 10.5.3. 完整性约束的类型 59 10.5.3.1. NOT NULL约束 59 10.5.3.2. UNIQUE键约束 59 10.5.3.3. PRIMARY KEY约束 59 10.5.3.4. FOREIGN KEY约束 60 10.5.3.5. CHECK约束 60 10.5.4. ...

    oracle数据库经典题目

    19.视图是一个表示表的数据的数据库对象,它允许用户从一个表或一组表中通过一定的查询语句建立一个“虚表”。 20.序列是一种可被多个用户使用的用于产生一系列唯一数字的数据库对象。尤其适合多用户环境中,可以...

    精通SQL 结构化查询语言详解

    14.2.1 列约束与表约束的创建  14.2.2 NOT NULL(非空)约束 14.2.3 UNIQUE(惟一)约束  14.2.4 PRIMARY KEY(主键)约束 14.2.5 FOREIGN KEY(外键)约束 14.2.6 CHECK(校验)约束 14.3 深入探讨外键与完整性检查...

    JAVA ORACLE数据库资料讲解

    其中应用环境包括:业务需求、数据需求和技术条件等具体情况,而数据库模式包括数据之间的联系、数据应满足的约束以及对数据的典型操作。从面向对象的角度讲:数据库设计就是类的持久化。 1 数据库设计的重要性 各种...

    Oracle数据库设计规范建议.doc

    数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其 应用系统,有效存储数据,满足用户信息要求和处理要求。 2 适用范围 本规范的适用人员范围包括我司的所有应用开发人员以及在我司承接...

    精通SQL--结构化查询语言详解

    14.2.1 列约束与表约束的创建 282 14.2.2 not null(非空)约束 282 14.2.3 unique(惟一)约束 284 14.2.4 primary key(主键)约束 285 14.2.5 foreign key(外键)约束 287 14.2.6 check(校验)约束 289 ...

    导出创建用户下各个对象数据结构的sql语句的脚本,包括表、视图、索引、约束等等

    适用的数据库:8i, 9i数据库下该脚本通用 <br/>功能:导出一个用户的数据结构,包括表、视图、索引、约束、存储过程、触发器、函数、序列等等的定义,并且每个定义为一个文件 导出的各个对象的定义格式比较...

    数据库课程设计题目汇总.doc

    建立数据库相关表之间的参照完整性约束。 (2)高校学籍管理系统 功能要求: 实现学生信息、班级、院系、专业等的管理; 实现课程、学生成绩信息管理; 实现学生的奖惩信息管理; 创建规则用于限制性别项只能输入...

    精通sql结构化查询语句

    4.1.1 数据表的结构 4.1.2 数据表的种类 4.2 创建数据表 4.2.1 创建数据表的语句结构 4.2.2 创建基本表 4.2.3 非空约束 4.2.4 DEFAULT指定缺省值 4.3 修改数据表 4.3.1 修改数据表的语句结构 4.3.2 给数据表增添新列...

    数据库系统实验课实验报告.doc

    " " "使用命令完成下列扣作(1)查找用户所有表的表名(2)查看每" " "张表的结构(要求把每张表的结构截图放到实验报告中)(3) " " "查看表takes的约束信息 " " "修改表结构 " " "在instructor表中增加列存储...

Global site tag (gtag.js) - Google Analytics