当只有一个字段作为主键字段且不需要用户定义PK Constraint 名称的时候 :
CREATE TABLE SFIS1.A_TEST_T
(
EMP_NO VARCHAR2(25 BYTE) PRIMARY KEY ,
EMP_NAME VARCHAR2(20 BYTE) NOT NULL,
EMP_RANK VARCHAR2(1 BYTE),
CLASS_NAME VARCHAR2(10 BYTE)
)
TABLESPACE BASE_DATA ;
Toad中显示:
CREATE TABLE SFIS1.A_TEST_T
(
EMP_NO VARCHAR2(25 BYTE),
EMP_NAME VARCHAR2(20 BYTE) NOT NULL,
EMP_RANK VARCHAR2(1 BYTE),
CLASS_NAME VARCHAR2(10 BYTE)
)
TABLESPACE BASE_DATA ;
ALTER TABLE SFIS1.A_TEST_T ADD (
PRIMARY KEY
(EMP_NO)
USING INDEX
TABLESPACE BASE_DATA ;
隐含的建立的unique index 名称为 SYS_C007673 . Toad显示的
脚本中没有出现 。
==============================================================================================
一个或多个字段联合作为主键或需要在创建table时定义PK名称的时候,使用如下的语句:
CREATE TABLE SFIS1.A_TEST_T_1
(
EMP_NO VARCHAR2(25 BYTE) NOT NULL,
EMP_NAME VARCHAR2(20 BYTE) NOT NULL,
EMP_RANK VARCHAR2(1 BYTE),
CLASS_NAME VARCHAR2(10 BYTE),
CONSTRAINT PK_EMPNO PRIMARY KEY (EMP_NO)
)
TABLESPACE BASE_DATA ;
Toad中显示的脚本是:
CREATE TABLE SFIS1.A_TEST_T_1
(
EMP_NO VARCHAR2(25 BYTE) NOT NULL,
EMP_NAME VARCHAR2(20 BYTE) NOT NULL,
EMP_RANK VARCHAR2(1 BYTE),
CLASS_NAME VARCHAR2(10 BYTE)
)
TABLESPACE BASE_DATA ;
CREATE UNIQUE INDEX SFIS1.PK_EMPNO ON SFIS1.A_TEST_T_1
(EMP_NO)
LOGGING
TABLESPACE BASE_DATA ;
ALTER TABLE SFIS1.A_TEST_T_1 ADD (
CONSTRAINT PK_EMPNO
PRIMARY KEY
(EMP_NO)
USING INDEX
TABLESPACE BASE_DATA ;
由于用户指出了constraint 的名称 PK_EMPNO ,所以系统为用户建立 UNIQUE INDEX 名称
===================================================================================================
多个字段联合作为主键且需要在创建table时定义PK名称的时候,使用如下的语句:
CREATE TABLE SFIS1.A_TEST_T_2
(
EMP_NO VARCHAR2(25 BYTE) NOT NULL,
EMP_NAME VARCHAR2(20 BYTE) NOT NULL,
EMP_RANK VARCHAR2(1 BYTE),
CLASS_NAME VARCHAR2(10 BYTE),
CONSTRAINT PK_EMPNONAME PRIMARY KEY (EMP_NO,EMP_NAME)
)
TABLESPACE BASE_DATA ;
Toad中显示的脚本是:
CREATE TABLE SFIS1.A_TEST_T_2
(
EMP_NO VARCHAR2(25 BYTE) NOT NULL,
EMP_NAME VARCHAR2(20 BYTE) NOT NULL,
EMP_RANK VARCHAR2(1 BYTE),
CLASS_NAME VARCHAR2(10 BYTE)
)
TABLESPACE BASE_DATA ;
CREATE UNIQUE INDEX SFIS1.PK_EMPNONAME ON SFIS1.A_TEST_T_2
(EMP_NO, EMP_NAME)
LOGGING
TABLESPACE BASE_DATA ;
ALTER TABLE SFIS1.A_TEST_T_2 ADD (
CONSTRAINT PK_EMPNONAME
PRIMARY KEY
(EMP_NO, EMP_NAME)
USING INDEX
TABLESPACE BASE_DATA ;
Toad生成的脚本一样也是先建立table, 然后建立unique index ,最后修改table,加入constraint .
===================================================================================================
先建立table, 然后通过alter table 加入PK 值(用户自己定义PK名称) 。
CREATE TABLE SFIS1.A_TEST_T_3
(
EMP_NO VARCHAR2(25 BYTE) NOT NULL,
EMP_NAME VARCHAR2(20 BYTE) NOT NULL,
EMP_RANK VARCHAR2(1 BYTE),
CLASS_NAME VARCHAR2(10 BYTE)
)
TABLESPACE BASE_DATA ;
ALTER TABLE SFIS1.A_TEST_T_3 ADD (
CONSTRAINT PK_NONAME3
PRIMARY KEY
(EMP_NO, EMP_NAME)
USING INDEX
TABLESPACE BASE_DATA
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 1M
NEXT 1M
MINEXTENTS 1
MAXEXTENTS 2147483645
PCTINCREASE 0
FREELISTS 1
FREELIST GROUPS 1
));
Toad 中显示脚本:
CREATE TABLE SFIS1.A_TEST_T_3
(
EMP_NO VARCHAR2(25 BYTE) NOT NULL,
EMP_NAME VARCHAR2(20 BYTE) NOT NULL,
EMP_RANK VARCHAR2(1 BYTE),
CLASS_NAME VARCHAR2(10 BYTE)
)
TABLESPACE BASE_DATA
PCTUSED 40
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE (
INITIAL 16K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS 2147483645
PCTINCREASE 0
FREELISTS 1
FREELIST GROUPS 1
BUFFER_POOL DEFAULT
)
LOGGING
NOCOMPRESS
NOCACHE
NOPARALLEL
NOMONITORING;
CREATE UNIQUE INDEX SFIS1.PK_NONAME3 ON SFIS1.A_TEST_T_3
(EMP_NO, EMP_NAME)
LOGGING
TABLESPACE BASE_DATA
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 1M
NEXT 1M
MINEXTENTS 1
MAXEXTENTS 2147483645
PCTINCREASE 0
FREELISTS 1
FREELIST GROUPS 1
BUFFER_POOL DEFAULT
)
NOPARALLEL;
ALTER TABLE SFIS1.A_TEST_T_3 ADD (
CONSTRAINT PK_NONAME3
PRIMARY KEY
(EMP_NO, EMP_NAME)
USING INDEX
TABLESPACE BASE_DATA
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 1M
NEXT 1M
MINEXTENTS 1
MAXEXTENTS 2147483645
PCTINCREASE 0
FREELISTS 1
FREELIST GROUPS 1
));
===================================================================================================
从建立主键的脚本中可以看出非空唯一索引和PK之间的区别,非空和PK都是constraint , 唯一索引是Index .
且PK可以有外键FK . 注: 外键也是contraint .
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-605321/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/35489/viewspace-605321/