oracle添加主键约束c1,oracle 建表 約束 constraint

約束命名規則

如果不指定約束名Oracle server 自動按照SYS_Cn 的格式指定約束名,也可手動指定,

推薦的約束命名是:約束類型_表名_列名。

NN:NOT NULL             非空約束,比如nn_emp_sal

UK:UNIQUE KEY         唯一約束

PK:PRIMARY KEY       主鍵約束

FK:FOREIGN KEY       外鍵約束

CK:CHECK                  條件約束

建表時約束定義的基本格式:

字段定義constraint 約束名約否類型(字段名)-->unique,primary key,check

字段定義constraint 約否名foreingn key (字段名)references 表名(字段名)--->foreign

1.定義各種不同的約束

--創建一個用於作外鍵的表tb_dept

SQL> CREATE TABLE tb_dept

2  (

3      deptno NUMBER(4) PRIMARY KEY,

4      deptname VARCHAR2(20),

5      loc VARCHAR(50)

6  );

--建表時創建約束,沒有指定約束名,則系統將自動命名約束名

SQL> CREATE TABLE tb_constraint_1

2  (

3      empno NUMBER PRIMARY KEY,                    --主鍵約束

4      ename VARCHAR2(20) NOT NULL,                 --非空約束

5      email VARCHAR2(60) UNIQUE,                   --唯一約束

6      sal   NUMBER(5) CHECK(sal>1500),             --核查約束

7      deptno NUMBER(4) REFERENCES tb_dept(deptno)  --外鍵約束

8  );

--建表時指定了約束名

SQL> CREATE TABLE tb_constraint_2

2  (

3      empno NUMBER CONSTRAINT pk_tb_cons2_empno PRIMARY KEY,

4      ename VARCHAR2(20) CONSTRAINT nn_tb_cons2_empno NOT NULL,

5      email VARCHAR2(60) CONSTRAINT un_tb_cons2_email UNIQUE,

6      sal   NUMBER(5) CONSTRAINT ck_tb_cons2_sal CHECK(sal>1500),

7      deptno NUMBER(4) CONSTRAINT fk_tb_cons2_dept REFERENCES tb_dept(deptno) //外鍵的類型要和指定表的主鍵類型一致 且指定表的那個字段也要為主鍵

8  );

定義符合主鍵約束

--定義復合主鍵

SQL> CREATE TABLE tb_constraint_3

2  (

3      empno NUMBER,

4      ename VARCHAR2(20),

5      email VARCHAR2(20) UNIQUE,

6      CONSTRAINT pk_tb_cons3_empno_ename PRIMARY KEY(empno,ename)

7  );

.級聯約束

CASCADE CONSTRAINTS子句在DROP COLUMN子句中使用

該子句會刪除涉及到在已刪除列上定義的主鍵或唯一關鍵字的所有引用完整性約束

該子句也將刪除在已刪除列上定義的所有多列約束

SQL> CREATE TABLE tb_cons3

2  (

3      empno NUMBER PRIMARY KEY,

4      sal   NUMBER ,

5      comm  NUMBER,

6      mgr   NUMBER,

7      CONSTRAINT fk_tb_cons3 FOREIGN KEY(mgr) REFERENCES tb_cons3(empno),

8      CONSTRAINT ck_tb_cons3_sal CHECK(empno > 0 AND sal > 0),

9      CONSTRAINT ck_tb_cons3_comm CHECK(comm > 0)

10  );

------------------------------------------------------------------------sp分割線----------------------------------------------------------------------------

--主鍵約束

primary key

--非空約束

not null

--檢查約束

check()

--唯一約束

unique

--外鍵約束

foreign key(字段) references 外表命(字段)

--

constraint t_sp_pk primary key(t_id)

constraint t_sp_ck check(t_sex in ('男','女'))

constraint t_sp_uk unique(t_name)

create table t_sp

(

t_id varchar(50),

t_name varchar(50),

t_sex varchar(2),

t_age number(3),

t_bridate date,

s_id varchar(40),

constraint t_id_pk primary key(t_id,t_name),--2個同時做主鍵

constraint t_sex_ck check (t_sex in ('男','女')),

constraint t_age_ck check (t_age between 1 and 120),

constraint t_name_uk unique(t_name),

constraint t_sp_s_id_fk foreign key(s_id) references ss(s_id)

)

create table t_sp

(

t_id varchar(50) primary key ,

t_name varchar(50) unique ,

t_sex varchar(2) check(t_sex in('男','女')),

t_age number(3) check(t_age between 0 and 120),

t_bridate date,

s_id  varchar(40) references ss(s_id)

)

--

ss是另外一張表

外鍵使用 注意:

1:在子表中設置的外鍵字段在父表中必須是主鍵:

2:刪除時 應先刪除子表 再刪除父表

不管約束強制性刪除手段

drop table t_sp cascade constraint 不推薦使用

(今天建表的字段之間有空格 提示無效的字符)原來在oracle不支持空格啊!

修改 添加表 刪除表字段 格式:

alter table 表名 add 新列列名 列數據類型    [default 0 not null]   (添加列默認值為0)

alter table 表名 drop 列名   (刪除列)

alter table 表名 alter column 列名 新添加的數據類型  (修改列)

imp zhl/password@orcl file=d:\zhl.dmp full=y(直接cmd)

CREATE USER 姓名 IDENTIFIED BY 密碼

grant all on 數據庫名 to 用戶名

drop USER  姓名(刪除用戶)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值