天天看點

說SQL

     先說說什麼叫SQL?大家反正都覺得這SQL和資料庫有關,其實也不是這樣的。SQL是一種結構化資料庫查詢語言,其發音為“sequel”或“S-Q-L”。盡管MICROSOFT以其特有的方式加入了所有權聲明,但它在大多資料庫應用中近乎成為一種标準。簡言之,它是一種使用你選擇的标準從資料庫記錄中選擇某些記錄的方法。

       因為它的重要是以我将會花一定的時間來講它,前面的東西大家不說可能用這就會了,但這個一定要仔細的說。先回答大家一個疑問,學了SQL有什麼用呢?現在常用的資料庫軟體是ms-sql,一般的伺服器上都由它提供資料庫服務,但喲于具有管理權限的帳号SA的預設密碼是空的,且低版本的SQL由漏洞能直接獲得密碼。是以它也成為入侵的一種捷徑(如果由漏洞的話)。介紹個軟體MS-SOL Brower(SQL遠端入侵軟體),以後會由用的。在使用它時,隻需要發出“做什麼”的 指令,“怎麼做”是不用使用者考慮的。

SQL資料庫資料體系結構

       SQL資料庫的資料體系結構基本上是三級結構,但使用術語與傳統關系模型術語不同。在SQL中,關系模式(模式)稱為“基本表”(base table);存儲模式(内模式)稱為“存儲檔案”(stored file);子模式(外模式)稱為“視圖”(view);元組稱為“行”(row);屬性稱為“列”(column)。名稱對稱如^00100009a^:

SQL語言的組成

在正式學習SQL語言之前,首先讓我們對SQL語言有一個基本認識,介紹一下SQL語言的組成: 

1.一個SQL資料庫是表(Table)的集合,它由一個或多個SQL模式定義。 

2.一個SQL表由行集構成,一行是列的序列(集合),每列與行對應一個資料項。 

3.一個表或者是一個基本表或者是一個視圖。基本表是實際存儲在資料庫的表,而視圖是由若幹基本表或其他視圖構成的表的定義。 

4.一個基本表可以跨一個或多個存儲檔案,一個存儲檔案也可存放一個或多個基本表。每個存儲檔案與外部存儲上一個實體檔案對應。 

5.使用者可以用SQL語句對視圖和基本表進行查詢等操作。在使用者角度來看,視圖和基本表是一樣的,沒有差別,都是關系(表格)。 

6.SQL使用者可以是應用程式,也可以是終端使用者。SQL語句可嵌入在宿主語言的程式中使用,宿主語言有FORTRAN,COBOL,PASCAL,PL/I,C和Ada語言等。SQL使用者也能作為獨立的使用者接口,供互動環境下的終端使用者使用。 

(這個内容好像很難懂,大家如果實在不行,了解就行了)

對資料庫進行操作

SQL包括了所有對資料庫的操作,主要是由4個部分組成: 

1.資料定義:這一部分又稱為“SQL DDL”,定義資料庫的邏輯結構,包括定義資料 

庫、基本表、視圖和索引4部分。 

2.資料操縱:這一部分又稱為“SQL DML”,其中包括資料查詢和資料更新兩大類操 

作,其中資料更新又包括插入、删除和更新三種操作。 

3.資料控制:對使用者通路資料的控制有基本表和視圖的授權、完整性規則的描述,事務控制語句等。 

4.嵌入式SQL語言的使用規定:規定SQL語句在宿主語言的程式中使用的規則

下面我們就 簡單介紹一下資料定義

SQL資料定義功能包括定義資料庫、基本表、索引和視圖。 

首先,讓我們了解一下SQL所提供的基本資料類型:(如^00100009b^) 

1.資料庫的建立與删除 

(1)建立資料庫:資料庫是一個包括了多個基本表的資料集,其語句格式為: 

CREATE DATABASE <資料庫名> [其它參數]其中,<資料庫名>在系統中必須是唯一的,不能重複,不然将導緻資料存取失誤。[其它參數]因具體資料庫實作系統不同而異。 

例:要建立項目管理資料庫(xmmanage),其語句應為: 

CREATE DATABASE xmmanage 

(2) 資料庫的删除:将資料庫及其全部内容從系統中删除。 

其語句格式為:DROP DATABASE <資料庫名> 

例:删除項目管理資料庫(xmmanage),其語句應為: 

DROP DATABASE xmmanage 

2.基本表的定義及變更 

本身獨立存在的表稱為基本表,在SQL語言中一個關系唯一對應一個基本表。基本表的定義指建立基本關系模式,而變更則是指對資料庫中已存在的基本表進行删除與修改。 

(1)基本表的定義:基本表是非導出關系,其定義涉及表名、列名及資料類型等,其語句格式為: 

CREATE TABLE[<資料庫名>.]<表名> 

(<列名> 資料類型 [預設值] [NOT NULL / NULL] 

[,<列名> 資料類型 [預設值] [NOT NULL / NULL]]...... 

[,UNIQUE (列名[,列名]......)] 

[,PRIMARY KEY(列名)] 

[,FOREIGN KEY(列名[,列名]......)REFERENCE <表名>(列名[,列名] 

......)] 

[,CHECK(條件)] [其它參數]) 

其中,〈資料庫名〉.]指出将建立立的表存放于該資料庫中; 

建立的表由兩部分組成:其一為表和一組列名,其二是實際存放的資料(即可在定義表的同時,直接存放資料到表中);列名為使用者自定義的易于了解的名稱,列名中不能使用空格;資料類型為上面所介紹的幾種标準資料類型; 

[NOT NULL/NULL]指出該列是否允許存放空值,SQL語言支援空值的概念,所謂空值是“不知道”或“無意義”的值,值得注意的是資料“0”和空格都不是空值,系統一般預設允許為空值,是以當不允許為空值時,必須明确使用NOT NULL;[,UNIQUE]将列按照其規定的順序進行排列,如不指定排列順序,則按列的定義順序排列;[PRIMARY KEY]用于指定表的主鍵(即關系中的主屬性),實體完整性限制條件規定:主鍵必須是唯一的,非空的; 

[,FOREIGN KEY (列名[,列名]......) REFERENCE<表名>(列名[,列名]......)]是用于指定外鍵參照完整性限制條件,FOREIGN KEY指定相關列為外鍵,其參照對象為另外一個表的指定列,即使用REFERENCE引入的外表中的列,當不指定外表列名時,系統将預設其列名與參照鍵的列名相同,要注意的是:使用外鍵時必須使用參照,另外資料的外鍵參照完整性限制條件規定:外鍵的值要麼與相對應的主鍵相同,要麼為空值(具體由實作系統不同而異) [,CHECK]用于使用指定條件對存入表中的資料進行檢查,以确定其合法性,提高資料的安全性。 

2)基本表的删除:用以從資料庫中删除一個基本表及其全部内容,其語句格式為:DROP TABLE[<資料庫名>.]表名 

(3)基本表的修改:在基本表建立并使用一段時間後,可能需要根據實際要求對基本表的結構進行修改,即增加新的屬性或删除屬性。 

增加屬性的語句格式為: 

ALTER TABLE [<資料庫名>.]表名 ADD 

[,<列名> 資料類型[預設值][NOT NULL / NULL]]...... 

[,FOREIGN KEY(列名[,列名]......) REFERENCE <表名>(列名[,列名]......)] 

[,CHECK(條件)][其它參數]) 

例如:在基本表student中加入列stborn出生日期,資料類型為DATE,且不能為空值ALTER TABLE student ADD (stborn DATE NOT NULL) 删除屬性的語句格式為:ALTER TABLE [<資料庫名>.]表名 DROP ( <列名> 資料類型 [預設值][NOT NULL / NULL][,<列名> 資料類型 [預設值][NOT NULL / NULL]]......) 

3.視圖定義與删除 

在SQL中,視圖是外模式一級資料結構的基本機關。它是從一個或幾個基本表中導出的表,是從現有基本表中抽取若幹子集組成使用者的“專用表”。這種構造方式必須使用SQL中的SELECT語句來實作。在定義一個視圖時,隻是把其定義存放在系統的資料中,而并不直接存儲視圖對應的資料,直到使用者使用視圖時才去求得對應的資料。

(1)視圖的定義:定義視圖可以使用CREATE VIEW語句實作,其語句格式為: 

CREATE VIEW 視圖名 AS SELECT語句

(2)視圖的删除:用于删除已不再使用的視圖,其語句格式如下: DROP VIEW 視圖名

資料控制

由于資料庫管理系統是一個多使用者系統,為了控制使用者對資料的存取權利,保持資料的共享及完全性,SQL語言提供了一系列的資料控制功能。其中,主要包括安全性控制、完整性控制、事務控制和并發控制。這個我就不詳細說明了,大家如果有興趣可以參閱相關書籍大概需要掌握的SQL基本類容就是這樣,因為裡面涉及到一些文法和語言,如果你沒有一點語言基礎的我想會很困難的,我隻能建議你去至少看看C語言。

本文轉自 zhouhaipeng 51CTO部落格,原文連結:http://blog.51cto.com/zhouhaipeng/102756,如需轉載請自行聯系原作者