SQL 語法大全

SQL語法

例表:“Persons”表

LastName

FirstName

Address

City

Year

Adams

John

Oxford Street

London

1970

Bush

George

Fifth Avenue

New York

1995

Carter

Thomas

Changan Street

Beijing

1980

Gates

Bill

Xuanwumen 10

Beijing

1985

 







一:基礎篇

關鍵字

描述

例子

SELECT

SELECT 語句用於從表中選取數據。結果被存儲在一個結果表中(稱爲結果集)。

1.SELECT 列名 FROM 表名

2.SELECT * FROM 表名

 

DISTINCT

DISTINCT 用於返回唯一不同的值。

1.SELECT DISTINCT 列名 FROM 表名

WHERE 

如需有條件地從表中選取數據

1.SELECT 列名 FROM 表名 WHERE 列 運算符

2.查詢 住在Beijing的人

SELECT * FROM Persons WHERE City=’ Beijing’

AND和OR

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

AND:都爲真才爲真

OR:其中一個爲真才爲真

1.查詢 1985年住在Beijing的人

SELECT * FROM Persons WHERE City=’ Beijing’ AND Year = 1985

2.查詢住在London或者New York的人

SELECT * FROM Persons WHERE City=’ London’ OR City = ‘New York’

 

ORDER BY

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

1.以姓的字母順序進行排列

SELECT*FROM Persons ORDER BY  LastName

2.以Year 從大到小排序

SELECT*FROM Persons ORDER BY Year DESC

3.以Year 從小到大排序

SELECT*FROM Persons ORDER BY Year

INSERT INTO

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

1.將2017年有個姓Yuan 名Hong的住在ChongQing JieFangBei 記錄在數據庫

INSERT INTO Persons VALUES(‘Yuan’,’ Hong’,’ JieFangBei’,’ ChongQing’,2017)

Update

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

1.2017年YuanHong搬家到GuanYinQiao 修改數據

Update Persons SET Adderss=’ GuanYinQiao’ WHERE LastName=’ Yuan’ AND  FirstName=’ Hong’

DELETE

DELETE 語句用於刪除表中的行

1.將YuanHong對應的數據刪除掉。

DELETE FROM Persons WHERE

"Persons" 表:

Id_P

LastName

FirstName

Address

City

1

Adams

John

Oxford Street

London

2

Bush

George

Fifth Avenue

New York

3

Carter

Thomas

Changan Street

Beijing

 

"Orders" 表:

Id_O

OrderNo

Id_P

1

77895

3

2

44678

3

3

22456

1

4

24562

1

5

34764

65

 

二:高級教程

TOP

TOP 子句用於規定要返回的記錄的數目。

1.我們希望從表中取前兩條數據。

SELECT  TOP(2) * FROM Persons

我們希望從表中取百分之五十的記錄

SELECT  TOP 50 PERCENT * FROM Persons

LIKE

LIKE 操作符用於在 WHERE 子句中搜索列中的指定模式。

1.我們希望查找姓的首字母爲Y的人

SELECT * FROM Persons WHERE LastName LIKE ‘Y%’

2.我們希望查找姓的尾字母爲N的人

SELECT * FROM Persons WHERE LastName LIKE ‘%N’

3.我們希望查找姓中含有A的人

SELECT * FROM Persons WHERE LastName LIKE ‘%A%’

通配符

1.%: 替代一個或多個字符

2_:僅替代一個字符3[charlist]:字符列中的任何單一字符

4[!charlist]:不在字符列中的任何單一字符

1.我們希望查找姓的首字母爲Y的人

SELECT * FROM Persons WHERE LastName LIKE ‘Y%’

2.我們希望查找姓的尾字母爲N的人

SELECT * FROM Persons WHERE LastName LIKE ‘%N’

3.我們希望查找姓中含有A的人

SELECT * FROM Persons WHERE LastName LIKE ‘%A%’

4.我們希望選取一個人的姓的第一個字符之後是UAN的人

SELECT * FROM Persons WHERE LastName LIKE ‘_UAN’

5.我們希望選取居住城市 以‘A’或‘C’開頭的人

SELECT * FROM Persons WHERE City LIKE ‘[AC]%’

6.我們希望選取居住城市 不以‘A’或‘C’開頭的人

SELECT * FROM Persons WHERE City LIKE ‘[!AC]%’

 

 

IN

IN 操作符允許我們在 WHERE 子句中規定多個值。

1.我們希望選取姓氏爲Adams 和 Carter 的人

SELECT * FROM Persons WHERE LastName IN(‘Adams’,’ Carter’)

BETWEEN

操作符 BETWEEN ... AND 會選取介於兩個值之間的數據範圍。這些值可以是數值、文本或者日期。

1.選取以字母順序介於"Adams"(包括)和 "Carter"(不包括)之間的人

SELECT * FROM Persons WHERE LastName BETWEEN  ‘Adams’ AND ‘Carter’

Alias

Alias 可以爲列名稱或者表名稱指定別名

1.我們的表名是 Persons 我們可以把它取個別名(聯表查詢的時候常用)

SELECT*FROM Persons AS P WHERE P.LastName BETWEEN  ‘Adams’ AND ‘Carter’

INNER join

有時爲了得到完整的結果,我們需要從兩個或更多的表中獲取結果。我們就需要執行 join.通過join多張表的數據

1.現在有兩張表 Persons和Orders它們之間通過UserID進行關聯的 我們要將兩張表一起取出來

SELECT * FROM PersonsAS A INNER JOIN Persons AS B ON A.ID_P =B. ID_P ORDER BY  A. LastName

LEFT JOIN

LEFT JOIN 關鍵字會從左表 (table_name1) 那裏返回所有的行,即使在右表 (table_name2) 中沒有匹配的行。

1.現在有兩張表 Persons和Orders它們之間通過UserID進行關聯的 我們要將兩張表一起取出來

SELECT * FROM Persons AS A LEFT JOIN OrdersAS B ON A. ID_P =B. ID_P ORDER BY  A. LastName

RIGHT JOIN

RIGHT JOIN 關鍵字會右表 (table_name2) 那裏返回所有的行,即使在左表 (table_name1) 中沒有匹配的行。

1.現在有兩張表 Persons和Orders它們之間通過UserID進行關聯的 我們要將兩張表一起取出來

SELECT * FROM Persons AS A RIGHT JOIN OrdersAS B ON A. ID_P =B. ID_P ORDER BY  A. LastName

FULL JOIN

只要其中某個表存在匹配,FULL JOIN 關鍵字就會返回行。

1.現在有兩張表 Persons 和Orders它們之間通過UserID進行關聯的 我們要將兩張表一起取出來

SELECT * FROM Persons AS A FULL JOIN OrdersAS B ON A. ID_P =B. ID_P  ORDER BY  A. LastName

UNION

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

1.現在我們數據庫有兩張表class1和class2分別是某年級的兩個班的學生信息,假設該年級一共就這兩個班,我們要獲取該年級所有人的信息

SELECT Student FROM CLASS1

UNION

SELECT Student FROM CLASS2

SELECT INTO

SELECT INTO 語句從一個表中選取數據,然後把數據插入另一個表中。

1拷貝備份復件

SELECT * INTO PersonsBackup FROM Persons

2.向另一個數據庫中拷貝表

SELECT * INTO  Persons IN ‘Backup.mdb’ FROM Persons

3.我們希望只拷貝某些域

LastName

Adams’

SELECT LastName, Adams INTO  Persons INTO  PersonsBackup FROM Persons

4.我們在Persons表中提取居住在北京的人的信息,並創建一個帶兩個列的名是PersonsBackup的表

SELECT LastName, Firstname INTO  Persons INTO  PersonsBackup FROM Persons WHERE City=’BeiJing’

5.其中包含了從 Persons 和 Orders 兩個表中取得的信息

SELECT A.lastName,B.OrderNo

INTO PersonsBackup FROM Persons AS A INNER  JOIN  Orders AS B ON A.ID_P=B.ID_P

CREATE DATABASE

CREATE DATABASE 用於創建數據庫。

 Create database 數據庫名

CREATE TABLE

CREATE TABLE 語句用於創建數據庫中的表。

1.創建表 例表Orders

Create table Orders(

Id_O  INT,

OrderNo INT,

ID_P INT)

SQL 約束

NOT NULL  約束強制列不接受 NULL 值。

UNIQUE約束唯一標識數據庫表中的每條記錄。

PRIMARY KEY RIMARY KEY 約束唯一標識數據庫表中的每條記錄。

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

CHECK約束用於限制列中的值的範圍。

DEFAULTDEFAULT 約束用於向列中插入默認值。

1.創建表 例表Orders Id_O不能爲空

Create table Orders(

Id_O  INT NOT NUL ,

OrderNo INT,

ID_P INT)

2.創建表 例表Orders Id_O不能爲空 標記Id_P是在本表中只能存在唯一值

Create table Orders(

ID_O  INT NOT NUL ,

OrderNo INT,

Id_P INT ,

UNIQUE(ID_P))

3.創建表 例表Orders Id_O不能爲空 標記Id_P和 Id_O

Create table Orders(

Id_O  INT NOT NUL ,

OrderNo INT,

Id_P INT ,

CONSTRAINT uc_PERSONID UNIQUE(Id_P, Id_O))

4.創建表 例表"Orders" 表創建時在 "Id_O" 列創建 PRIMARY KEY 約束:

Create table Orders(

Id_O INT NOT NUL PRIMARY KEY,

OrderNo INT,

Id_P INT ,)

5.創建表 例表"Orders" 表創建時在 "Id_P" 列創建 FOREIGN KEY約束:

Create table Orders(

Id_O  INT NOT NUL PRIMARY KEY,

OrderNo INT,

Id_P INT FOREIGN KEY REFERENCES PERSONS(Id_P))

6..創建表 例表"Orders" 表創建時在 "Id_P" 列創建CHECK約束Id_P>0:

Create table Orders(

Id_O  INT NOT NUL PRIMARY KEY,

OrderNo INT,

Id_P INT ,

CHECK (Id_P>0)

7創建表 例表"Orders" 表創建時在 "Id_P" 列創建DEFAULT 約束插入默認值0

Create table Orders(

Id_O  INT NOT NUL PRIMARY KEY,

OrderNo INT,

Id_P INT DEFAULT 0,

)

 

CREATE INDEX

CREATE INDEX您可以在表中創建索引,以便更加快速高效地查詢數據。

1.我們希望以Id_o從大到小排列

CREATE INDEX  Id_o  ON Orders(OrderNo, Id_P)

DROP

DROP可以輕鬆刪除索引、表、數據庫

1.刪除表

DEOP  TABLE  表名

2.刪除數據庫

DEOP  DATABASE 數據庫名

ALTER TABLE

ALTER TABLE語句用於在已有的表中添加、修改或刪除列。

1.在表Orders中添加列Birthday

ALTER TABLE Orders ADD Birthday DATE

2.刪除表Orders中列Birthday

ALTER TABLE Orders DEOP COLUMN Birthday

3.修改表Orders 中列Birthday的數據類型

ALTER TABLE Orders ALTER COLUMN Birthday INT

 

auto-increment主鍵

我們通常希望在每次插入新記錄時,自動地創建主鍵字段的值,我們可以在表中創建一個 auto-increment 字段。

1.創建一個表 Orders 使Id_P 起始值爲1每增加一條:

CREATE TABLE Orders

{

Id_O  INT NOT PRIMARY  KEY IDENTITY(1,1),

OrderNo INT,

Id_P INT,

}

VIEW

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

1.創建視圖:

CREATE VIEW [Current Product List] AS SELECT OrderNo, Id_P FRPM WHERE

Discontinued=No

2.查詢視圖:

SELECT * FROM [Current Product List]

                                                                                                                                       2017年9月27日 IT小狼狗

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章