工具/材料
公司主營(yíng)業(yè)務(wù):網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出尼金平免費(fèi)做網(wǎng)站回饋大家。
SQL Developer
01
首先打開SQL Developer軟件,找一個(gè)沒有主鍵約束的表,如下圖所示
02
然后我們新建一個(gè)查詢,在界面中輸入如下的約束修改語(yǔ)句,如下圖所示,主要通過add constranint來添加約束
03
編寫完約束添加語(yǔ)句以后,點(diǎn)擊工具欄中的執(zhí)行按鈕,如下圖所示,如果輸出欄顯示已變更則證明主鍵約束創(chuàng)建成果
04
然后我們進(jìn)入STUDENT表的約束添加頁(yè)中可以看到,我們加的主鍵約束已經(jīng)添加進(jìn)去了,如下圖所示
05
另外,創(chuàng)建表的時(shí)候可以直接添加主鍵約束,如下圖所示,直接在表創(chuàng)建語(yǔ)句中添加constraint即可
06
表創(chuàng)建完以后,記得在左側(cè)刷新數(shù)據(jù)庫(kù)信息,如下圖所示,因?yàn)槟銊?chuàng)建的信息不刷新的話不會(huì)更新
07
最后打開你所創(chuàng)建的表,看到你添加的主鍵約束已經(jīng)加入進(jìn)來了,這種方式的效果alter的方式是一樣的
你那條語(yǔ)句有問題,正確的寫法是
create
table
students(student_id
NUMBER(5)
,CONSTRAINT
student_pk
PRIMAPY
KEY(student_id));
翻譯成中文是:
create
table
表名(列名
NUMBER(5)
,CONSTRAINT 約束名
PRIMAPY
KEY(列名));
意思是創(chuàng)建了個(gè)students表.你面就有一列.并且這列設(shè)置成了主鍵.
后面那個(gè)CONSTRAINT
student_pk
PRIMAPY
KEY(列名)
就是將這列設(shè)置成了主鍵!
他是對(duì)此列的一個(gè)約束.并且我們?yōu)檫@個(gè)約束創(chuàng)建了個(gè)名字叫student_pk
primary
key(列名)
這是一個(gè)主鍵約束.指明了這一列是主鍵.
表創(chuàng)建標(biāo)準(zhǔn)語(yǔ)法:
CREATE TABLE [schema.]table
(column datatype [DEFAULT expr] , …);
--設(shè)計(jì)要求:建立一張用來存儲(chǔ)學(xué)生信息的表,表中的字段包含了學(xué)生的學(xué)號(hào)、姓名、年齡、入學(xué)日期、年級(jí)、班級(jí)、email等信息,
--并且為grade指定了默認(rèn)值為1,如果在插入數(shù)據(jù)時(shí)不指定grade得值,就代表是一年級(jí)的學(xué)生
--DML是不需要commit的,隱式事務(wù)
create table student
(
stu_id number(10),
name varchar2(20),
age number(2),
hiredate date,
grade varchar2(10) default 1,
classes varchar2(10),
email varchar2(50)
);
-- 注意日期格式要轉(zhuǎn)換,不能是字符串,varchar2類型要用引號(hào),否則出現(xiàn)類型匹配
--DML 需要收到commit
insert into student values(20211114,'zhangsan',22,to_date('2021-11-14','YYYY-MM-DD'),'2','1',' 123@qq.com ');
insert into student(stu_id,name,age,hiredate,classes,email) values(20211114,'zhangsan',22,to_date('2021-11-14','YYYY-MM-DD'),'1',' 1234@qq.com ');
select * from student;
-- 給表添加列,添加新列時(shí)不允許為not null,因?yàn)榕c舊值不兼容
alter table student add address varchar(100);
-- 刪除列
alter table student drop column address;
--修改列
alter table student modify(email varchar2(100));
正規(guī)表設(shè)計(jì)使用power disinger
--表的重命名
rename student to stu;
-- 表刪除
drop table stu;
**
在刪除表的時(shí)候,經(jīng)常會(huì)遇到多個(gè)表關(guān)聯(lián)的情況(外鍵),多個(gè)表關(guān)聯(lián)的時(shí)候不能隨意刪除,使用如下三種方式:
2.表的約束(constraint)
約束:創(chuàng)建表時(shí),指定的插入數(shù)據(jù)的一些規(guī)則
約束是在表上強(qiáng)制執(zhí)行的數(shù)據(jù)校驗(yàn)規(guī)則
Oracle 支持下面五類完整性約束:
1). NOT NULL 非空約束 ---- 插入數(shù)據(jù)時(shí)列值不能空
2). UNIQUE Key 唯一鍵約束 ----限定列唯一標(biāo)識(shí),唯一鍵的列一般被用作索引
3). PRIMARY KEY 主鍵約束 ----唯一且非空,一張表最好有主鍵,唯一標(biāo)識(shí)一行記錄
4). FOREIGN KEY 外鍵約束---多個(gè)表間的關(guān)聯(lián)關(guān)系,一個(gè)表中的列值,依賴另一張表某主鍵或者唯一鍵
-- 插入部門編號(hào)為50的,部門表并沒有編號(hào)為50的,報(bào)錯(cuò)
insert into emp(empno,ename,deptno) values(9999,'hehe',50);
5). CHECK 自定義檢查約束---根據(jù)用戶需求去限定某些列的值,使用check約束
-- 添加主鍵約束/not null約束/check約束/唯一鍵約束
create table student
(
stu_id number(10) primary key,
name varchar2(20) not null,
age number(3) check(age0 and age126),
hiredate date,
grade varchar2(10) default 1,
classes varchar2(10),
email varchar2(50) unique,
deptno number(2),
);
-- 添加外鍵約束
create table stu
(
stu_id number(10) primary key,
name varchar2(20) not null,
age number(3) check(age0 and age126),
hiredate date,
grade varchar2(10) default 1,
classes varchar2(10),
email varchar2(50) unique,
deptno number(2),
FOREIGN KEY(deptno) references dept(deptno)
);
-- 創(chuàng)建表時(shí)沒添加外鍵約束 也可以修改 其中fk_0001為外鍵名稱
alter table student add constraint fk_0001 foreign key(deptno) references dept(deptno);
索引創(chuàng)建有兩種方式:
組合索引:多個(gè)列組成的索引
--索引:加快數(shù)據(jù)剪碎
create index i_ename on emp(ename);
--當(dāng)創(chuàng)建某個(gè)字段索引后,查詢某個(gè)字段會(huì)自動(dòng)使用到索引
select * from emp where ename = 'SMITH';
--刪除索引 索引名稱也是唯一的
drop index i_ename;
一些概念:
回表:
覆蓋索引
組合索引
最左匹配
oracle建表約束主要有以下幾大類:
nn:not
null
非空約束
uk:unique
key
唯一約束
pk:primary
key
主鍵約束
fk:foreign
key
外鍵約束
ck:check
條件約束
一張表必須要有一個(gè)字段為主鍵,這段不能為空,并且值唯一,oracle中一般將該字段定義為數(shù)值類型,用序列為該字段插入值;其他字段的約束要根據(jù)業(yè)務(wù)需求來定。
給表中的字段添加約束可以在創(chuàng)建表時(shí)添加,也可以在修改時(shí)添加。
創(chuàng)建表必須給出表名、字段名、字段類型,約束條件不是必須的。
例如:創(chuàng)建如下表時(shí)
create
table
tb_constraint_1
(
empno
number
primary
key,
--主鍵約束
ename
varchar2(20)
not
null,
--非空約束
varchar2(60)
unique,
--唯一約束
sal
number(5)
check(sal1500),
--核查約束
deptno
number(4)
references
tb_dept(deptno)
--外鍵約束
);
修改已創(chuàng)建表中某個(gè)字段的約束:
alter
table
tb_constraint_1
add
constraint
yueshumingzi
unique(ename
);--修改姓名字段值必須唯一
創(chuàng)建表的外鍵約束時(shí),外鍵字段的類型必須和關(guān)聯(lián)表的主鍵的類型一致。
表名和字段名的長(zhǎng)度oracle默認(rèn)約定為長(zhǎng)度不能大于30個(gè)字符
創(chuàng)建好的表,字段可以修改,以下是修改
添加表
刪除表字段
格式:
alter
table
表名
add
新列列名
列數(shù)據(jù)類型
[default
not
null]
(添加列默認(rèn)值為0)
alter
table
表名
drop
列名
(刪除列)
alter
table
表名
alter
column
列名
新添加的數(shù)據(jù)類型
(修改列)
創(chuàng)建表結(jié)構(gòu):
向表中添加主鍵約束
向表中添加Sequences
添加字段的語(yǔ)法:
修改字段的語(yǔ)法:
刪除字段的語(yǔ)法:
添加、修改、刪除多列的話,用逗號(hào)隔開。
方法給你 你自己設(shè)置吧
修改不同的表要寫不同的alter table 不同的表
alter table 你的表--此為修改表約束
add /*必須包含add 添加*/ constraint/*約束,也必須包含*/
--固定用法
alter table '表名'
add constraint 約束名 約束類型 約束描述
/*對(duì)應(yīng)約束*/
alter table '表名'
add
--主鍵
constraint PK_字段/*此為命名規(guī)范要求*/ primary key(字段),
--唯一約束
constraint UK_字段 unique key(字段),
--默認(rèn)約束
constrint DF_字段 default('默認(rèn)值') for/*到*/ 字段,
--檢查約束
constraint CK_字段 check(約束。如:len(字段)1),
--主外鍵關(guān)系
constraint FK_主表_從表 foreign(外鍵字段) references 主表(主表主鍵字段)
go--后續(xù) 一般約束是寫在建表之后的
最后 給你寫下限制時(shí)間的約束
alter table 表
add constraint CK_Date
check(列 between '1900-1-1 ' and '2990-1-1')
網(wǎng)頁(yè)名稱:oracle怎么加入約束,oracle中約束有哪幾種
文章URL:http://chinadenli.net/article10/dsgiido.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁(yè)設(shè)計(jì)公司、建站公司、網(wǎng)站制作、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站營(yíng)銷、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)