標籤:

SQL速覽

一、簡介:

SQL 是用於訪問和處理資料庫的標準的計算機語言。它是一種結構化查詢語言,可以面向資料庫執行查詢,可從資料庫取回數據,可在資料庫中插入新的記錄,可更新資料庫中的數據,可從資料庫刪除記錄,可創建新資料庫,可在資料庫中創建新表,可在資料庫中創建存儲過程,可在資料庫中創建視圖,可以設置表、存儲過程和視圖的許可權。

SQL對大小寫不敏感,SQL分為數據操作語言(DML)和數據定義語言(DDL)。

DML(查詢和更新指令):SELECT,UPDATE,DELETE,INSERT INTO;

DDL(創建和刪除表格):CREAATE DATABASE,ALTER DATABASE,CREATE TABLE,ALTER TABLE,DROP TABLE,CREATE INDEX,DROP INDEX

二、SQL基礎

1、SELECT語句:

用於從表中選取數據。語法如下:

SELECT 列名稱 FROM 表名稱n

2、SELECT DISTINCT語句:

用於從表中選取數據,返回唯一不同的值。語法如下:

SELECT DISTINCT 列名稱 FROM 表名稱n

3、WHERE語句:

用於規定選擇的標準。語法如下:

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

常用運算符:

3、AND和OR運算符:

用於基於一個以上的條件對記錄進行過濾,都成立用AND,只要有一個成立用OR,語法如下:

SELECT * FROM Persons WHERE FirstName=Thomas AND LastName=Cartern

4、ORDER BY語句:

用於根據指定的列對結果集進行排序,默認升序排序,如果降序可用DESC關鍵字。語法如下:

SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumbern

5、INSERT INTO語句:

用於向表格中插入新的行,語法如下:

INSERT INTO 表名稱 VALUES(值1,值2...)nINSERT INTO table_name(列1,列2,...) VALUES(值1,值2,...)n

6、UPDATE語句:

用於修改表中的數據,語法如下:

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

7、DELETE語句:

用於刪除表中的行,語法如下:

DELETE FROM 表名稱 WHERE 列名稱=值n

三、SQL高級:

1、TOP子句:

用於規定要返回的記錄的數目。語法如下:

SQL SERVER語法:nSELECT TOP number|percent column_name(s) nFROM tabel_namenMYSQL語法:nSELECT column_name(s)nFROM table_namenLIMIT numbernOracle語法:nSELECT column_name(s)nFROM table_namenWHERE ROWNUM<=numbern

2、LIKE操作符:

用於在WHERE子句中搜索列中的指定模式,語法如下:

SELECT column_name(s)nFROM table_namenWHERE column_name LIKE patternn

3、SQL通配符:

在搜索資料庫中的數據時,可以使用通配符,但必須與LIKE運算符一起使用。常用通配符:

4、IN操作符:

允許在WHERE子句中規定多個值,語法如下:

SELECT column_name(s)nFROM table_namenWHERE column_name IN(value1,value2,...)n

5、BETWEEN...AND操作符:

選取介於兩個值之間的數據範圍,這些值可以使數值、文本或日期。語法如下:

SELECT column_name(s)nFROM table_namenWHERE column_namenBETWEEN value1 AND value2n

6、SQL Alias:

可以為列名稱和表名稱指定別名(Alias)。語法如下:

表的Alias:nSELECT column_name(s)nFROM table_namenAS alias_namen列的Alias:nSELECT column_name AS alias_namenFROM table_namen

7、SQL JOIN:

用於根據兩個或多個表中的列之間的關係,從這些表中查詢數據。以下為示例:

使用JOIN從兩個表中獲取數據:誰訂購了產品?並且他們訂購了什麼產品?nSELECT Person.LastName,Person.FirstName,Order.OrderNonFROM PersonsnINNER JOIN OrdersnON Person.Id_P=Orders.Id_PnORDER BY Persons.LastNamen

8、SQL INNER JOIN(內連接):

在表中存在至少一個匹配時,INNER JOIN 關鍵字返回行。語法如下:

SELECT column_name(s)nFROM table_name1nINNER JOIN table_name2 nON table_name1.column_name=table_name2.column_namen注釋:INNER JOIN 與 JOIN 是相同的n

9、SQL LEFT JOIN(左連接):

即使右表中沒有匹配,也從左表返回所有的行。語法如下:

SELECT column_name(s)nFROM table_name1nLEFT JOIN table_name2 nON table_name1.column_name=table_name2.column_namen

10、SQL RIGHT JOIN(右連接):

即使左表中沒有匹配,也從右表返回所有的行。語法如下:

SELECT column_name(s)nFROM table_name1nRIGHT JOIN table_name2 nON table_name1.column_name=table_name2.column_namen

11、FULL JOIN:

只要其中一個表中存在匹配,就返回行。語法如下:

SELECT column_name(s)nFROM table1nFULL OUTER JOIN table2nON table1.column_name=table2.column_name;n

12、SQL UNION和UNION ALL操作符:

UNION操作符用於合併兩個或多個SELECT語句的結果集。語法如下:

SQL UNION 語法:nSELECT column_name(s) FROM table_name1nUNIONnSELECT column_name(s) FROM table_name2n注釋:默認地,UNION 操作符選取不同的值。nSQL UNION ALL 語法:nSELECT column_name(s) FROM table_name1nUNION ALLnSELECT column_name(s) FROM table_name2n注釋:UNION ALL 命令會列出所有的值。n

13、SQL SELECT INTO 語句:

SQL SELECT INTO 語句從一個表中選取數據,然後把數據插入另一個表中,用於創建表的備份復件或用於對記錄進行存檔。語法如下:

您可以把所有的列插入新表:nSELECT *nINTO new_table_name [IN externaldatabase] nFROM old_tablenamen或者只把希望的列插入新表:nSELECT column_name(s)nINTO new_table_name [IN externaldatabase] nFROM old_tablenamen

14、SQL CREATE DATABASE 語句:

用於創建資料庫。語法如下:

CREATE DATABASE database_namen

15、SQL CREATE TABLE 語句:

用於創建資料庫中的表。語法如下:

CREATE TABLE 表名稱n(n列名稱1 數據類型,n列名稱2 數據類型,n列名稱3 數據類型,n....n)n

SQL中最常用的數據類型:

16、SQL 約束 (Constraints):

用於限制加入表的數據的類型,可以在創建表時規定約束(通過 CREATE TABLE 語句),或者在表創建之後也可以(通過 ALTER TABLE 語句)。

(1)SQL NOT NULL 約束:

強制列不接受NULL值,示例如下:

下面的 SQL 語句強制 "Id_P" 列和 "LastName" 列不接受 NULL 值:nCREATE TABLE Personsn(nId_P int NOT NULL,nLastName varchar(255) NOT NULL,nFirstName varchar(255),nAddress varchar(255),nCity varchar(255)n)n

(2)SQL UNIQUE 約束:

UNIQUE 約束唯一標識資料庫表中的每條記錄。示例如下:

下面的 SQL 在 "Persons" 表創建時在 "Id_P" 列創建 UNIQUE 約束:nSQL Server / Oracle / MS Access:nCREATE TABLE Personsn(nId_P int NOT NULL UNIQUE,nLastName varchar(255) NOT NULL,nFirstName varchar(255),nAddress varchar(255),nCity varchar(255)n)n

(3)SQL PRIMARY KEY 約束:

PRIMARY KEY 約束唯一標識資料庫表中的每條記錄,主鍵必須包含唯一的值,主鍵列不能包含 NULL 值。示例如下:

下面的 SQL 在 "Persons" 表創建時在 "Id_P" 列創建 PRIMARY KEY 約束:nSQL Server / Oracle / MS Access:nCREATE TABLE Personsn(nId_P int NOT NULL PRIMARY KEY,nLastName varchar(255) NOT NULL,nFirstName varchar(255),nAddress varchar(255),nCity varchar(255)n)n

(4)SQL FOREIGN KEY 約束:

一個表中的 FOREIGN KEY 指向另一個表中的 PRIMARY KEY。

(5)SQL CHECK 約束:

用於限制列中的值的範圍。

(6)SQL DEFAULT 約束:

用於向列中插入默認值,如果沒有規定其他的值,那麼會將默認值添加到所有的新記錄。

17、SQL CREATE INDEX 語句:

用於在表中創建索引。在不讀取整個表的情況下,索引使資料庫應用程序可以更快地查找數據。語法如下:

在表上創建一個簡單的索引。允許使用重複的值:nCREATE INDEX index_namenON table_name (column_name)n在表上創建一個唯一的索引。唯一的索引意味著兩個行不能擁有相同的索引值。nCREATE UNIQUE INDEX index_namenON table_name (column_name)n

18、SQL DROP語句:

通過使用 DROP 語句,可以輕鬆地刪除索引、表和資料庫。

(1)SQL DROP INDEX 語句:

用於 MS SQL Server 的語法:nDROP INDEX table_name.index_namen用於 IBM DB2 和 Oracle 語法:nDROP INDEX index_namen用於 MySQL 的語法:nALTER TABLE table_name DROP INDEX index_namen

(2)SQL DROP TABLE 語句:

DROP TABLE 表名稱n

(3)SQL DROP DATABASE 語句:

DROP DATABASE 資料庫名稱n

(4)SQL TRUNCATE TABLE 語句:

TRUNCATE TABLE 表名稱n

19、SQL ALTER TABLE 語句:

用於在已有的表中添加、修改或刪除列。用法如下:

如需在表中添加列,請使用下列語法:nALTER TABLE table_namenADD column_name datatypen要刪除表中的列,請使用下列語法:nALTER TABLE table_name nDROP COLUMN column_namen

20、SQL AUTO INCREMENT 欄位:

會在新記錄插入表中時生成一個唯一的數字。

21、SQL VIEW(視圖):

在 SQL 中,視圖是基於 SQL 語句的結果集的可視化的表。

(1)SQL CREATE VIEW 語法:

CREATE VIEW view_name ASnSELECT column_name(s)nFROM table_namenWHERE conditionn

(2)SQL 更新視圖語法:

SQL CREATE OR REPLACE VIEW SyntaxnCREATE OR REPLACE VIEW view_name ASnSELECT column_name(s)nFROM table_namenWHERE conditionn

(3)SQL 撤銷視圖語法:

SQL DROP VIEW SyntaxnDROP VIEW view_namen

22、SQL Date 函數:

當我們處理日期時,最難的任務恐怕是確保所插入的日期的格式,與資料庫中日期列的格式相匹配。

SQL Date 數據類型:

MySQL 使用下列數據類型在資料庫中存儲日期或日期/時間值:

  • DATE - 格式 YYYY-MM-DD
  • DATETIME - 格式: YYYY-MM-DD HH:MM:SS
  • TIMESTAMP - 格式: YYYY-MM-DD HH:MM:SS
  • YEAR - 格式 YYYY 或 YY

SQL Server 使用下列數據類型在資料庫中存儲日期或日期/時間值:

  • DATE - 格式 YYYY-MM-DD
  • DATETIME - 格式: YYYY-MM-DD HH:MM:SS
  • SMALLDATETIME - 格式: YYYY-MM-DD HH:MM:SS
  • TIMESTAMP - 格式: 唯一的數字

23、SQL NULL 值:

NULL 值是遺漏的未知數據。默認地,表的列可以存放 NULL 值。

24、SQL 數據類型:

(1)MySQL 數據類型:

在 MySQL 中,有三種主要的類型:文本、數字和日期/時間類型。

(2)SQL Server數據類型:

25、SQL 伺服器 :

現代的 SQL 伺服器構建在 RDBMS 之上。

DBMS - 資料庫管理系統,資料庫管理系統是一種可以訪問資料庫中數據的計算機程序。

關係資料庫管理系統 (RDBMS) 也是一種資料庫管理系統,其資料庫是根據數據間的關係來組織和訪問數據的。


推薦閱讀:

SQL默示錄(一)
win7如何安裝SQL資料庫2000?
SQL SERVER性能優化綜述
如何優雅地寫SQL?
為什麼用SQL而不是Excel+VBA?

TAG:SQL |