?? sql數據庫完全手冊√五行網絡.htm
字號:
<P><STRONG>精妙SQL語句 </STRONG></P>
<P> <BR> 說明:復制表(只復制結構,源表名:a 新表名:b) </P>
<P>SQL: select * into b from a where 1<>1 </P>
<P>說明:拷貝表(拷貝數據,源表名:a 目標表名:b) </P>
<P>SQL: insert into b(a, b, c) select d,e,f from b; </P>
<P>說明:顯示文章、提交人和最后回復時間 </P>
<P>SQL: select a.title,a.username,b.adddate from table
a,(select max(adddate) adddate from table where
table.title=a.title) b </P>
<P>說明:外連接查詢(表名1:a 表名2:b) </P>
<P>SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT
JOIN b ON a.a = b.c </P>
<P>說明:日程安排提前五分鐘提醒 </P>
<P>SQL: select * from 日程安排 where
datediff('minute',f開始時間,getdate())>5 </P>
<P>說明:兩張關聯表,刪除主表中已經在副表中沒有的信息 </P>
<P>SQL: </P>
<P>delete from info where not exists ( select * from infobz
where info.infid=infobz.infid ) </P>
<P>說明:-- </P>
<P>SQL: </P>
<P>SELECT A.NUM, A.NAME, B.UPD_DATE, B.PREV_UPD_DATE </P>
<P>FROM TABLE1, </P>
<P>(SELECT X.NUM, X.UPD_DATE, Y.UPD_DATE PREV_UPD_DATE </P>
<P>FROM (SELECT NUM, UPD_DATE, INBOUND_QTY, STOCK_ONHAND </P>
<P>FROM TABLE2 </P>
<P>WHERE TO_CHAR(UPD_DATE,'YYYY/MM') = TO_CHAR(SYSDATE,
'YYYY/MM')) X, </P>
<P>(SELECT NUM, UPD_DATE, STOCK_ONHAND </P>
<P>FROM TABLE2 </P>
<P>WHERE TO_CHAR(UPD_DATE,'YYYY/MM') = </P>
<P>TO_CHAR(TO_DATE(TO_CHAR(SYSDATE, 'YYYY/MM') ¦¦
'/01','YYYY/MM/DD') - 1, 'YYYY/MM') ) Y, </P>
<P>WHERE X.NUM = Y.NUM (+) </P>
<P>AND X.INBOUND_QTY + NVL(Y.STOCK_ONHAND,0) <>
X.STOCK_ONHAND ) B </P>
<P>WHERE A.NUM = B.NUM </P>
<P>說明:-- </P>
<P>SQL: </P>
<P>select * from studentinfo where not exists(select * from
student where studentinfo.id=student.id) and
系名稱='"&strdepartmentname&"' and
專業名稱='"&strprofessionname&"' order by 性別,生源地,高考總成績
</P>
<P>說明: </P>
<P>從數據庫中去一年的各單位電話費統計(電話費定額賀電化肥清單兩個表來源) </P>
<P>SQL: </P>
<P>SELECT a.userper, a.tel, a.standfee, TO_CHAR(a.telfeedate,
'yyyy') AS telyear, </P>
<P>SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '01',
a.factration)) AS JAN, </P>
<P>SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '02',
a.factration)) AS FRI, </P>
<P>SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '03',
a.factration)) AS MAR, </P>
<P>SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '04',
a.factration)) AS APR, </P>
<P>SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '05',
a.factration)) AS MAY, </P>
<P>SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '06',
a.factration)) AS JUE, </P>
<P>SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '07',
a.factration)) AS JUL, </P>
<P>SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '08',
a.factration)) AS AGU, </P>
<P>SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '09',
a.factration)) AS SEP, </P>
<P>SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '10',
a.factration)) AS OCT, </P>
<P>SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '11',
a.factration)) AS NOV, </P>
<P>SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '12',
a.factration)) AS DEC </P>
<P>FROM (SELECT a.userper, a.tel, a.standfee, b.telfeedate,
b.factration </P>
<P>FROM TELFEESTAND a, TELFEE b </P>
<P>WHERE a.tel = b.telfax) a </P>
<P>GROUP BY a.userper, a.tel, a.standfee,
TO_CHAR(a.telfeedate, 'yyyy') </P>
<P>說明:四表聯查問題: </P>
<P>SQL: select * from a left inner join b on a.a=b.b right
inner join c on a.a=c.c inner join d on a.a=d.d where .....
</P>
<P>說明:得到表中最小的未使用的ID號 </P>
<P>SQL: </P>
<P>SELECT (CASE WHEN EXISTS(SELECT * FROM Handle b WHERE
b.HandleID = 1) THEN MIN(HandleID) + 1 ELSE 1 END) as HandleID
</P>
<P>FROM Handle </P>
<P>WHERE NOT HandleID IN (SELECT a.HandleID - 1 FROM Handle
a) <BR> </P>
<P><STRONG>SQL數據庫完全手冊</STRONG>_1 </P>
<P> <BR> <BR> SQL是Structured Quevy
Language(結構化查詢語言)的縮寫。SQL是專為數據庫而建立的操作命令集,是一種功能齊全的數據庫語言。在使用它時,只需要發出“做什么”的命令,“怎么做”是不用使用者考慮的。SQL功能強大、簡單易學、使用方便,已經成為了數據庫操作的基礎,并且現在幾乎所有的數據庫均支持SQL。<BR> ##1
二、SQL數據庫數據體系結構<BR>
SQL數據庫的數據體系結構基本上是三級結構,但使用術語與傳統關系模型術語不同。在SQL中,關系模式(模式)稱為“基本表”(base
table);存儲模式(內模式)稱為“存儲文件”(stored
file);子模式(外模式)稱為“視圖”(view);元組稱為“行”(row);屬性稱為“列”(column)。名稱對稱如^00100009a^:<BR> ##1
三、SQL語言的組成<BR>
在正式學習SQL語言之前,首先讓我們對SQL語言有一個基本認識,介紹一下SQL語言的組成:<BR>
1.一個SQL數據庫是表(Table)的集合,它由一個或多個SQL模式定義。<BR>
2.一個SQL表由行集構成,一行是列的序列(集合),每列與行對應一個數據項。<BR>
3.一個表或者是一個基本表或者是一個視圖。基本表是實際存儲在數據庫的表,而視圖是由若干基本表或其他視圖構成的表的定義。<BR>
4.一個基本表可以跨一個或多個存儲文件,一個存儲文件也可存放一個或多個基本表。每個存儲文件與外部存儲上一個物理文件對應。<BR>
5.用戶可以用SQL語句對視圖和基本表進行查詢等操作。在用戶角度來看,視圖和基本表是一樣的,沒有區別,都是關系(表格)。<BR>
6.SQL用戶可以是應用程序,也可以是終端用戶。SQL語句可嵌入在宿主語言的程序中使用,宿主語言有FORTRAN,COBOL,PASCAL,PL/I,C和Ada語言等。SQL用戶也能作為獨立的用戶接口,供交互環境下的終端用戶使用。<BR> ##1
四、對數據庫進行操作<BR>
SQL包括了所有對數據庫的操作,主要是由4個部分組成:<BR>
1.數據定義:這一部分又稱為“SQL
DDL”,定義數據庫的邏輯結構,包括定義數據庫、基本表、視圖和索引4部分。<BR>
2.數據操縱:這一部分又稱為“SQL
DML”,其中包括數據查詢和數據更新兩大類操作,其中數據更新又包括插入、刪除和更新三種操作。<BR>
3.數據控制:對用戶訪問數據的控制有基本表和視圖的授權、完整性規則的描述,事務控制語句等。<BR>
4.嵌入式SQL語言的使用規定:規定SQL語句在宿主語言的程序中使用的規則。<BR>
下面我們將分別介紹:<BR> ##2
(一)數據定義<BR>
SQL數據定義功能包括定義數據庫、基本表、索引和視圖。<BR>
首先,讓我們了解一下SQL所提供的基本數據類型:(如^00100009b^)<BR>
1.數據庫的建立與刪除<BR>
(1)建立數據庫:數據庫是一個包括了多個基本表的數據集,其語句格式為:<BR>
CREATE DATABASE <數據庫名>
[其它參數]<BR>
其中,<數據庫名>在系統中必須是唯一的,不能重復,不然將導致數據存取失誤。[其它參數]因具體數據庫實現系統不同而異。<BR>
例:要建立項目管理數據庫(xmmanage),其語句應為:<BR>
CREATE DATABASE
xmmanage<BR> (2)
數據庫的刪除:將數據庫及其全部內容從系統中刪除。<BR>
其語句格式為:DROP DATABASE
<數據庫名><BR>
例:刪除項目管理數據庫(xmmanage),其語句應為:<BR>
DROP DATABASE
xmmanage<BR>
2.基本表的定義及變更<BR>
本身獨立存在的表稱為基本表,在SQL語言中一個關系唯一對應一個基本表。基本表的定義指建立基本關系模式,而變更則是指對數據庫中已存在的基本表進行刪除與修改。<BR>
(1)基本表的定義:基本表是非導出關系,其定義涉及表名、列名及數據類型等,其語句格式為:<BR>
CREATE
TABLE[<數據庫名>.]<表名><BR>
(<列名> 數據類型 [缺省值] [NOT NULL
/ NULL]<BR> [,<列名>
數據類型 [缺省值] [NOT NULL /
NULL]]......<BR> [,UNIQUE
(列名[,列名]......)]<BR> [,PRIMARY
KEY(列名)]<BR> [,FOREIGN
KEY(列名[,列名]......)REFERENCE
<表名>(列名[,列名]......)]<BR>
[,CHECK(條件)] [其它參數])<BR>
其中,〈數據庫名〉.]指出將新建立的表存放于該數據庫中;<BR>
新建的表由兩部分組成:其一為表和一組列名,其二是實際存放的數據(即可在定義表的同時,直接存放數據到表中);<BR>
列名為用戶自定義的易于理解的名稱,列名中不能使用空格;<BR>
數據類型為上面所介紹的幾種標準數據類型;<BR> [NOT
NULL/NULL]指出該列是否允許存放空值,SQL語言支持空值的概念,所謂空值是“不知道”或“無意義”的值,值得注意的是數據“0”和空格都不是空值,系統一般默認允許為空值,所以當不允許為空值時,必須明確使用NOT
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -