Oracle创建表空间和表

oracle建表、建主键、外键基本语法

-创建表格语法:     

create table 表名(       

字段名1 字段类型(长度)  是否为空,        

字段名2 字段类型       是否为空 );

-增加主键     

alter table 表名 add constraint 主键名 primary key (字段名1);

-增加外键:     

alter table 表名        add constraint 外键名 foreign key (字段名1)          references 关联表 (字段名2);

在建立表格时就指定主键和外键

create table T_STU

(

 STU_ID                char(5) not null,    

 STU_NAME              VARCHAR2(8) not null

 constraint PK_T_STU primary key (STU_ID)

);

主键和外键一起建立:     

create table T_SCORE(

 EXAM_SCORE             number(5,2)

 EXAM_DATE              date,

 AUTOID                 number(10) not null,

 STU_ID                 char(5),

 SUB_ID                 char(3),

 constraint PK_T_SCORE primary key (AUTOID),

 constraint FK_T_SCORE_REFE foreign key (STU_ID) references T_STU (STU_ID),

);

 

ORACLE常用字段类型:
VARCHAR2 (size): 可变长度的字符串, 必须规定长度
CHAR(size): 固定长度的字符串, 不规定长度默认值为1
NUMBER(p,s) :数字型p是位数总长度, s是小数的长度, 可存负数

DATE :日期和时间类型

orale数据类型:

类型

含义

CHAR(length)

存储固定长度的字符串。参数length指定了长度,如果存储的字符串长度小于length,用空格填充。默认长度是1,最长不超过2000字节。

VARCHAR2(length)

存储可变长度的字符串。length指定了该字符串的最大长度。默认长度是1,最长不超过4000字符。

NUMBER(p,s)

既可以存储浮点数,也可以存储整数,p表示数字的最大位数(如果是小数包括整数部分和小数部分和小数点,p默认是38为),s是指小数位数。

DATE

存储日期和时间,存储纪元、4位年、月、日、时、分、秒,存储时间从公元前4712年1月1日到公元后4712年12月31日。

TIMESTAMP

不但存储日期的年月日,时分秒,以及秒后6位,同时包含时区。

CLOB

存储大的文本,比如存储非结构化的XML文档

BLOB

存储二进制对象,如图形、视频、声音等。

2. 创建表时给字段加默认值 和约束条件

创建表时可以给字段加上默认值 例如 : 日期字段 DEFAULT SYSDATE 这样每次插入和修改时, 不用程序操作这个字段都能得到动作的时间

创建表时可以给字段加上约束条件 例如: 非空 NOT NULL ,不允许重复 UNIQUE ,关键字 PRIMARY KEY ,按条件检查 CHECK (条件), 外键 REFERENCES 表名(字段名)

3. 创建表的例子

create table DEPT(
  DNAME      varchar2(14),                  
  LOC           varchar2(6),   
  EPTNO       number(2)   constraint PK_DEPT  primary  KEY,                     
);

create table region(
  ID                    number(2) not null primary KEY,                  
  postcode           number(6) default ‘0‘ not null,   
  areaname          varchar2(30) default ‘‘ not null,                     
);

 

4. 创建表时的命名规则和注意事项

1)表名和字段名的命名规则:必须以字母开头,可以含符号A-Z,a-z,0-9,_,$,#

2)大小写不区分

3)不用SQL里的保留字, 一定要用时可用双引号把字符串括起来

4)用和实体或属性相关的英文符号长度有一定的限制

5)约束名的命名规则和语法 约束名的命名规则约束名如果在建表的时候没有指明,系统命名规则是SYS_Cn(n是数字) 约束名字符串的命名规则同于表和字段名的命名规则

6)使用约束时的注意事项 约束里不能用系统函数,如SYSDATE和别的表的字段比较 可以用本表内字段的比较

注意事项:

1)建表时可以用中文的字段名, 但最好还是用英文的字段名

2)创建表时要把较小的不为空的字段放在前面, 可能为空的字段放在后面

3)建表时如果有唯一关键字或者唯一的约束条件,建表时自动建了索引

4)一个表的最多字段个数也是有限制的,254个.

 

想在事务处理后, 做约束的

检查 SQL> alter session set constraints deferred.

7. 由实体关系图到创建表的例子 s_dept 前提条件:已有region表且含唯一关键字的字段id SQL> CREATE TABLE s_dept (id NUMBER(7) CONSTRAINT s_dept_id_pk PRIMARY KEY, name VARCHAR2(25) CONSTRAINT s_dept_name_nn NOT NULL, region_id NUMBER(7) CONSTRAINT s_dept_region_id_fk REFERENCES region (id), CONSTRAINT s_dept_name_region_id_uk UNIQUE(name, region_id));

8. 较复杂的创建表例子 SQL> CREATE TABLE s_emp (id NUMBER(7) CONSTRAINT s_emp_id_pk PRIMARY KEY, last_name VARCHAR2(25) CONSTRAINT s_emp_last_name_nn NOT NULL, first_name VARCHAR2(25), userid VARCHAR2(8) CONSTRAINT s_emp_userid_nn NOT NULL CONSTRAINT s_emp_userid_uk UNIQUE, start_date DATE DEFAULT SYSDATE, comments VARCHAR2(25), manager_id NUMBER(7), title VARCHAR2(25), dept_id NUMBER(7) CONSTRAINT s_emp_dept_id_fk REFERENCES s_dept(id), salary NUMBER(11,2), commission_pct NUMBER(4,2) CONSTRAINT s_emp_commission_pct_ck CHECK (commission_pct IN(10,12.5,15,17.5,20)));

8. 通过子查询建表 通过子查询建表的例子 SQL>CREATE TABLE emp_41 AS SELECT id, last_name, userid, start_date FROM s_emp WHERE dept_id = 41;

SQL> CREATE TABLE A as select * from B where 1=2; 只要表的结构.

10. 用子查询建表的注意事项 1)可以关连多个表及用集合函数生成新表,注意选择出来的字段必须有合法的字段名称,且不能重复。 2)用子查询方式建立的表,只有非空NOT NULL的约束条件能继承过来, 其它的约束条件和默认值都没有继承过来. 3)根据需要,可以用alter table add constraint ……再建立其它的约束条件,如primary key等.

11. Foreign Key的可选参数ON DELETE CASCADE 在创建Foreign Key时可以加可选参数: ON DELETE CASCADE它的含义是如果删除外键主表里的内容,子表里相关的内容将一起被删除. 如果没有ON DELETE CASCADE参数,子表里有内容,父表里的主关键字记录不能被删除掉.

12. 如果数据库表里有不满足的记录存在,建立约束条件将不会成功.

13. 给表创建和删除同义词的例子 SQL> CREATE SYNONYM d_sum 2 FOR dept_sum_vu;

SQL> CREATE PUBLIC SYNONYM s_dept 2 FOR alice.s_dept;

SQL> DROP SYNONYM s_dept;

 

 

ORACLE之新建

创建一个名为INSURES的表

create table INSURES

(

 INSURE_NO                CHAR(18) not null,          --医保号

 GETSURE_UNIT_NO          CHAR(9) not null,           --经办机构号

 INSURE_NAME              VARCHAR2(10) not null,      --姓名

 INSURE_SEX               CHAR(1) not null,           --性别

 ID_CARD_NO               CHAR(18) not null,          --身份证号

);

给该表字段添加注释

comment on column INSURES.INSURE_NO

 is 医保号;

 

创建/修改主键,唯一性约束和外键   这里INSURE_NO, GETSURE_UNIT_NO唯一性约束

alter table INSURES

add constraint UNQ_INSURES unique (INSURE_NO, GETSURE_UNIT_NO)

alter table TWN_SEED

add constraint UNQ_INSURES primary key (。。。。)

创建索引

create index IDX_INSURES on INSURES (GETSURE_UNIT_NO, SONSURE_UNIT_NO, UNIT_NO, FAMILY_NO, HOSPS_NO)

上一篇:JDBC连接MySQL数据库及演示样例


下一篇:Compilation of OpenGL Redbook sample code