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 |