天天看點

資料庫常用SQL

版權聲明:歡迎評論和轉載,轉載請注明來源。 https://blog.csdn.net/zy332719794/article/details/8951552

以前零零散散地學習和使用了不少的SQL語句,感覺都了解一些,但實際用的時候也要常常上網再查詢和确認。是以想到抽空把這些知識系統地梳理一下。

下面列出常用的SQL語句

說明:在文字描述中,”字段“、”列“指的是同一個意思。大寫表示sql内部的關鍵字,小些表示使用者輸入和定義的。紅色字型表示比較關鍵的地方。

一、簡單增、删、查、改操作

(1)基本操作

單表查詢(多表查詢在下面單獨講)

1. 查詢表的全部記錄:SELECT *

FROM tableName

2. 查詢表的記錄(加條件):SELECT * FROM tableName WHERE

field1= value1 or field2 = value2

3. 查詢表的部分字段的記錄:SELECT field1, field2,..., FROM tableName 

4. 查詢出結果,并賦别名:SELECT filed1 as 别名1, field2 as 别名2 FROM tableName ,

                            或不要as:SELECT filed1 别名1, filed2 别名2 FROM tableName 

5. 查詢不重複的列值:SELECT DISTINCT field1 FROM tableName

6. 查詢表的前N個記錄:SELECT TOP 100 field1, field2 FROM tableName

新增記錄

1. 插入一條新紀錄:INSERT INTO tableName (field1, field2, field3) VALUES(value1, value2, value3),需要注意的是字元串類型的值,需要用單引号括起來。

修改記錄

1. 修改所有符合條件的記錄:UPDATE tableName

SET field1 = value1, field2 = value2 WHERE

field3 = value3

删除記錄

1. 删除表中的所有記錄:DELETE FROM tableName 或者

DELETE * FROM tableName

2. 删除符合條件的記錄:DELETE FROM tableName WHERE field1 = value1 AND field2 = value2

(2)查詢結果排序

說明:關鍵字ORDER BY 寫在SQL語句的最後

1. 按某字段進行排序:SELECT * FROM tableName ORDER BYfield1

2. 按多個字段進行排序:SELECT * FROM tableName ORDER BY field1,field2, ...

3. 正逆序排序:SELECT * FROM tableName ORDER BY field1DESC, field2 ASC,其中“DESC”表示逆序,“ASC”表示正序

(3)WHERE條件設定

說明:WHERE條件語句跟在SQL語句表的後面

1. 添加字段值條件,判斷符号有大于“>”,小于“<”,等于“=”,不等于“<>”、“!=”,介于“BETWEEN...AND”,不介于“NOT BETWEEN...AND"

2. 多條件連接配接,多條件可以用AND或者OR進行連接配接,AND表示“并且”,OR表示“或者”,如上面所示。條件可以用括号進行合并判斷。

例:SELECT * FROM tableName WHERE field1 > 0 AND field2 < 100

        SELECT * FROM tableName WHERE field1 = 10 AND (field2 != 'aaa' OR field3<> 'bbb')

        SELECT * FROM tableName WHERE field1 BETWEEN 'a' AND 'd' ,不同的資料庫(sql server、orcale)對字元串的判斷方式可能不同。

        SELECT * FROM tableName WHERE field1 NOT BETWEEN 100 AND 1000

3. 集合作為條件,關鍵字‘IN’

        SELECT * FROM tableName WHERE field1 IN ('value1', 'value2', 'value3',...),查尋出field1字段值在value集合中存在的結果。

(4)通配符

說明:通配符通常用于 WHERE 語句中的 LIKE 條件

1. 通配符有兩個,百分号‘%’和下劃線‘_’,百分号‘%’表示比對若幹個連續的字元,下劃線‘_’表示比對一個字元

   SELECT * FROM tableName WHERE field1 like '%b_cd%'

上面語句表示字段field1滿足前面有0個或若幹個字元,接着有b字元隔了一個字元後,接着cd後面跟0個或若幹個字元。

補充:百分号可以比對0個字元,而下劃線比對表示必須有一個字元。

(5)級聯查詢(多表連接配接查詢)

說明:級聯查詢,通常是兩個或多個表設定了主鍵和外鍵引用,通過id進行級聯查詢

1. 普通方式表連接配接查詢:SELECT * FROM table1, table2 WHERE table1.id = table2.id

2. 内聯查詢:SELECT * FROM table1 INNER JOIN table2ON table1.id = table2.id,其結果與方式1查詢結果一緻。

2. 左聯查詢:SELECT * FROM table1 LEFT JOIN table2 ON table1.id = table2.id,如果右表沒有比對,也從左表傳回說有的行

3. 右聯查詢:SELECT * FROM table1 RIGHT JOIN table2 ON table1.id = talb2.id,如果左表沒有比對,也從右表傳回說有的行

4. 多表級聯:SELECT * FROM table1 INNER JOIN table2ON

table1.id = table2.id LEFT JOIN table3

ON t1.id = t3.id RIGHT JOIN ...

ON...

5. 級聯更新和級聯删除,對于不用資料庫支援不同,這裡不作詳述。

(6)表操作

建立表

關鍵字:CREATE TABLE

1. 建立一個三個字段的表:CREATE TABLE tableName (fieldName1 int,  fieldName2  varchar(255),  fieldName3  date),字段定義用逗号隔開。

2. 建立一個帶主鍵的表:CREATE TABLE tableName ( fieldName1 int PRIMARY KEY,  fieldName2 varchar(100))

3. 建立一個帶非空字段的表:CREATE TABLE tableName ( fieldName1 int NOT NULL,  fieldName2 varchar(100))

4. 建立一個含唯一限制字段的表:CREATE TABLE tableName ( fieldName1 int  UNIQUE,  fieldName2 varchar(100))

5. 建立含兩個字段确定唯一的表:CREATE TALBE tableName (field1 int, field 2 varchar(255), field3 date,CONSTRAINT customName UNIQUE(field1, field3))

6. 建立一個含外鍵的表:CREATE TABLE tableName ( fieldName1 int FOREIGN KEY REFERENCES otherTable(fieldName),  fieldName2 varchar(100))

7. CHECK限制,可以添加各種進階限制,例:CREATE TABLE tableName ( fieldName1 int CHECK(fieldName1 > 0),  fieldName2 varchar(100))

說明:建立各種限制的時候,可以在字段的後面直接跟關鍵字,也可以單獨寫一句定義,單獨寫一句定義的好處在于,第一可以為限制命名字,第二可以增加組合的限制。

CONSTRAINT name PRIMARY KEY【或NOT NULL、UNIQUE、FOREIGN KEY、CHECK等】 (field1)【(field1,field2)、REFERENCES otherTable(table2)、(field1>0)等】

修改表

關鍵字:ALTER TABLE

1. 增加列:ALTER TABLE table1 ADD newField1 dataType, newField2 dataType

    特殊情況,增加非空列時,如果表目前不為空,則需要設定預設值,

            例:ALTER TABLE table1 ADD newField1 int NOT NULL DEFAULT(0)

2. 删除列:ALTER TABLE table1 DROP COLUMN field1

3. 修改字段資料類型:ALTER TABLE table1 ALTER COLUMN field1 otherDataType

4. 修改字段的名稱,較複雜,多采用存儲過程實作,這裡暫不詳述。

删除表

關鍵字:DROP TABLE

1. 删除表:DROP TABLE tableName,語句非常簡單,但是如果表與其他表之間有限制,需要先處理限制再删表。

(7)字段限制操作

1. 增加字段限制:ALTER TABLE table1 ADD PRIMARY KEY ( field1 )

ALTER TABLE table1

 CONSTRAINT name ADD PRIMARY KEY(field1, field2)

ALTER TABLE table1 CONSTRAINT name ADD CHECK

2. 删除字段限制,限制不同,語句不完全一緻:ALTER TABLE table1 DROP PRIMARY KEY,因為一個表隻有一個主鍵,是以不需要跟名稱

    ALTER TABLE table1 DROP FOREIGN KEY foreignKEYName,隻能根據限制名來删除

    通用的删除限制的方法: ALTER TABLE table1 DROP CONSTRAINT foreignKEYName

待續。。。