?? sql數(shù)據(jù)庫完全手冊√五行網(wǎng)絡(luò).htm
字號:
NULL;<BR>
[,UNIQUE]將列按照其規(guī)定的順序進(jìn)行排列,如不指定排列順序,則按列的定義順序排列;<BR>
[PRIMARY
KEY]用于指定表的主鍵(即關(guān)系中的主屬性),實(shí)體完整性約束條件規(guī)定:主鍵必須是唯一的,非空的;<BR>
[,F(xiàn)OREIGN KEY (列名[,列名]......)
REFERENCE<表名>(列名[,列名]......)]是用于指定外鍵參照完整性約束條件,F(xiàn)OREIGN
KEY指定相關(guān)列為外鍵,其參照對象為另外一個(gè)表的指定列,即使用REFERENCE引入的外表中的列,當(dāng)不指定外表列名時(shí),系統(tǒng)將默認(rèn)其列名與參照鍵的列名相同,要注意的是:使用外鍵時(shí)必須使用參照,另外數(shù)據(jù)的外鍵參照完整性約束條件規(guī)定:外鍵的值要么與相對應(yīng)的主鍵相同,要么為空值(具體由實(shí)現(xiàn)系統(tǒng)不同而異)<BR>
[,CHECK]用于使用指定條件對存入表中的數(shù)據(jù)進(jìn)行檢查,以確定其合法性,提高數(shù)據(jù)的安全性。<BR>
例:要建立一個(gè)學(xué)生情況表(student)<BR> CREATE
TABLE student <A
href="file://創(chuàng)/">file://創(chuàng)/</A>建基本表student<BR>
(st_class CHAR(8),//
定義列st_class班級,數(shù)據(jù)類型為8位定長字符串<BR> st_no
CHAR(10) NOT
NULL,//定義列st_no學(xué)號,類型為10位定長字符串,非空<BR>
st_name CHAR(8) NOT
NULL,//定義列st_name姓名,類型為8位定長字符串,非空<BR>
st_sex
CHAR(2),//定義列st_sex性別,類型為2位定長字符串<BR>
st_age SMALLINT,//定義列st_age年齡,類型為短整型<BR>
PRIMARY KEY
(st_no))//定義st_no學(xué)號為主鍵。<BR>
例:要建立課程設(shè)置表(subject)<BR> CREATE
TABLE subject//創(chuàng)建基本表subject<BR>
(su_no CHAR(4) NOT NULL,//
定義列su_no課號,類型為4位定長字符串,非空<BR> su_subject
CHAR(20) NOT NULL,//
定義列su_subject課程名,類型為20位定長字符串,非空<BR>
su_credit INTEGER,//
定義列su_credit學(xué)分,類型為長整數(shù)<BR> su_period
INTEGER,//定義列su_period學(xué)時(shí),類型為長整數(shù)<BR>
su_preno
CHAR(4),//定義列su_preno先修課號,類型為4位定長字符串<BR>
PRIMARY
KEY(su_no))//定義su_no課號為主鍵。<BR>
例:要建立學(xué)生選課表(score)<BR> CREATE TABLE
score <A
href="file://創(chuàng)/">file://創(chuàng)/</A>建基本表score<BR>
(st_no
CHAR(10),//定義列st_no學(xué)號,類型為10位定長字符串<BR>
su_no
CHAR(4),//定義列su_no課號,類型為4位定長字符串<BR>
sc_score INTEGER
NULL,//定義列sc_score,類型為長整形,可以為空值<BR>
FOREIGN KEY (st_no) REFERENCE
student,//從表student中引入?yún)⒄胀怄Ist_no,以確保本表與表student的關(guān)聯(lián)與同步<BR>
FOREIGN KEY (suno) REFERENCE
subject)//從表subject中引入?yún)⒄胀怄Isu_no,以確保本表與表subject的關(guān)聯(lián)與同步<BR>
(2)基本表的刪除:用以從數(shù)據(jù)庫中刪除一個(gè)基本表及其全部內(nèi)容,其語句格式為:<BR>
DROP TABLE[<數(shù)據(jù)庫名>.]表名<BR>
例如:將上面建立的表都刪除<BR> DROP TABLE
student,subject,score<BR>
(3)基本表的修改:在基本表建立并使用一段時(shí)間后,可能需要根據(jù)實(shí)際要求對基本表的結(jié)構(gòu)進(jìn)行修改,即增加新的屬性或刪除屬性。<BR>
增加屬性的語句格式為:<BR> ALTER TABLE
[<數(shù)據(jù)庫名>.]表名 ADD<BR> (<列名> 數(shù)據(jù)類型
[缺省值] [NOT NULL / NULL]<BR>
[,<列名> 數(shù)據(jù)類型[缺省值][NOT NULL /
NULL]]......<BR> [,UNIQUE
(列名[,列名]......)]<BR> [,PRIMARY
KEY(列名)]<BR> [,F(xiàn)OREIGN
KEY(列名[,列名]......) REFERENCE
<表名>(列名[,列名]......)]<BR>
[,CHECK(條件)][其它參數(shù)])<BR>
例如:在基本表student中加入列stborn出生日期,數(shù)據(jù)類型為DATE,且不能為空值<BR>
ALTER TABLE student ADD (stborn
DATE NOT NULL)<BR>
刪除屬性的語句格式為:<BR> ALTER TABLE
[<數(shù)據(jù)庫名>.]表名 DROP<BR> (
<列名> 數(shù)據(jù)類型 [缺省值][NOT NULL /
NULL]<BR> [,<列名> 數(shù)據(jù)類型
[缺省值][NOT NULL / NULL]]......)<BR>
例如:將基本表student中的列st_age刪除<BR> ALTER
TABLE student DROP (st_age)<BR>
3.視圖定義與刪除<BR>
在SQL中,視圖是外模式一級數(shù)據(jù)結(jié)構(gòu)的基本單位。它是從一個(gè)或幾個(gè)基本表中導(dǎo)出的表,是從現(xiàn)有基本表中抽取若干子集組成用戶的“專用表”。這種構(gòu)造方式必須使用SQL中的SELECT語句來實(shí)現(xiàn)。在定義一個(gè)視圖時(shí),只是把其定義存放在系統(tǒng)的數(shù)據(jù)中,而并不直接存儲視圖對應(yīng)的數(shù)據(jù),直到用戶使用視圖時(shí)才去求得對應(yīng)的數(shù)據(jù)。<BR>
(1)視圖的定義:定義視圖可以使用CREATE
VIEW語句實(shí)現(xiàn),其語句格式為:<BR> CREATE
VIEW 視圖名 AS SELECT語句<BR>
從一個(gè)基本表中導(dǎo)出視圖:<BR>
例:從基本表student中導(dǎo)出只包括女學(xué)生情況的視圖<BR>
CREATE VIEW WOMANVIEW AS <A
href="file://創(chuàng)/">file://創(chuàng)/</A>建一個(gè)視圖WOMANVIEW<BR>
SELECT st_class,st_no,st_name,st_age <A
href="file://選/">file://選/</A>擇列st_class,st_no,st_name,st_age顯示<BR>
FROM student <A
href="file://從/">file://從/</A>基本表student引入<BR>
WHERE
st_sex=‘女’//引入條件為性別為“女”,注意字符變量都使用單引號引用<BR>
從多個(gè)基本表中導(dǎo)出視圖:<BR>
例如:從基本表student和score中導(dǎo)出只包括女學(xué)生且分?jǐn)?shù)在60分以上的視圖<BR>
CREATEVIEW WOMAN_SCORE AS <A
href="file://定/">file://定/</A>義視圖WOMANSCORE<BR>
SELECT
student.st_class,student.st_no,student.st_name,student.st_age,score.sc_score
<A
href="file://有/">file://有/</A>選擇性顯示相關(guān)列<BR>
FROM student.score <A
href="file://從/">file://從/</A>基本表student和score中引入<BR>
WHERE student.st_sex=‘女’AND
score.sc_score>=60 AND
student.st_no=score.st_no <A
href="file://選/">file://選/</A>擇條件:性別為“女”
且分?jǐn)?shù)在60分以上。并使用st_no將兩表聯(lián)系起來。<BR>
以后如果進(jìn)行這一視圖的應(yīng)用,則只需使用語句<BR> SELECT * FROM
WOMAN_SCORE <A
href="file://其/">file://其/</A>中“*”為通配符,代表所有元素<BR>
(2)視圖的刪除:用于刪除已不再使用的視圖,其語句格式如下:<BR>
DROP VIEW 視圖名<BR>
例:將上面建立的WOMAN_SCORE視圖刪除<BR> DROP
VIEW WOMAN_SCORE<BR>
4.索引的定義與刪除<BR>
索引屬于物理存儲概念,而不是邏輯的概念。在SQL中拋棄了索引概念,直接使用主鍵概念。值得一提的是,有些關(guān)系DBMS同時(shí)包括索引機(jī)制和主鍵機(jī)制,這里我們推薦使用主鍵機(jī)制,因?yàn)樗鼘ο到y(tǒng)資源占用較低且效率較高。<BR>
(1)索引的定義:索引是建立在基本表之上的,其語句格式為:<BR> CREATE
[UNIQUE] INDEX 索引名 ON<BR>
[<數(shù)據(jù)庫名>.]表名(列名 [ASC/DESC][,列名
[ASC/DESC]]......)<BR>
這里,保留字UNIQUE表示基本表中的索引值不允許重復(fù),若缺省則表示索引值在表中允許重復(fù);DESC表示按索引鍵降序排列,若缺省或ASC表示升序排列。<BR>
例:對基本表student中的st_no和st_age建立索引,分別為升序與降序,且索引值不允許重復(fù)<BR>
CREATE UNIQUE INDEX STINDEX
ON//創(chuàng)建索引STINDEX<BR> student(st_no
ASC,st_age
DESC)//對student中的st_no和st_age建立索引<BR>
(2)索引的刪除:<BR> DROP INDEX
索引名<BR>
例:刪除上面建立的索引STINDEX<BR> DROP
INDEX STINDEX<BR> ##2
(二)數(shù)據(jù)查詢<BR>
SQL是一種查詢功能很強(qiáng)的語言,只要是數(shù)據(jù)庫存在的數(shù)據(jù),總能通過適當(dāng)?shù)姆椒▽⑺鼜臄?shù)據(jù)庫中查找出來。SQL中的查詢語句只有一個(gè):SELECT,它可與其它語句配合完成所有的查詢功能。SELECT語句的完整語法,可以有6個(gè)子句。完整的語法如下:<BR>
SELECT 目標(biāo)表的列名或列表達(dá)式集合<BR> FROM
基本表或(和)視圖集合<BR> [WHERE條件表達(dá)式]<BR>
[GROUP BY列名集合<BR>
[HAVING組條件表達(dá)式]]<BR> [ORDER
BY列名[集合]…]<BR>
整個(gè)語句的語義如下:從FROM子句中列出的表中,選擇滿足WHERE子句中給出的條件表達(dá)式的元組,然后按GROUPBY子句(分組子句)中指定列的值分組,再提取滿足HAVING子句中組條件表達(dá)式的那些組,按SELECT子句給出的列名或列表達(dá)式求值輸出。ORDER子句(排序子句)是對輸出的目標(biāo)表進(jìn)行重新排序,并可附加說明ASC(升序)或DESC(降序)排列。
<BR> <BR> </P>
<P><STRONG>SQL數(shù)據(jù)庫完全手冊</STRONG>_2 <BR> <BR>
<BR> 在WHERE子句中的條件表達(dá)式F中可出現(xiàn)下列操作符和運(yùn)算函數(shù):<BR>
算術(shù)比較運(yùn)算符:<,<=,>,>=,=,<>。<BR>
邏輯運(yùn)算符:AND,OR,NOT。<BR>
集合運(yùn)算符:UNION(并),INTERSECT(交),EXCEPT(差)。<BR>
集合成員資格運(yùn)算符:IN,NOT IN<BR>
謂詞:EXISTS(存在量詞),ALL,SOME,UNIQUE。<BR>
聚合函數(shù):AVG(平均值),MIN(最小值),MAX(最大值),SUM(和),COUNT(計(jì)數(shù))。<BR>
F中運(yùn)算對象還可以是另一個(gè)SELECT語句,即SELECT語句可以嵌套。<BR>
上面只是列出了WHERE子句中可出現(xiàn)的幾種主要操作,由于WHERE子句中的條件表達(dá)式可以很復(fù)雜,因此SELECT句型能表達(dá)的語義遠(yuǎn)比其數(shù)學(xué)原形要復(fù)雜得多。<BR>
下面,我們以上面所建立的三個(gè)基本表為例,演示一下SELECT的應(yīng)用:<BR>
1.無條件查詢<BR>
例:找出所有學(xué)生的的選課情況<BR> SELECT
st_no,su_no<BR> FROM
score<BR>
例:找出所有學(xué)生的情況<BR>
SELECT*<BR> FROM
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -