Oracle數(shù)據(jù)庫基本操作
1.概述
Oracle數(shù)據(jù)庫客戶端一般需要安裝在服務器上脯燃,可以在服務器端操作,一般我們可以用sql developer工具遠程連接到數(shù)據(jù)庫掂僵,先行建立數(shù)據(jù)庫巾遭,然后對表進行增刪改查贩虾。也可以使用MyEclispse的DB Broswer工具進行連接數(shù)據(jù)庫并進行簡單的增刪改查。
2.SQL語句
Data Definition Language(DDL):
主要用于建立辅髓、修改、刪除數(shù)據(jù)庫對象(表)少梁,不需要事務的參與
CREATE:創(chuàng)建表
CREATE TABLE emp(
id NUMBER(10),
name VARCHAR2(20),
gender CHAR(1),
birth DATE,
salary NUMBER(6,2),
);
DESC :查詢表結(jié)構(gòu)
DESC emp;
RENAME:重命名表名
RENAME emp TO employee;
DROP:刪除表
DROP TABLE emp;
ALTER:列(字段)操作
ADD:增加字段
ALTER TABLE employee?ADD(birth DATE DEFAULT sysdate);
MODITY:修改字段
ALTER TABLE employeeMODIFY(name VARCHAR2(40) DEFAULT 'CLERK' );
DROP:刪除字段
ALTER TABLE employee?DROP?(birth);
Data Manipulation Language(DML)
用于對數(shù)據(jù)記錄進行操作洛口,包括插入,刪除凯沪,修改第焰。需要commit才能真正確認操作,如果需要撤銷則rollback著洼。
INSERT INTO:插入數(shù)據(jù)
INSERT INTO employee(id, name, salary) VALUES(1001, 'rose', 5500);
UPDATE…SET..:更新數(shù)據(jù)
UPDATE employee SET salary = 8500 WHERE name = 'ROSE';
DELETE FROM:刪除記錄
DELETE FROM employee WHERE job is null;
Transaction Control Language(TCL)
事務控制語言樟遣,包括commit提交,rollback回滾身笤,savepoint保存點(可以回退到指定保存點)豹悬。在sql developer中為圖標。
Data Query Language(DQL)
SQL基礎(chǔ)查詢:
查詢語句的執(zhí)行順序
FROM?子句:執(zhí)行順序為從后往前液荸、從右到左瞻佛。數(shù)據(jù)量較少的表盡量放在后面。
WHERE子句:執(zhí)行順序為自下而上娇钱、從右到左伤柄。將能過濾掉最大數(shù)量記錄的條件寫在WHERE?子句的最右。
GROUP BY:執(zhí)行順序從左往右分組文搂,最好在GROUP BY前使用WHERE將不需要的記錄在GROUP BY之前過濾掉适刀。
HAVING?子句:消耗資源。盡量避免使用煤蹭,HAVING?會在檢索出所有記錄之后才對結(jié)果集進行過濾笔喉,需要排序等操作。
SELECT子句:少用*號硝皂,盡量取字段名稱常挚。ORACLE?在解析的過程中,?通過查詢數(shù)據(jù)字典將*號依次轉(zhuǎn)換成所有的列名,?消耗時間。
ORDER BY子句:執(zhí)行順序為從左到右排序稽物,消耗資源奄毡。
也就是從哪張表中以什么樣的限制條件確定數(shù)據(jù)內(nèi)容,再通過分組與進一步限制分組條件得到一個處理過的數(shù)據(jù)贝或,最后選擇出來吼过,如有需要锐秦,則對最后選擇的數(shù)據(jù)進行排序。
FROM子句:
From后接表名那先,from前可以可以是*农猬,但是不建議(查詢效率低),一般接要查詢的字段名售淡。分組函數(shù)斤葱,字段和表名都可以使用別名,不加引號數(shù)據(jù)庫中為大寫揖闸,加引號別名可以用空格小寫等揍堕。
WHERE子句:
當查詢條件中和數(shù)字比較,可以使用單引號引起汤纸,也可以不用衩茸,當和字符及日期類型的數(shù)據(jù)比較,則必須用單引號引起贮泞。
使用條件判斷:>楞慈,<,<=啃擦,<=囊蓝,!=,<>令蛉,=聚霜。
SELECT ename, sal FROM emp WHERE sal< 2000;
SELECT ename, sal, job FROM emp WHERE job = 'SALESMAN';
SELECT ename, sal, hiredate FROM emp
WHERE hiredate>todate('2002-1-1','YYYY-MM-DD');
使用AND/OR關(guān)鍵字
如果希望返回的結(jié)果必須滿足多個條件,應該使用AND邏輯操作符連接這些條件
如果希望返回的結(jié)果滿足多個條件之一即可珠叔,應該使用OR邏輯操作符連接這些條件
SELECT ename, sal, job FROM emp
WHERE sal> 1000 AND job = 'CLERK';
使用LIKE條件
SELECT ename, job FROM emp WHERE ename LIKE '_A%';(第二個字母為A)
‘_A%’_表示占位一個字符蝎宇,%表示0到多個字符。
使用IN/NOT??IN
在WHERE子句中可以用比較操作符IN(list)來取出符合列表范圍中的數(shù)據(jù)祷安。其中的參數(shù)list表示值列表姥芥,當列或表達式匹配于列表中的任何一個值時,條件為TRUE汇鞭,該條記錄則被顯示出來撇眯。
SELECT ename, job FROM emp WHERE job IN ('MANAGER', 'CLERK');
使用BETWEEN1AND2
用來查詢符合(1,2)值域范圍之內(nèi)的數(shù)據(jù)虱咧,通常查詢數(shù)字和日期類型的數(shù)據(jù)范圍。
SELECT ename, sal FROM emp
WHERE sal BETWEEN 1500 AND 3000;
使用IS NULL和IS NOT NULL
條件篩選值為空的記錄锚国,空值不能用‘=’來判斷腕巡。
使用ANY和ALL條件
在比較運算符中,可以出現(xiàn)ALL和ANY血筑,表示“全部”和“任一”绘沉,
> ANY :?大于最小< ANY:小于最大> ALL:大于最大< ALL:小于最小
SELECT empno, ename, job, sal, deptno
FROM emp WHERE
sal> ANY?(SELECT sal FROM emp WHERE job = 'SALESMAN');
查詢條件中使用算術(shù)表達式
當查詢需要對選出的字段進行進一步計算煎楣,可以在數(shù)字列上使用算術(shù)表達式(+、-车伞、*择懂、/)。表達式符合四則運算的默認優(yōu)先級另玖,如果要改變優(yōu)先級可以使用括號困曙。
SELECT ename, sal, job FROMempWHERE ename = UPPER('rose');
SELECT ename, sal, job FROM empWHERE sal * 12 >100000;
使用DISTINCT過濾重復
DISTINCT必須緊跟SELECT,后面可以有多個字段谦去,表示過濾掉多個字段都重復的選項慷丽,第二例中不顯示重復的deptno和job相同的記錄。
SELECT DISTINCT deptno FROM emp;
SELECT DISTINCT deptno, job FROM emp;
使用ORDER BY子句
對查詢數(shù)據(jù)按照一定的規(guī)則排序鳄哭,則使用order by子句要糊,order by子句必須為select子句的最后一個子句。默認升序排列妆丘,從小到大锄俄,ASC表示升序。DESC表示降序勺拣,從大到小奶赠。
SELECT ename, sal FROM emp
??ORDER BY sal DESC;
Order by多個列,每個列需要單獨指定排序規(guī)則宣脉,先按照第一個字段排序车柠,當?shù)谝粋€字段的值相同時,再按照第二個字段的值排序塑猖。
聚合函數(shù)分組函數(shù)
當需要統(tǒng)計的數(shù)據(jù)并不能在表里直觀列出竹祷,而是需要根據(jù)現(xiàn)有的數(shù)據(jù)計算得到結(jié)果,這種功能可以使用聚合函數(shù)來實現(xiàn)羊苟。
因為是多行數(shù)據(jù)參與運算返回一行結(jié)果塑陵,也稱作分組函數(shù)、多行函數(shù)蜡励、集合函數(shù)令花。用到的關(guān)鍵字:GOURP BY?按什么分組,HAVING進一步限制分組結(jié)果
MAX和MIN
用來取得列或者表達式的最大最小值,包括數(shù)字,字符和日期生巡。
SELECT MAX(sal) max_sal, MIN(sal) min_sal FROM emp;
AVG和SUM
用來統(tǒng)計列或者表達式的平均值和求和糖埋,只能處理數(shù)字類,并且平均值忽略NULL。
SELECT AVG(sal) avg_sal, SUM(sal)??sum_sal??FROM emp;
COUNT
用來計算表中的記錄條數(shù),同樣忽略NULL玫芦。
SELECT COUNT(job) total_num??FROM emp;
空值的操作
NVL(expr1, expr2):將NULL轉(zhuǎn)變?yōu)榉荖ULL值慎王。如果expr1為NULL蚓土,則取值expr2, expr2是非空值。
NVL2(expr1, expr2, expr3):和NVL函數(shù)功能類似赖淤,都是將NULL轉(zhuǎn)變?yōu)榉强罩凳衿帷VL2用來判斷expr1是否為NULL,如果不是NULL咱旱,返回expr2确丢,如果是NULL,返回expr3莽龟。
GROUP BY子句
Group by是表示對表中某個字段進行分組蠕嫁,值相同為一組,而分組函數(shù)的意思則是對這每一個組進行計算毯盈,平均值或是最大最小值剃毒。
HAVING子句
是對分組后的結(jié)果進行進一步的限制,HAVING子句必須緊跟在GROUP BY子句后搂赋,不能單獨存在赘阀。限制分組條件不能放在WHERE子句中。
SELECT deptno, MAX(sal) max_sal FROM emp
GROUP BY deptno HAVING MAX(sal) >4000;
SQL關(guān)聯(lián)查詢:
概述脑奠,在實際應用中基公,往往我們所需要的數(shù)據(jù)是分布在不同的表上的,我們想要獲取數(shù)據(jù)必須跨表格查詢宋欺。
關(guān)聯(lián)有兩種方式:
SELECT table1.column, table2.column
FROM table1, table2
WHERE?table1.column1 = table2.column2;
SELECT table1.column, table2.column
FROM table1JOINtable2
ON(table1.column1 = table2.column2);
關(guān)聯(lián)查詢有三種連接方式
內(nèi)連接返回關(guān)聯(lián)表中所有滿足條件的記錄(也稱等值連接)
外連接返回一些不滿足條件的記錄轰豆,外連接有左外連接,右外連接和全外連接三種形式
其中左外連接返回左邊所有記錄而不必管右邊是否匹配齿诞,如不匹配則為NULL值酸休,
右外連接返回右邊所有記錄而不必管左邊的記錄是否匹配,如不匹配則默認NULL祷杈,
全外連接返回左邊和右邊所有的數(shù)據(jù)斑司,左右邊不匹配的數(shù)據(jù),對應的其他字段值為NULL但汞,
格式如下
JOIN ON式
SELECT table1.column, table2.column
FROM table1?[LEFT | RIGHT | FULL] JOINtable2
ON?table1.column1 = table2.column2;
WHERE式
Select * from dave a,bl b?wherea.id=b.id(+);
+號的位置和意義
‘+’號加在哪個表宿刮,哪個表就是關(guān)聯(lián)表,另一張表就是基表私蕾〗┤保基表全部顯示,關(guān)聯(lián)表匹配顯示踩叭。+在左邊就是右外連接谤饭,+在右邊就是左外連接。
自連接:
表示數(shù)據(jù)的來源是同一張表的內(nèi)容,即將一張表中的不同列進行連接揉抵,可以是等值或者不等值。實現(xiàn)方式是利用別名將一張表看作兩張表嗤疯。
SELECT?????worker.empnow_empno,worker.enamew_ename, manager.empnom_empno, manager.enamem_ename
FROMemp workerjoinemp manager
ON worker.mgr = manager.empno;
SQL高級查詢:
子查詢:
子查詢用在WHERE里
在SELECT中冤今,往往WHERE的限制條件并不是一個確定的值,而是來源于另一個查詢結(jié)果茂缚,即需要在另一個查詢結(jié)果的基礎(chǔ)上進行查詢戏罢,這個時候為另一個查詢提供數(shù)據(jù)的查詢就叫做子查詢。
SELECT e.ename, e.job FROM emp e
WHERE e.job =(SELECT job FROM emp WHERE ename = 'SCOTT');
可以與多行/單行比較操作符混合使用脚囊。
子查詢用在HAVING子句
SELECT deptno, MIN(sal) min_sal FROM emp GROUP BY deptno
HAVING MIN(sal) > (SELECT MIN(sal) FROM emp WHERE deptno = 30);
表示分組條件需要滿足的條件龟糕。可以把子查詢當成一個結(jié)果悔耘。
子查詢用在FROM部分
子查詢用在FROM子句中讲岁,子查詢可稱為行內(nèi)視圖或者匿名試圖,可以把它當成一張單獨的表衬以,用別名進行標識缓艳。
子查詢用在SELECT子句中
可以認為是外連接的一張表現(xiàn)
分頁查詢:
ROWNUM
偽列,返回標識行數(shù)據(jù)順序的數(shù)字看峻,偽列并不是真正的列數(shù)據(jù)阶淘,只是用來顯示行數(shù),并不能單獨作為一列進行分組操作互妓。
ROWNUM的結(jié)果從第一行數(shù)據(jù)之上開始溪窒,每查詢到一條數(shù)據(jù)則指針下移一個,所以只有查詢到數(shù)據(jù)后才能夠出現(xiàn)偽列數(shù)字冯勉,因此不能直接用在where里澈蚌,如果要利用ROWNUM截取結(jié)果集的部分數(shù)據(jù),可以將含有ROWNUM偽列的SELECT子句放在FROM內(nèi)珠闰,作為視圖惜浅,供外部的SELECT語句使用,此時的偽列已形成順序數(shù)據(jù)伏嗜,可以進行分組函數(shù)操作坛悉。
也就是將ROWNUM先作為行內(nèi)視圖的一個列,在主查詢中就可以使用這個列值作為條件承绸。
SELECT??* FROM??(SELECT??ROWNUMrn , e.* FROM emp e )?
?WHERE rn BETWEEN 8 AND 10;
使用子查詢和ROWNUM進行分頁
分頁操作需要有一個作為分頁標準的數(shù)據(jù)裸影,該數(shù)據(jù)線進行排序,排序的結(jié)果作為視圖被父查詢用偽列標識順序數(shù)字军熏,然后在最外面的爺爺查詢對偽列進行分頁轩猩。
如:
SELECT??* FROM
??(SELECT??ROWNUMrn , t.* FROM
(SELECT empno,ename,sal FROM emp
?????ORDER BY sal DESC)??t
??)?
?WHERE rn BETWEEN 8 AND 10;
DECODE函數(shù)
DECODE (expr, search1, result1[, search2, result2…][, default])
它用于比較參數(shù)expr的值,如果匹配到哪一個search條件,就返回對應的result結(jié)果均践,可以有多組search和result的對應關(guān)系晤锹,如果任何一個search條件都沒有匹配到,則返回最后default的值彤委。default參數(shù)是可選的鞭铆,如果沒有提供default參數(shù)值,當沒有匹配到時焦影,將返回NULL车遂。
SELECT ename, job, sal,
DECODE(job, 'MANAGER', sal * 1.2,
???????????????'ANALYST', sal * 1.1,
??????????????'SALESMAN', sal * 1.05,
sal) bonus
FROM emp;
SELECT deptno, dname, loc
FROM dept
ORDER BY
DECODE(dname, '研發(fā)部',1,'市場部',2,'銷售部',3), loc;
分組函數(shù)
ROW_NUMBER
ROW_NUMBER()
???OVER (PARTITION BY deptno ORDER BY empno)
根據(jù)deptno分組,在分組內(nèi)根據(jù)empno內(nèi)排序斯辰,比ROWNUM功能更強舶担。可以直接從結(jié)果集中取出子集
RANK
RANK() OVER( PARTITION BY col1 ORDER BY col2)
功能與上相同彬呻,不同在于存在并列衣陶,并列第二跳過第三直接第四的規(guī)則。
DENSE_RANK
如果有并列第二废岂,下一個排序?qū)⑹侨?/p>
高級分組函數(shù)
ROLLUP
如果對兩個字段rollup祖搓,那么第一個字段相同的值會當成一組,如果有分組函數(shù)求和湖苞,就會對第一字段所有的數(shù)據(jù)求和拯欧,單獨成行。此時第二字段值為空财骨「渥鳎可以用于統(tǒng)計年度銷售(工資)和。
CUBE
CUBE函數(shù)對字段進行排列統(tǒng)計隆箩,比如三個字段的CUBE運算该贾,將三個字段排列成6種情況具體需要使用的時候再參考百度。
GROUPING()
GROUPING只能在使用ROLLUP或CUBE的查詢中使用捌臊。當需要在返回空值的地方顯示某個值時杨蛋,GROUPING()就非常有用。案例情況復雜理澎,具體使用時再說逞力。
集合操作
UNION、UNION ALL糠爬、INTERSECT寇荧、MINUS
Union表示取多次SELECT結(jié)果的并集,如果去掉重復的數(shù)據(jù)执隧。
Union All與union功能一樣揩抡,只是它不會去掉重復的數(shù)據(jù)户侥,會全部顯示。
Intersect表示相交峦嗤,多次查詢后去相同的數(shù)據(jù)蕊唐,即同時滿足兩個查詢條件的數(shù)據(jù)
Minus表示差集,即將第一個結(jié)果集中的數(shù)據(jù)烁设,減去第二個結(jié)果集的數(shù)據(jù)刃泌。即滿足第一個查詢條件,而不滿足第二查詢條件的數(shù)據(jù)署尤。
Data Control Language(DCL):
用于執(zhí)行權(quán)限的授予和收回操作、創(chuàng)建用戶等亚侠,包括授予(GRANT)語句曹体,收回(REVOKE)語句,CREATE USER語句硝烂,其中GRANT用于給用戶或角色授予權(quán)限箕别,REVOKE用于收回用戶或角色已有的權(quán)限。DCL語句也不需要事務的參與滞谢,是自動提交的串稀。
GRANT CREATE VIEW TO tarena;
3.視圖、索引狮杨、序列母截、約束
視圖
視圖本質(zhì)上是一條SELECT語句,當SELECT子查詢在from子句中橄教,可以把SELECT子句的結(jié)果當作一個視圖清寇。視圖本身只是基表的映射,只是把基表中的數(shù)據(jù)顯示出來护蝶,可以把視圖當成表看待华烟,所有操作都與表操作極其相似。
視圖有三種持灰,簡單視圖不包括函數(shù)盔夜,復雜視圖包含了分組函數(shù)等附加的內(nèi)容,連接視圖是基于多個表的堤魁。
視圖的優(yōu)劣點:
如果需要經(jīng)常執(zhí)行某項復雜查詢喂链,可以基于這個復雜查詢建立視圖,此后查詢此視圖即可姨涡,簡化復雜查詢衩藤;視圖本質(zhì)上就是一條SELECT語句,所以當訪問視圖時涛漂,只能訪問到所對應的SELECT語句中涉及到的列赏表,對基表中的其它列起到安全和保密的作用检诗,可以限制數(shù)據(jù)訪問。
同時因為視圖本質(zhì)是基表的數(shù)據(jù)瓢剿,所以對視圖的操作會影響到基表從而不安全逢慌。這里可以使用WITH READ ONLY來限制對視圖的DML語言。
CREATE OR REPLACE VIEW v_emp_10
AS
SELECT empno, ename, sal, deptno FROM emp
WHERE deptno = 10
WITH READ ONLY;
使用DCL語句可以授權(quán)用戶創(chuàng)建視圖的權(quán)限间狂,
GRANT CREATE VIEW??TO tarena;
創(chuàng)建簡單視圖
CREATE VIEW v_emp_10
AS
SELECT empno, ename, sal, deptno
FROM emp
WHERE deptno = 10;
查詢視圖
SELECT id, name, salary FROM v_emp_10;
對視圖的DML操作
簡單視圖可以進行DML操作攻泼,但是操作的對象必須是基表里視圖包含的字段,即對視圖可見鉴象。而且簡單視圖的DML操作會對影響基表數(shù)據(jù)忙菠。
WITH CHECK OPTION短語表示,通過視圖所做的修改纺弊,必須在視圖的可見范圍內(nèi)牛欢,無論是INSERT UPDATE DELETE操作都必須在視圖范圍內(nèi),超過視圖范圍不可用淆游。
CREATE [OR REPLACE] VIEW view_name[(alias[, alias…])]
AS subquery
[WITH CHECK OPTION];
刪除視圖
DROP VIEW v_emp_10;
對視圖的刪除不會導致基表數(shù)據(jù)的丟失傍睹,不會影響基表數(shù)據(jù)。
序列
序列(SEQUENCE)是一種用來生成唯一數(shù)字值的數(shù)據(jù)庫對象犹菱。序列的值由Oracle程序按遞增或遞減順序自動生成拾稳,通常用來自動產(chǎn)生表的主鍵值,是一種高效率獲得唯一鍵值的途徑腊脱。
序列是獨立的數(shù)據(jù)庫對象访得,和表是獨立的對象,序列并不依附于表虑椎。
通常情況下震鹉,一個序列為一個表提供主鍵值,但一個序列也可以為多個表提供主鍵值捆姜。
CREATE SEQUENCE [schema.]sequence_name
????[ START WITH i ] [ INCREMENT BY j ]
????[ MAXVALUE m | NOMAXVALUE ]
????[ MINVALUE n | NOMINVALUE ]
[ CYCLE | NOCYCLE ][ CACHE p | NOCACHE ]
創(chuàng)建一個序列传趾,起始數(shù)據(jù)是100,步進是10:
CREATE SEQUENCE emp_seq
????START WITH 100
????INCREMENT BY 10;
NEXTVAL:獲取序列的下個值
CURRVAL:獲取序列的當前值
當序列創(chuàng)建以后泥技,必須先執(zhí)行一次NEXTVAL浆兰,之后才能使用CURRVAL。
獲取序列的第一個值珊豹,并且使用序列值為EMP表插入新的記錄:
刪除序列
DROP SEQUENCE emp_seq;
索引
創(chuàng)建索引
CREATE [UNIQUE] INDEX index_name
????????ON table(column[, column…]);
index_name表示索引名稱
table表示表名
column表示列名簸呈,可以建立單列索引或復合索引
UNIQUE表示唯一索引
CREATE INDEX idx_emp_job_sal ON emp(job, sal);
可以增加函數(shù)
CREATE INDEX emp_ename_upper_idx
????ON emp(UPPER(ename));
重建索引,提高索引空間利用率
ALTER INDEX index_name REBUILD;
刪除索引
DROP INDEX idx_emp_ename;
為提升查詢效率店茶,創(chuàng)建和使用索引的原則:
1.為經(jīng)常出現(xiàn)在WHERE子句中的列創(chuàng)建索引
2.為經(jīng)常出現(xiàn)在ORDER BY蜕便、DISTINCT后面的字段建立索引。如果建立的是復合索引贩幻,索引的字段順序要和這些關(guān)鍵字后面的字段順序一致
3.為經(jīng)常作為表的連接條件的列上創(chuàng)建索引
4.不要在經(jīng)常做DML操作的表上建立索引
5.不要在小表上建立索引
6.限制表上的索引數(shù)目轿腺,索引并不是越多越好
7.刪除很少被使用的两嘴、不合理的索引
約束
CONSTRAINT
非空約束(Not Null),簡稱NN
創(chuàng)建表時添加約束
CONSTRAINT employees_hiredate_nn NOT NULL
修改表時增加非空約束
ALTER TABLE employees
MODIFY (eid NUMBER(6) NOT NULL);
修改表時取消非空約束
ALTER TABLE employees
MODIFY (eid NUMBER(6));
唯一性約束(Unique)族壳,簡稱UK
CONSTRAINT employees_email_uk UNIQUE(email)
ALTER TABLE employees
ADD CONSTRAINT employees_name_uk UNIQUE(name);
主鍵約束(Primary Key)憔辫,簡稱PK
在主鍵約束下的單字段或者多字段組合上不允許有空值,也不允許有重復值仿荆。
主鍵應是對系統(tǒng)無意義的數(shù)據(jù)
永遠也不要更新主鍵贰您,讓主鍵除了唯一標識一行之外,再無其他的用途
主鍵不應包含動態(tài)變化的數(shù)據(jù)拢操,如時間戳
主鍵應自動生成锦亦,不要人為干預,以免使它帶有除了唯一標識一行以外的意義
主鍵盡量建立在單列上
ALTER TABLE employees3
ADD CONSTRAINT
?????????employees3_eid_pk PRIMARY KEY (eid);
外鍵約束(Foreign Key)令境,簡稱FK
ALTER TABLE employees4
ADD CONSTRAINT employees4_deptno_fk
FOREIGN KEY (deptno) REFERENCES dept(deptno);
檢查約束(Check)孽亲,簡稱CK
檢查(Check)約束條件用來強制在字段上的每個值都要滿足Check中定義的條件。當定義了Check約束的列新增或修改數(shù)據(jù)時展父,數(shù)據(jù)必須符合Check約束中定義的條件。
ALTER TABLE employees4
ADD CONSTRAINT employees4_salary_check
CHECK (salary > 2000);
其他
DEFAULT指定字段默認值
NOT NULL?指定字段值非空玲昧,相當于非空約束
來源于csdn:open_sesame