第一章 系統設計相關原理
1.2 SQL 語句介紹
SQL 全稱是“結構化查詢語言(Structured Query Language)",最早 的是 IBM 的聖約瑟研究實驗室爲其關聯資料庫管理系統 SYSTEM R 開發的一 種查詢語言,它的前身是 SQUARE 語言。SQL 語言結構簡潔,功能強大,簡 單易學,所以自從 IBM 公司 1981 年推出以來,SQL 語言,得到了廣泛的應 用。如今無論是像 Oracle ,Sybase,Informix,SQL server 這些大型的資料 庫管理系統,還是像 Visual Foxporo,PowerBuilder 這些微機上常用的資 料庫開發系統,都支援 SQL 語言作爲查詢語言。
Structured Query Language 包含 4 個部分:
☆資料查詢語言 DQL-Data Query Language SELECT
☆據操縱語言 DQL-Data Manipulation Language INSERT, UPDATE, DELETE
☆資料定義語言 DQL-Data Definition Language CREATE, ALTER, DROP
☆資料控制語言 DQL-Data Control Language COMMIT WORK, ROLLBACK WORK
☆查詢資料
☆在表中插入、修改和刪除記錄
☆建立、修改和刪除資料物件
☆控制對資料和資料物件的存取
☆保證資料庫一致性和完整性
以前的資料庫管理系統爲上述各類操作提供單獨的語言,而 SQL 將全部任務統一在一種語言中。
3.是所有關聯資料庫的公共語言
由於所有主要的關聯資料庫管理系統都支援SQL語言,用戶可將使用 SQL的技能從一個RDBMS轉到另一個。所有用SQL編寫的程式都是可以移植 的。SQL是PostgreSQL(和大多數其他關係型數據庫)用做查詢語言的語言。
它是可以移植的,並且容易學習使用。但是所有SQL語句都必須由資料庫伺 服器獨立地執行。這就意味著用戶端應用必須把每條查詢發送到資料庫伺 服器,等待它處理這個查詢,接收結果,做一些運算,然後給伺服器發送 另外一條查詢。所有這些東西都會産生進程間通訊,並且如果用戶端在另 外一台機器上甚至還會導致網路開銷。如果使用了 PL/pgSQL,那麽可以把 一塊運算和一系列查詢在資料庫伺服器裏面組成一個塊,這樣就擁有了過 程語言的力量並且簡化SQL的使用,因而節約了大量的時間,因爲用不著付 出用戶端/伺服器通訊的過熱。通過使用PL/pgSQL,應用可以獲得可觀的性 能提升。
1.2.2 SQL 的使用
1.ASP 與 Access 資料庫連接:
<%@language=VBscript%>
<%
dimconn,mdbfile
mdbfile=server.mappath("資料庫名稱.mdb")
setconn=server.createobject("adodb.connection") conn.open"driver={microsoftaccessdriver
(*.mdb)};uid=admin;pwd=資料庫密碼;dbq="&mdbfile
%>
2.ASP 與 SQL 資料庫連接:
<%@language=VBscript%>
<%
dimconn
set conn=server.createobject("ADODB.connection") conn.open"PROVIDER=SQLOLEDB;DATA
SOURCE=SQL 伺服器名稱或 IP 地址;UID=sa;PWD=資料庫密 碼;DATABASE=資料庫名稱
%>
建立記錄集物件:
setrs=server.createobject("adodb.recordset") rs.openSQL 語句,conn,3,2
3.SQL 常用命令使用方法:
(1)資料記錄篩選:
sql="select*from 資料表 where 欄位名=欄位值 orderby 欄位 名[desc]"
sql="select*from 資料表 where 欄位名 like'%欄位值
%'orderby 欄位名[desc]"
sql="selecttop10*from 資料表 where 欄位名 orderby 欄位名 [desc]"
sql="select*from 資料表 where 欄位名 in('值 1','值 2',' 值 3')"
sql="select*from 資料表 where 欄位名 between 值 1and 值 2"
(2)更新資料記錄:
sql="update 資料表 set 欄位名=欄位值 where 條件運算式"
sql="update 資料表 set 欄位 1=值 1,欄位 2=值 2……欄位 n=
值 nwhere 條件運算式 (3)刪除資料記錄:
sql="deletefrom 資料表 where 條件運算式"
sql="deletefrom 資料表"(將資料表所有記錄刪除) (4)添加資料記錄:
sql="insertinto 資料表(欄位 1,欄位 2,欄位 3…)values(值 1,值 2,值 3…)"
sql="insertinto 目標資料表 select*from 源資料表"(把源資 料表的記錄添加到目標資料表)
sql="selectsum(欄位名)as 別名 from 資料表 where 條件運算 式"
setrs=conn.excute(sql)
用 rs("別名")獲取統的計值,其他函數運用同上。
(5)資料表的建立和刪除:
CREATETABLE 資料表名稱(欄位 1 類型 1(長度),欄位 2 類型 2(長度)……)
DROPTABLE 資料表名稱(永久性刪除一個資料表) 4.記錄集物件的方法:
rs.movenext 將記錄指標從當前的位置向下移一行 rs.moveprevious 將記錄指標從當前的位置向上移一行 rs.movefirst 將記錄指標移到資料表第一行
rs.movelast 將記錄指標移到資料表最後一行
rs.absoluteposition=N 將記錄指標移到資料表第 N 行 rs.absolutepage=N 將記錄指標移到第 N 頁的第一行 rs.pagesize=N 設置每頁爲 N 條記錄
rs.pagecount 根據 pagesize 的設置返回總頁數 rs.recordcount 返回記錄總數
rs.bof 返回記錄指標是否超出資料表首端,true 表示是,
false 爲否
rs.eof 返回記錄指標是否超出資料表末端,true 表示是,
false 爲否
rs.delete 刪除當前記錄,但記錄指標不會向下移動 rs.addnew 添加記錄到資料表末端
rs.update 更新資料表記錄