Oracle表管理以及約束筆記
來(lái)源:易賢網(wǎng) 閱讀:1029 次 日期:2014-08-25 10:42:07
溫馨提示:易賢網(wǎng)小編為您整理了“Oracle表管理以及約束筆記”,方便廣大網(wǎng)友查閱!

[導(dǎo)讀]最近一直在學(xué)習(xí)Oracle數(shù)據(jù)庫(kù)。這幾天整理了下 表管理 以及約束的筆記 給大家分享下。

最近一直在學(xué)習(xí)Oracle數(shù)據(jù)庫(kù)。這幾天整理了下 表管理 以及約束的筆記 給大家分享下。

表管理

*!常用的數(shù)據(jù)類(lèi)型!*

varchar/varchar2 表示一個(gè)字符串

number/ number(n): 表示一個(gè)整數(shù),數(shù)字長(zhǎng)度是n,可以使用INT

\ number(m,n): 表示一個(gè)小數(shù),數(shù)字小數(shù)位長(zhǎng)度是n,整數(shù)長(zhǎng)度是m-n,可以使用FLOAT代替

date 表示日期類(lèi)型,日期要按照標(biāo)準(zhǔn)日期格式進(jìn)行存放。

clob 大對(duì)象,表示大文本數(shù)據(jù),一般可以存放4G的文本。

blob 大對(duì)象,表示二進(jìn)制數(shù)據(jù),最大可以存放4G,例如:電影、歌曲、圖片

·表的建立。

1·復(fù)制一張表

create table 表名 as select * from emp; ----復(fù)制emp表中的結(jié)構(gòu)和內(nèi)容

create table 表名 as select * from emp where 1=2;----復(fù)制結(jié)構(gòu)不復(fù)制內(nèi)容

2·創(chuàng)建一張表。create 命令

________________范例____________________

create table person

(

pid varchar2(18),

name varchar2(200),

age number(3),

birthday date,

sex varchar2(2)default '男'

);

________________________________________

·刪除表

drop 刪除表。

·修改表(了解) 一般很少修改表 在IBM 的DB2中根本沒(méi)有alter指令

*!表中存在大量記錄,刪除的話(huà) 是不是很麻煩?!* 有命令:

·增加列:alter指令+table+表名稱(chēng)+add

__________________________范例__________________________________

alter table person add(address varchar(200) default '暫無(wú)地址');

________________________________________________________________

·修改列。alter指令+table+表名稱(chēng)+modify+(列信息);

·表重命名(Oracle獨(dú)有的命令)

rename … to … 只能在Oracle中使用

·截?cái)啾?/P>

清空一張表 不能回滾,

需要截?cái)啾碚Z(yǔ)法:

truncate +表明

############約束############

主要分為五種:

·主鍵約束:表示唯一的表示,本身不能為空。 *例如*:身份證編號(hào)、

·唯一約束:在以個(gè)表中只允許建立以個(gè)主鍵約束而其他不想出現(xiàn)重復(fù)的值的話(huà),則可以使用唯一約束。

·檢查約束:檢查一個(gè)列的內(nèi)容是否合法。 *例如*:性別只能是男、女、中性。

·非空約束,就好像姓名這樣的字段就不能為空。

·外間約束,在兩張表中間進(jìn)行約束操作。

1·主鍵約束(primary key)

·一般在ID上使用,而且本身已經(jīng)默認(rèn)內(nèi)容不能為空??梢栽诮⒈淼臅r(shí)候指定。

_________________________范例__________________________________

create table person

(

pid varchar2(18) primary key,

name varchar2(200),

age number(3),

birthday date,

sex varchar2(2)default '男'

);

________________________________________________________________

·可以用constraint來(lái)指定約束的名稱(chēng)

_________________________范例__________________________________

create table person

(

pid varchar2(18) ,

name varchar2(200),

age number(3),

birthday date,

sex varchar2(2)default '男',

constraint person_pid_pk primary key (pid)

);

________________________________________________________________

2·非空約束(not null)

_________________________范例__________________________________

create table person

(

pid varchar2(18) ,

name varchar2(200) not null ,

age number(3) not null ,

birthday date,

sex varchar2(2)default '男',

constraint person_pid_pk primary key (pid)

);

________________________________________________________________

3·唯一約束(unique)

表示一個(gè)字段中的內(nèi)容是唯一的,其他列不允許重復(fù)。

_________________________范例__________________________________

create table person

(

pid varchar2(18) ,

name varchar2(200) not null ,

age number(3) not null ,

birthday date,

sex varchar2(2) default '男',

constraint person_pid_pk primary key (pid)

);

________________________________________________________________

4·檢查約束(check)

使用檢查約束來(lái)判斷一個(gè)列中插入的內(nèi)容是否合法、例如年齡的取值范圍

_________________________范例__________________________________

create table person

(

pid varchar2(18) ,

name varchar2(200) not null ,

age number(3) not null check(age between 0 and 150),

birthday date,

sex varchar2(2) default '男' check(sex in ('男','女','中性')),

constraint person_pid_pk primary key (pid)

);

________________________________________________________________

上面語(yǔ)句 優(yōu)化自定義 約束名稱(chēng)

create table person

(

pid varchar2(18) ,

name varchar2(200) not null ,

age number(3) not null ,

birthday date,

sex varchar2(2) default '男' ,

constraint person_pid_pk primary key (pid),

constraint person_name_uk unique(name),

constraint person_age_ck check(age between 0 and 150),

constraint person_sex_ck check(sex in ('男','女','中性'))

);_________________________________________________

5·主-外鍵約束(foreign key)

之前的約束都是針對(duì)一張表的約束,這個(gè)主-外鍵約束是針對(duì)兩張表的約束。

范例:書(shū)這個(gè)表中的一本書(shū)屬于人這個(gè)表中的一個(gè)人。

(1)·首先插入兩張表。

drop table person;

drop table book;

create table person

(

pid varchar2(18) ,

name varchar2(200) not null ,

age number(3) not null ,

birthday date,

sex varchar2(2) default '男' ,

constraint person_pid_pk primary key (pid),

constraint person_name_uk unique(name),

constraint person_age_ck check(age between 0 and 150),

constraint person_sex_ck check(sex in ('男','女','中性'))

);

create table book

(

bid number primary key not null ,

bname varchar(30),

bprice number(5,2),pid varchar2(18)

);

(2)·插入完成兩張表之后,下一步插入一些數(shù)據(jù)。

insert into book(bid ,bname ,bprice,pid) values ( 1,'Java Se' ,'59','111111');

insert into person (PID,NAME,AGE,BIRTHDAY,SEX) values ('111111','張三',30,to_date('1987-12-27','yyyy-mm-

dd'),'女');

(3)·插入以下數(shù)據(jù)

insert into book(bid ,bname ,bprice,pid) values ( 1,'Java Se' ,'59','000000');

*!注意!*此編號(hào)的人根本不存在。數(shù)據(jù)也就不應(yīng)該插入。

*!注意!*此時(shí)應(yīng)該用到主-外鍵關(guān)聯(lián),關(guān)聯(lián)之后 字表 的數(shù)據(jù)跟隨著 父表 的數(shù)據(jù)內(nèi)容

主-外鍵語(yǔ)法:foreign key(字段) reference 表名(字段)后者表作為父表 后者表明是指定字段作為父表的字

段 book 表的創(chuàng)建有所改變,變成如下

drop table book;

create table book

(

bid number primary key not null ,

bname varchar(30),

bprice number(5,2),

pid varchar2(18) ,

constraint person_book_pid_fk foreign key(pid) references person(pid)

);

再插入數(shù)據(jù)

此時(shí)就不會(huì)出現(xiàn)找不到對(duì)應(yīng)數(shù)據(jù)的情況。這就是主外鍵。

·在字表中設(shè)置的外鍵在父表中必須是主鍵。

·刪除時(shí)應(yīng)該先刪除子表,再刪除父表。

drop table book; book表是父表。

drop table person; person表是字表。

可以使用強(qiáng)制刪除手段,但這個(gè)做法一般不使用。

________范例______________________

drop table book cascade constraint;不管約束 直接刪除。

__________________________________

·級(jí)聯(lián)刪除

建立主外鍵連接的時(shí)候可以加上 on delete cascade 刪的時(shí)候連同字表的對(duì)應(yīng)數(shù)據(jù)一起刪除掉。

這是外鍵的完整語(yǔ)法。

############修改約束#######(了解)##

·添加約束

alter 表名稱(chēng) add constraint 約束名稱(chēng) 約束類(lèi)型(字段);

*!重點(diǎn)!* ROWNUM

rownum:表示行號(hào)、實(shí)際上這此是一個(gè)列,但這個(gè)列是一個(gè)偽列,此列可以在每張表中出現(xiàn)。

更多信息請(qǐng)查看IT技術(shù)專(zhuān)欄

更多信息請(qǐng)查看數(shù)據(jù)庫(kù)
易賢網(wǎng)手機(jī)網(wǎng)站地址:Oracle表管理以及約束筆記
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢(xún)回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門(mén)公布的正式信息和咨詢(xún)?yōu)闇?zhǔn)!

2025國(guó)考·省考課程試聽(tīng)報(bào)名

  • 報(bào)班類(lèi)型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢(xún) | 簡(jiǎn)要咨詢(xún)須知 | 加入群交流 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專(zhuān)用圖標(biāo)
聯(lián)系電話(huà):0871-65099533/13759567129 獲取招聘考試信息及咨詢(xún)關(guān)注公眾號(hào):hfpxwx
咨詢(xún)QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專(zhuān)用圖標(biāo)