青軟實訓1 約束

2021-10-01 22:49:27 字數 3742 閱讀 4165

oracle約束,一般是在重要主鍵約束用的,但是使用約束得考慮實際的情況,因為是要影響到效能的問題,使用不當會影響到資料的使用。

oracle約束有五種,分別是:

主鍵約束(primary key)

乙個表中只有乙個主鍵,而且主鍵是唯一的,不可重複,其實也相當於唯一性約束(unique)和非空約束(not null),但是效果卻不太相同

唯一性約束(unique)

保證資料的唯一性,可以出現空值

非空約束(not null)

列中的值不能為空

外來鍵約束(foreign key)

在父表中子表的列

檢查約束(check)

檢查資料是否滿足指定的條件

它可以在建立表的同時加上,或者是在建立表之後再新增,能在表級或者列級單獨定義,注意:表級約束可以定義在乙個列或者是多個列上,列級約束就只能定義在乙個列上。

1.定義約束,建立表的同時定義:

create table newtable3

( id number(10) primary key ,

name varchar2(10),

birthday date not null

)2.在建立好的表之後,也可以對錶進行新增或刪除約束,注意:約束是不能進行修改的,但是可以是約束有效化或者是無效化

1. 新增主鍵約束

alter table newtable3 add primary key(id);

2.新增唯一性約束:

alter table newtable3 add  unique(name);

3.注意:新增非空約束(not null)時要使用modify語句,只能是非空約束(not null),其他的約束不能使用modify,因為語法特殊的問題

alter table newtable3 modify  (birthday date not null);

4.刪除約束:直接用drop刪除不需要的約束即可

alter table newtable3 drop unique(name);

5.check約束:檢查資料是否滿足指定的條件

alter table newtable3 add  check(name>0 and name<10);

如果超出了指定條件範圍,則會出錯

6.外來鍵約束: foreign key

create table category(

cid int primary key auto_increment,

cname varchar(10),

cdesc varchar(31)

);create table product(

pid int primary key auto_increment,

pname varchar(10),

price double,

pdate timestamp,

cno int

);給product中的這個cno 新增乙個外來鍵約束

alter table product add foreign key(cno) references category(cid);

二、主鍵、外來鍵和索引的區別

定義:主鍵--唯一標識一條記錄,不能有重複的,不允許為空

外來鍵--表的外來鍵是另一表的主鍵, 外來鍵可以有重複的, 可以是空值

索引--該欄位沒有重複值,但可以有乙個空值

作用:主鍵--用來保證資料完整性

外來鍵--用來和其他表建立聯絡用的

索引--是提高查詢排序的速度

個數:主鍵--主鍵只能有乙個

外來鍵--乙個表可以有多個外來鍵

索引--乙個表可以有多個唯一索引

建立sql的主鍵和外來鍵約束的方法:

create table student --建**式:create table 自定義的表名

( --欄位名一般為有一定意義的英文

studentname varchar2(15), -- 格式:欄位名型別()括號裡面的是允許輸入的長度

studentage int, --int型的後面不需要接長度

student*** varchar2(2) --最後乙個字段後面不要逗號

)--在建立表時就可以對欄位加上約束:

create table student

(studentno int primary key identity(1,1), --加主鍵約束,還有標識列屬性(兩者構成實體完整性)

studentname nvarchar(15) not null, --加非空約束,不加"not null" 預設為:可以為空

studentschool text(20) foreign key references schooltable(schoolname), --加外來鍵約束,格式:foreign key references 關聯的表名(欄位名)

studentage int default ((0)), --加預設值約束

student*** nvarchar(2) check(student***=n'男' or student***=n'女') --加檢查約束,格式:check (條件表示式)

)--如果在表建立好了以後再加約束,則格式分別為:

-- 主鍵:

alter table 表名

add constraint pk_欄位名--"pk"為主鍵的縮寫,欄位名為要在其上建立主鍵的欄位名,'pk_欄位名'就為約束名

primary key (欄位名) --欄位名同上

--唯一約束:

alter table 表名

add constraint uq_欄位名

unique (欄位名)

--外來鍵約束:

alter table 表名

add constraint fk_欄位名--"fk"為外來鍵的縮寫

foreign key (欄位名) references 關聯的表名(關聯的欄位名) --注意'關聯的表名'和'關聯的欄位名'

alter table 表a add constraint fk_b foreign key (ticket_no) references 表b(ticket_no)

alter table 表a add constraint fk_c foreign key (person_no) references 表c(person_no)

alter table 成績表 add constraint fk_studentno foreign key (studentno) references student (studentno)

on update cascade on delete cascade

級聯更新,級聯刪除,這樣在刪除主表student時,成績表中該學生的所有成績都會刪除。

--檢查約束:

alter table 表名

add constraint ck_欄位名

check (條件表示式) --條件表示式中的條件用關係運算子連線

--預設值約束:

alter table 表名

add constraint df_欄位名

default '預設值' for 欄位名--其中的'預設值'為你想要預設的值,注意'for'

--刪除建立的約束:

alter table 表名

drop constraint 約束名--約束名為你前面建立的如:pk_欄位這樣的約束名

--注意:如果約束是在建立表的時候建立的,則不能用命令刪除

--只能在'企業管理器'裡面刪除

中軟實訓總結 中軟實訓心得

在廈門中軟的乙個多月裡,在那裡學習的經歷讓我懷念,難忘,在那裡的每一天都會讓我成長。在中軟的實訓生活中,我深刻體會到了自己專業方面的欠缺和不足,也意識到了作為計算機網路工程專業的學生,要想在以後的職業中嶄露頭角,除了要有很好的專業知識,還必須具備良好的心理素質和善於交流溝通的能力,使自己在以後的途中...

中軟實訓總結 中軟實訓心得

中軟實訓心得 在廈門中軟的乙個多月裡,在那裡學習的經歷讓我懷念,難忘,在那裡的每一天都會讓我成長。在中軟的實訓生活中,我深刻體會到了自己專業方面的欠缺和不足,也意識到了作為計算機網路工程專業的學生,要想在以後的職業中嶄露頭角,除了要有很好的專業知識,還必須具備良好的心理素質和善於交流溝通的能力,使自...

中軟實訓總結 中軟實訓心得

在廈門中軟的乙個多月裡,在那裡學習的經歷讓我懷念,難忘,在那裡的每一天都會讓我成長。在中軟的實訓生活中,我深刻體會到了自己專業方面的欠缺和不足,也意識到了作為計算機網路工程專業的學生,要想在以後的職業中嶄露頭角,除了要有很好的專業知識,還必須具備良好的心理素質和善於交流溝通的能力,使自己在以後的途中...