日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

SQL 初級入門教程

 靜幻堂 2018-08-26
一個程序員的成長過程 2017-12-15 14:08:06

SQL 是用于訪問和處理數據庫的標準的計算機語言。

SQL 初級入門教程

在本教程中,您將學到如何使用 SQL 訪問和處理數據系統(tǒng)中的數據,這類數據庫包括:Oracle, Sybase, SQL Server, DB2, Access 等等。

SQL 簡介

什么是 SQL?

  • SQL 指結構化查詢語言

  • SQL 使我們有能力訪問數據庫

  • SQL 是一種 ANSI 的標準計算機語言

編者注:ANSI,美國國家標準化組織

SQL 能做什么?

  • SQL 面向數據庫執(zhí)行查詢

  • SQL 可從數據庫取回數據

  • SQL 可在數據庫中插入新的記錄

  • SQL 可更新數據庫中的數據

  • SQL 可從數據庫刪除記錄

  • SQL 可創(chuàng)建新數據庫

  • SQL 可在數據庫中創(chuàng)建新表

  • SQL 可在數據庫中創(chuàng)建存儲過程

  • SQL 可在數據庫中創(chuàng)建視圖

  • SQL 可以設置表、存儲過程和視圖的權限

SQL 是一種標準 - 但是...

SQL 是一門 ANSI 的標準計算機語言,用來訪問和操作數據庫系統(tǒng)。SQL 語句用于取回和更新數據庫中的數據。SQL 可與數據庫程序協同工作,比如 MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase 以及其他數據庫系統(tǒng)。

不幸地是,存在著很多不同版本的 SQL 語言,但是為了與 ANSI 標準相兼容,它們必須以相似的方式共同地來支持一些主要的關鍵詞(比如 SELECT、UPDATE、DELETE、INSERT、WHERE 等等)。

注釋:除了 SQL 標準之外,大部分 SQL 數據庫程序都擁有它們自己的私有擴展!

在您的網站中使用 SQL

要創(chuàng)建發(fā)布數據庫中數據的網站,您需要以下要素:

  • RDBMS 數據庫程序(比如 MS Access, SQL Server, MySQL)

  • 服務器端腳本語言(比如 PHP 或 ASP)

  • SQL

  • HTML / CSS

RDBMS

RDBMS 指的是關系型數據庫管理系統(tǒng)。

RDBMS 是 SQL 的基礎,同樣也是所有現代數據庫系統(tǒng)的基礎,比如 MS SQL Server, IBM DB2, Oracle, MySQL 以及 Microsoft Access。

RDBMS 中的數據存儲在被稱為表(tables)的數據庫對象中。

表是相關的數據項的集合,它由列和行組成。

SQL 語法

數據庫表

一個數據庫通常包含一個或多個表。每個表由一個名字標識(例如“客戶”或者“訂單”)。表包含帶有數據的記錄(行)。

下面的例子是一個名為 "Persons" 的表:

IdLastNameFirstNameAddressCity
1AdamsJohnOxford StreetLondon
2BushGeorgeFifth AvenueNew York
3CarterThomasChangan StreetBeijing

上面的表包含三條記錄(每一條對應一個人)和五個列(Id、姓、名、地址和城市)。

SQL 語句

您需要在數據庫上執(zhí)行的大部分工作都由 SQL 語句完成。

下面的語句從表中選取 LastName 列的數據:

SELECT LastName FROM Persons

結果集類似這樣:

LastName
Adams
Bush
Carter

在本教程中,我們將為您講解各種不同的 SQL 語句。

重要事項

一定要記住,SQL 對大小寫不敏感!

SQL 語句后面的分號?

某些數據庫系統(tǒng)要求在每條 SQL 命令的末端使用分號。在我們的教程中不使用分號。

分號是在數據庫系統(tǒng)中分隔每條 SQL 語句的標準方法,這樣就可以在對服務器的相同請求中執(zhí)行一條以上的語句。

如果您使用的是 MS Access 和 SQL Server 2000,則不必在每條 SQL 語句之后使用分號,不過某些數據庫軟件要求必須使用分號。

SQL DML 和 DDL

可以把 SQL 分為兩個部分:數據操作語言 (DML) 和 數據定義語言 (DDL)。

SQL (結構化查詢語言)是用于執(zhí)行查詢的語法。但是 SQL 語言也包含用于更新、插入和刪除記錄的語法。

查詢和更新指令構成了 SQL 的 DML 部分:

  • SELECT - 從數據庫表中獲取數據

  • UPDATE - 更新數據庫表中的數據

  • DELETE - 從數據庫表中刪除數據

  • INSERT INTO - 向數據庫表中插入數據

SQL 的數據定義語言 (DDL) 部分使我們有能力創(chuàng)建或刪除表格。我們也可以定義索引(鍵),規(guī)定表之間的鏈接,以及施加表間的約束。

SQL 中最重要的 DDL 語句:

  • CREATE DATABASE - 創(chuàng)建新數據庫

  • ALTER DATABASE - 修改數據庫

  • CREATE TABLE - 創(chuàng)建新表

  • ALTER TABLE - 變更(改變)數據庫表

  • DROP TABLE - 刪除表

  • CREATE INDEX - 創(chuàng)建索引(搜索鍵)

  • DROP INDEX - 刪除索引

SQL SELECT 語句

本章講解 SELECT 和 SELECT * 語句。

SQL SELECT 語句

SELECT 語句用于從表中選取數據。

結果被存儲在一個結果表中(稱為結果集)。

SQL SELECT 語法

SELECT 列名稱 FROM 表名稱

以及:

SELECT * FROM 表名稱

注釋:SQL 語句對大小寫不敏感。SELECT 等效于 select。

SQL SELECT 實例

如需獲取名為 "LastName" 和 "FirstName" 的列的內容(從名為 "Persons" 的數據庫表),請使用類似這樣的 SELECT 語句:

SELECT LastName,FirstName FROM Persons

"Persons" 表:

IdLastNameFirstNameAddressCity
1AdamsJohnOxford StreetLondon
2BushGeorgeFifth AvenueNew York
3CarterThomasChangan StreetBeijing

結果:

LastNameFirstName
AdamsJohn
BushGeorge
CarterThomas

SQL SELECT * 實例

現在我們希望從 "Persons" 表中選取所有的列。

請使用符號 * 取代列的名稱,就像這樣:

SELECT * FROM Persons

提示:星號(*)是選取所有列的快捷方式。

結果:

IdLastNameFirstNameAddressCity
1AdamsJohnOxford StreetLondon
2BushGeorgeFifth AvenueNew York
3CarterThomasChangan StreetBeijing

在結果集(result-set)中導航

由 SQL 查詢程序獲得的結果被存放在一個結果集中。大多數數據庫軟件系統(tǒng)都允許使用編程函數在結果集中進行導航,比如:Move-To-First-Record、Get-Record-Content、Move-To-Next-Record 等等。

SQL SELECT DISTINCT 語句

本章講解 SELECT DISTINCT 語句。

SQL SELECT DISTINCT 語句

在表中,可能會包含重復值。這并不成問題,不過,有時您也許希望僅僅列出不同(distinct)的值。

關鍵詞 DISTINCT 用于返回唯一不同的值。

語法:

SELECT DISTINCT 列名稱 FROM 表名稱

使用 DISTINCT 關鍵詞

如果要從 "Company" 列中選取所有的值,我們需要使用 SELECT 語句:

SELECT Company FROM Orders

"Orders"表:

CompanyOrderNumber
IBM3532
W3School2356
Apple4698
W3School6953

結果:

Company
IBM
W3School
Apple
W3School

請注意,在結果集中,W3School 被列出了兩次。

如需從 Company" 列中僅選取唯一不同的值,我們需要使用 SELECT DISTINCT 語句:

SELECT DISTINCT Company FROM Orders

結果:

Company
IBM
W3School
Apple

現在,在結果集中,"W3School" 僅被列出了一次。

SQL WHERE 子句

WHERE 子句用于規(guī)定選擇的標準。

WHERE 子句

如需有條件地從表中選取數據,可將 WHERE 子句添加到 SELECT 語句。

語法

SELECT 列名稱 FROM 表名稱 WHERE 列 運算符 值

下面的運算符可在 WHERE 子句中使用:

操作符描述
=等于
<>不等于
>大于
<小于
>=大于等于
<=小于等于
BETWEEN在某個范圍內
LIKE搜索某種模式

注釋:在某些版本的 SQL 中,操作符 <> 可以寫為 !=。

使用 WHERE 子句

如果只希望選取居住在城市 "Beijing" 中的人,我們需要向 SELECT 語句添加 WHERE 子句:

SELECT * FROM Persons WHERE City='Beijing'

"Persons" 表

LastNameFirstNameAddressCityYear
AdamsJohnOxford StreetLondon1970
BushGeorgeFifth AvenueNew York1975
CarterThomasChangan StreetBeijing1980
GatesBillXuanwumen 10Beijing1985

結果:

LastNameFirstNameAddressCityYear
CarterThomasChangan StreetBeijing1980
GatesBillXuanwumen 10Beijing1985

引號的使用

請注意,我們在例子中的條件值周圍使用的是單引號。

SQL 使用單引號來環(huán)繞文本值(大部分數據庫系統(tǒng)也接受雙引號)。如果是數值,請不要使用引號。

文本值:

這是正確的:SELECT * FROM Persons WHERE FirstName='Bush'這是錯誤的:SELECT * FROM Persons WHERE FirstName=Bush

數值:

這是正確的:SELECT * FROM Persons WHERE Year>1965這是錯誤的:SELECT * FROM Persons WHERE Year>'1965'

SQL AND & OR 運算符

AND 和 OR 運算符用于基于一個以上的條件對記錄進行過濾。

AND 和 OR 運算符

AND 和 OR 可在 WHERE 子語句中把兩個或多個條件結合起來。

如果第一個條件和第二個條件都成立,則 AND 運算符顯示一條記錄。

如果第一個條件和第二個條件中只要有一個成立,則 OR 運算符顯示一條記錄。

原始的表 (用在例子中的):

LastNameFirstNameAddressCity
AdamsJohnOxford StreetLondon
BushGeorgeFifth AvenueNew York
CarterThomasChangan StreetBeijing
CarterWilliamXuanwumen 10Beijing

AND 運算符實例

使用 AND 來顯示所有姓為 "Carter" 并且名為 "Thomas" 的人:

SELECT * FROM Persons WHERE FirstName='Thomas' AND LastName='Carter'

結果:

LastNameFirstNameAddressCity
CarterThomasChangan StreetBeijing

OR 運算符實例

使用 OR 來顯示所有姓為 "Carter" 或者名為 "Thomas" 的人:

SELECT * FROM Persons WHERE firstname='Thomas' OR lastname='Carter'

結果:

LastNameFirstNameAddressCity
CarterThomasChangan StreetBeijing
CarterWilliamXuanwumen 10Beijing

結合 AND 和 OR 運算符

我們也可以把 AND 和 OR 結合起來(使用圓括號來組成復雜的表達式):

SELECT * FROM Persons WHERE (FirstName='Thomas' OR FirstName='William')AND LastName='Carter'

結果:

LastNameFirstNameAddressCity
CarterThomasChangan StreetBeijing
CarterWilliamXuanwumen 10Beijing

SQL ORDER BY 子句

ORDER BY 語句用于對結果集進行排序。

ORDER BY 語句

ORDER BY 語句用于根據指定的列對結果集進行排序。

ORDER BY 語句默認按照升序對記錄進行排序。

如果您希望按照降序對記錄進行排序,可以使用 DESC 關鍵字。

原始的表 (用在例子中的):

Orders 表:

CompanyOrderNumber
IBM3532
W3School2356
Apple4698
W3School6953

實例 1

以字母順序顯示公司名稱:

SELECT Company, OrderNumber FROM Orders ORDER BY Company

結果:

CompanyOrderNumber
Apple4698
IBM3532
W3School6953
W3School2356

實例 2

以字母順序顯示公司名稱(Company),并以數字順序顯示順序號(OrderNumber):

SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber

結果:

CompanyOrderNumber
Apple4698
IBM3532
W3School2356
W3School6953

實例 3

以逆字母順序顯示公司名稱:

SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC

結果:

CompanyOrderNumber
W3School6953
W3School2356
IBM3532
Apple4698

實例 4

以逆字母順序顯示公司名稱,并以數字順序顯示順序號:

SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC

結果:

CompanyOrderNumber
W3School2356
W3School6953
IBM3532
Apple4698

注意:在以上的結果中有兩個相等的公司名稱 (W3School)。只有這一次,在第一列中有相同的值時,第二列是以升序排列的。如果第一列中有些值為 nulls 時,情況也是這樣的。

SQL INSERT INTO 語句

INSERT INTO 語句

INSERT INTO 語句用于向表格中插入新的行。

語法

INSERT INTO 表名稱 VALUES (值1, 值2,....)

我們也可以指定所要插入數據的列:

INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

插入新的行

"Persons" 表:

LastNameFirstNameAddressCity
CarterThomasChangan StreetBeijing

SQL 語句:

INSERT INTO Persons VALUES ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing')

結果:

LastNameFirstNameAddressCity
CarterThomasChangan StreetBeijing
GatesBillXuanwumen 10Beijing

在指定的列中插入數據

"Persons" 表:

LastNameFirstNameAddressCity
CarterThomasChangan StreetBeijing
GatesBillXuanwumen 10Beijing

SQL 語句:

INSERT INTO Persons (LastName, Address) VALUES ('Wilson', 'Champs-Elysees')

結果:

LastNameFirstNameAddressCity
CarterThomasChangan StreetBeijing
GatesBillXuanwumen 10Beijing
WilsonChamps-Elysees

SQL UPDATE 語句

Update 語句

Update 語句用于修改表中的數據。

語法:

UPDATE 表名稱 SET 列名稱 = 新值 WHERE 列名稱 = 某值

Person:

LastNameFirstNameAddressCity
GatesBillXuanwumen 10Beijing
WilsonChamps-Elysees

更新某一行中的一個列

我們?yōu)?lastname 是 "Wilson" 的人添加 firstname:

UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson'

結果:

LastNameFirstNameAddressCity
GatesBillXuanwumen 10Beijing
WilsonFredChamps-Elysees

更新某一行中的若干列

我們會修改地址(address),并添加城市名稱(city):

UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing'WHERE LastName = 'Wilson'

結果:

LastNameFirstNameAddressCity
GatesBillXuanwumen 10Beijing
WilsonFredZhongshan 23Nanjing

SQL DELETE 語句

DELETE 語句

DELETE 語句用于刪除表中的行。

語法

DELETE FROM 表名稱 WHERE 列名稱 = 值

Person:

LastNameFirstNameAddressCity
GatesBillXuanwumen 10Beijing
WilsonFredZhongshan 23Nanjing

刪除某行

"Fred Wilson" 會被刪除:

DELETE FROM Person WHERE LastName = 'Wilson'

結果:

LastNameFirstNameAddressCity
GatesBillXuanwumen 10Beijing

刪除所有行

可以在不刪除表的情況下刪除所有的行。這意味著表的結構、屬性和索引都是完整的:

DELETE FROM table_name

或者:

DELETE * FROM table_name

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多