版權(quán)歸原作者所有,如有侵權(quán),請聯(lián)系我們

[科普中國]-SQL數(shù)據(jù)庫

科學(xué)百科
原創(chuàng)
科學(xué)百科為用戶提供權(quán)威科普內(nèi)容,打造知識科普陣地
收藏

SQL (Structured Query Language) 是具有數(shù)據(jù)操縱和數(shù)據(jù)定義等多種功能的數(shù)據(jù)庫語言,這種語言具有交互性特點,能為用戶提供極大的便利,數(shù)據(jù)庫管理系統(tǒng)應(yīng)充分利用SQL語言提高計算機應(yīng)用系統(tǒng)的工作質(zhì)量與效率。SQL語言不僅能獨立應(yīng)用于終端,還可以作為子語言為其他程序設(shè)計提供有效助力,該程序應(yīng)用中,SQL可與其他程序語言一起優(yōu)化程序功能,進(jìn)而為用戶提供更多更全面的信息。1

SQL Server數(shù)據(jù)庫包括Microsoft SQL Server以及Sybase SQL Server兩個子數(shù)據(jù)庫,該數(shù)據(jù)庫能否正常運行直接關(guān)系著整個計算機系統(tǒng)的運行安全。

簡介在大數(shù)據(jù)時代中,數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)類型與規(guī)模在不斷擴增,這給數(shù)據(jù)庫管理帶來了一定的挑戰(zhàn)。在社會生產(chǎn)生活中,對于數(shù)據(jù)庫的應(yīng)用范圍逐步增大,提升數(shù)據(jù)庫開發(fā)及應(yīng)用的效率,是保障我國社會生產(chǎn)生活高效運轉(zhuǎn)的關(guān)鍵。2

SQL作為一種操作命令集, 以其豐富的功能受到業(yè)內(nèi)人士的廣泛歡迎, 成為提升數(shù)據(jù)庫操作效率的保障。SQL Server數(shù)據(jù)庫的應(yīng)用,能夠有效提升數(shù)據(jù)請求與返回的速度,有效應(yīng)對復(fù)雜任務(wù)的處理,是提升工作效率的關(guān)鍵。

由于SQL Servers數(shù)據(jù)庫管理系統(tǒng)具有較高的數(shù)據(jù)管理性能,因其優(yōu)越的性能,應(yīng)用范圍非常廣,大量應(yīng)用于服務(wù)器和客戶體系結(jié)構(gòu)中。SQL Servers數(shù)據(jù)庫的性質(zhì)主要體現(xiàn)在以下幾個方面:系統(tǒng)的吞吐量、響應(yīng)時間以及并行處理能力, 發(fā)出請求服務(wù)器回應(yīng)的速度、還有不同屏幕之間切換的速度等等。3

優(yōu)點1)非過程化語言

2)統(tǒng)一的語言

3)是所有關(guān)系數(shù)據(jù)庫的公共語言

體系SQL數(shù)據(jù)庫的數(shù)據(jù)體系結(jié)構(gòu)基本上是三級結(jié)構(gòu),但使用術(shù)語與傳統(tǒng)關(guān)系模型術(shù)語不同。在SQL中,關(guān)系模式(模式)稱為“基本表”(base table);存儲模式(內(nèi)模式)稱為“存儲文件”(stored file);子模式(外模式)稱為“視圖”(view);元組稱為“行”(row);屬性稱為“列”(column)。

組成在正式學(xué)習(xí)SQL語言之前,首先讓我們對SQL語言有一個基本認(rèn)識,介紹一下SQL語言的組成:

1.一個SQL數(shù)據(jù)庫是表(Table)的集合,它由一個或多個SQL模式定義。

2.一個SQL表由行集構(gòu)成,一行是列的序列(集合),每列與行對應(yīng)一個數(shù)據(jù)項。

3.一個表或者是一個基本表或者是一個視圖。基本表是實際存儲在數(shù)據(jù)庫的表,而視圖是由若干基本表或其他視圖構(gòu)成的表的定義。

4.一個基本表可以跨一個或多個存儲文件,一個存儲文件也可存放一個或多個基本表。每個存儲文件與外部存儲上一個物理文件對應(yīng)。

5.用戶可以用SQL語句對視圖和基本表進(jìn)行查詢等操作。在用戶角度來看,視圖和基本表是一樣的,沒有區(qū)別,都是關(guān)系(表格)。

6.SQL用戶可以是應(yīng)用程序,也可以是終端用戶。SQL語句可嵌入在宿主語言的程序中使用,宿主語言有FORTRAN,COBOL,PASCAL,PL/I,C和Ada語言等。SQL用戶也能作為獨立的用戶接口,供交互環(huán)境下的終端用戶使用。

分類國內(nèi)外普遍采用SQL系統(tǒng)數(shù)據(jù)庫產(chǎn)品,可以說,作為集成網(wǎng)絡(luò)的數(shù)據(jù)庫系統(tǒng)必須采用這類產(chǎn)品。關(guān)于SQL數(shù)據(jù)庫產(chǎn)品種類較多,常用的有Oracle、Sybase、Informix等。

這些數(shù)據(jù)庫管理系統(tǒng)在世界上占據(jù)了絕大部分的數(shù)據(jù)庫市場,其中屬Oracle占有市場的份 額最大。Sybase是一種多媒體數(shù)據(jù)庫,由于其優(yōu)良的性能,使其處在上升期。目前國內(nèi)開 始使用Sybase的用戶越來越多,使用的范圍也越來越廣。在選擇數(shù)據(jù)庫時應(yīng)注意一個問 題,即必須與網(wǎng)絡(luò)操作系統(tǒng)相匹配,根據(jù)這些分布式數(shù)據(jù)庫的性能,在選用Netware網(wǎng)絡(luò) 操作系統(tǒng)時,一般應(yīng)使用Sybase或Oracle數(shù)據(jù)庫,若選用Windows NT Advanced Server 網(wǎng)絡(luò)操作系統(tǒng)時,應(yīng)選用微軟公司的產(chǎn)品MS SQL Server,因為微軟公司的這個數(shù)據(jù)庫其 核心就是Sybase,是一個分布式多媒體數(shù)據(jù)庫。這樣選擇數(shù)據(jù)庫,很容易建立起Client/ Server結(jié)構(gòu),使整個網(wǎng)絡(luò)數(shù)據(jù)的公布和利用更加合理。4

操作SQL包括了所有對數(shù)據(jù)庫的操作,主要是由4個部分組成:

1.數(shù)據(jù)定義:這一部分又稱為“SQL DDL”,定義數(shù)據(jù)庫的邏輯結(jié)構(gòu),包括定義數(shù)據(jù)庫、基本表、視圖和索引4部分。

2.數(shù)據(jù)操縱:這一部分又稱為“SQL DML”,其中包括數(shù)據(jù)查詢和數(shù)據(jù)更新兩大類操作,其中數(shù)據(jù)更新又包括插入、刪除和更新三種操作。

3.數(shù)據(jù)控制:對用戶訪問數(shù)據(jù)的控制有基本表和視圖的授權(quán)、完整性規(guī)則的描述,事務(wù)控制語句等。

4.嵌入式SQL語言的使用規(guī)定:規(guī)定SQL語句在宿主語言的程序中使用的規(guī)則。

下面我們將分別介紹:

數(shù)據(jù)定義SQL數(shù)據(jù)定義功能包括定義數(shù)據(jù)庫、基本表、索引和視圖。

首先,讓我們了解一下SQL所提供的基本數(shù)據(jù)類型:(如^00100009b^)

1.數(shù)據(jù)庫的建立與刪除

(1)建立數(shù)據(jù)庫:數(shù)據(jù)庫是一個包括了多個基本表的數(shù)據(jù)集,其語句格式為:

CREATE DATABASE 〔其它參數(shù)〕

其中,在系統(tǒng)中必須是唯一的,不能重復(fù),不然將導(dǎo)致數(shù)據(jù)存取失誤?!财渌鼌?shù)〕因具體數(shù)據(jù)庫實現(xiàn)系統(tǒng)不同而異。

例:要建立項目管理數(shù)據(jù)庫(xmmanage),其語句應(yīng)為:

CREATE DATABASE xmmanage

(2)數(shù)據(jù)庫的刪除:將數(shù)據(jù)庫及其全部內(nèi)容從系統(tǒng)中刪除。

其語句格式為:DROP DATABASE

例:刪除項目管理數(shù)據(jù)庫(xmmanage),其語句應(yīng)為: DROP DATABASE xmmanage

2.基本表的定義及變更

本身獨立存在的表稱為基本表,在SQL語言中一個關(guān)系唯一對應(yīng)一個基本表?;颈淼亩x指建立基本關(guān)系模式,而變更則是指對數(shù)據(jù)庫中已存在的基本表進(jìn)行刪除與修改。

數(shù)據(jù)查詢SQL是一種查詢功能很強的語言,只要是數(shù)據(jù)庫存在的數(shù)據(jù),總能通過適當(dāng)?shù)姆椒▽⑺鼜臄?shù)據(jù)庫中查找出來。SQL中的查詢語句只有一個:SELECT,它可與其它語句配合完成所有的查詢功能。SELECT語句的完整語法,可以有6個子句。完整的語法如下:
SELECT 目標(biāo)表的列名或列表達(dá)式集合
FROM 基本表或(和)視圖集合
〔WHERE條件表達(dá)式〕
〔GROUP BY列名集合
〔HAVING組條件表達(dá)式〕〕
〔ORDER BY列名〔集合〕…〕

簡單查詢,使用TOP子句

查詢結(jié)果排序order by

帶條件的查詢where,使用算術(shù)表達(dá)式,使用邏輯表達(dá)式,使用between關(guān)鍵字,使用in關(guān)鍵字,

模糊查詢like

整個語句的語義如下:從FROM子句中列出的表中,選擇滿足WHERE子句中給出的條件表達(dá)式的元組,然后按GROUPBY子句(分組子句)中指定列的值分組,再提取滿足HAVING子句中組條件表達(dá)式的那些組,按SELECT子句給出的列名或列表達(dá)式求值輸出。ORDER子句(排序子句)是對輸出的目標(biāo)表進(jìn)行重新排序,并可附加說明ASC(升序)或DESC(降序)排列。
在WHERE子句中的條件表達(dá)式F中可出現(xiàn)下列操作符和運算函數(shù):
算術(shù)比較運算符:=,=,。
邏輯運算符:AND,OR,NOT。
集合運算符:UNION(并),INTERSECT(交),EXCEPT(差)。
集合成員資格運算符:IN,NOT IN
謂詞:EXISTS(存在量詞),ALL,SOME,UNIQUE。
聚合函數(shù):AVG(平均值),MIN(最小值),MAX(最大值),SUM(和),COUNT(計數(shù))。
F中運算對象還可以是另一個SELECT語句,即SELECT語句可以嵌套。
上面只是列出了WHERE子句中可出現(xiàn)的幾種主要操作,由于WHERE子句中的條件表達(dá)式可以很復(fù)雜,因此SELECT句型能表達(dá)的語義遠(yuǎn)比其數(shù)學(xué)原形要復(fù)雜得多。
下面,我們以上面所建立的三個基本表為例,演示一下SELECT的應(yīng)用:
1.無條件查詢
例:找出所有學(xué)生的的選課情況
SELECT st_no,su_no
FROM score
例:找出所有學(xué)生的情況
SELECT*
FROM student
“*”為通配符,表示查找FROM中所指出關(guān)系的所有屬性的值。
2.條件查詢
條件查詢即帶有WHERE子句的查詢,所要查詢的對象必須滿足WHERE子句給出的條件。
例:找出任何一門課成績在70以上的學(xué)生情況、課號及分?jǐn)?shù)
SELECT UNIQUE student.st_class,student.st_no,student.st_name,student.st_sex,student.st_age,score.su_no,score.score
FROM student,score
WHERE score.score>=70 AND score.stno=student,st_no
這里使用UNIQUE是不從查詢結(jié)果集中去掉重復(fù)行,如果使用DISTINCT則會去掉重復(fù)行。另外邏輯運算符的優(yōu)先順序為NOT→AND→OR。
例:找出課程號為c02的,考試成績不及格的學(xué)生
SELECT st_no
FROM score
WHERE su_no=‘c02’AND score