SQL 語法大全

SQL 語法大全

標簽(空格分隔): SQL DB2

SQL語法大全


SQL SELECT


SQL SELECT 語句

SELECT 語句用于從表中選取數(shù)據(jù)。

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

SQL SELECT 語法

SELECT 列名稱 FROM 表名稱

以及:

SELECT * FROM 表名稱

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

SQL SELECT DISTINCT

SQL SELECT DISTINCT 語句

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

關(guān)鍵詞 DISTINCT 用于返回唯一不同的值。

語法:

SELECT DISTINCT 列名稱 FROM 表名稱

SQL WHERE

WHERE 子句

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

語法

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

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

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

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

SQL AND & OR

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

AND 和 OR 運算符

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

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

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

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

LastName FirstName Address City
Adams John Oxford Street London
Bush George Fifth Avenue New York
Carter Thomas Changan Street Beijing
Carter William Xuanwumen 10 Beijing

SQL ORDER BY

ORDER BY 語句用于對結(jié)果集進行排序。

ORDER BY 語句

ORDER BY 語句用于根據(jù)指定的列對結(jié)果集進行排序。

ORDER BY 語句默認按照升序?qū)τ涗涍M行排序。

如果您希望按照降序?qū)τ涗涍M行排序,可以使用 DESC 關(guān)鍵字。

SQL INSERT INTO

INSERT INTO 語句

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

語法

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

我們也可以指定所要插入數(shù)據(jù)的列:

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

SQL UPDATE

Update 語句

Update 語句用于修改表中的數(shù)據(jù)。

語法:

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

SQL DELETE

DELETE 語句

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

語法

DELETE FROM 表名稱 WHERE 列名稱 = 值

SQL TOP

TOP 子句

TOP 子句用于規(guī)定要返回的記錄的數(shù)目。

對于擁有數(shù)千條記錄的大型表來說,TOP 子句是非常有用的。

注釋:并非所有的數(shù)據(jù)庫系統(tǒng)都支持 TOP 子句。

SQL Server 的語法:

SELECT TOP number|percent column_name(s)
FROM table_name

SQL LIKE

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

LIKE 操作符

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

SQL LIKE 操作符語法

SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern

SQL 通配符

在搜索數(shù)據(jù)庫中的數(shù)據(jù)時,您可以使用 SQL 通配符。

SQL 通配符

在搜索數(shù)據(jù)庫中的數(shù)據(jù)時,SQL 通配符可以替代一個或多個字符。

SQL 通配符必須與 LIKE 運算符一起使用。

在 SQL 中,可使用以下通配符:

通配符 描述
% 替代一個或多個字符
_ 僅替代一個字符
[charlist] 字符列中的任何單一字符
[^charlist]或者[!charlist] 不在字符列中的任何單一字符

SQL IN

IN 操作符

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

SQL IN 語法

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...)

SQL BETWEEN

BETWEEN 操作符在 WHERE 子句中使用,作用是選取介于兩個值之間的數(shù)據(jù)范圍。

BETWEEN 操作符

操作符 BETWEEN ... AND 會選取介于兩個值之間的數(shù)據(jù)范圍。這些值可以是數(shù)值、文本或者日期。

SQL BETWEEN 語法

SELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2

SQL Alias(別名)

表的 SQL Alias 語法

SELECT column_name(s)
FROM table_name
AS alias_name

列的 SQL Alias 語法

SELECT column_name AS alias_name
FROM table_name

SQL JOIN

SQL join 用于根據(jù)兩個或多個表中的列之間的關(guān)系,從這些表中查詢數(shù)據(jù)。

不同的 SQL JOIN

除了我們在上面的例子中使用的 INNER JOIN(內(nèi)連接),我們還可以使用其他幾種連接。

下面列出了您可以使用的 JOIN 類型,以及它們之間的差異。

  • JOIN: 如果表中有至少一個匹配,則返回行
  • LEFT JOIN: 即使右表中沒有匹配,也從左表返回所有的行
  • RIGHT JOIN: 即使左表中沒有匹配,也從右表返回所有的行
  • FULL JOIN: 只要其中一個表中存在匹配,就返回行

SQL INNER JOIN

SQL INNER JOIN 關(guān)鍵字

在表中存在至少一個匹配時,INNER JOIN 關(guān)鍵字返回行。

INNER JOIN 關(guān)鍵字語法

SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2 
ON table_name1.column_name=table_name2.column_name

注釋:INNER JOIN 與 JOIN 是相同的。

SQL LEFT JOIN

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

LEFT JOIN 關(guān)鍵字語法

SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2 
ON table_name1.column_name=table_name2.column_name

注釋:在某些數(shù)據(jù)庫中, LEFT JOIN 稱為 LEFT OUTER JOIN。

SQL RIGHT JOIN

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

RIGHT JOIN 關(guān)鍵字語法

SELECT column_name(s)
FROM table_name1
RIGHT JOIN table_name2 
ON table_name1.column_name=table_name2.column_name

注釋:在某些數(shù)據(jù)庫中, RIGHT JOIN 稱為 RIGHT OUTER JOIN。

SQL FULL JOIN

SQL FULL JOIN 關(guān)鍵字

只要其中某個表存在匹配,F(xiàn)ULL JOIN 關(guān)鍵字就會返回行。

FULL JOIN 關(guān)鍵字語法

SELECT column_name(s)
FROM table_name1
FULL JOIN table_name2 
ON table_name1.column_name=table_name2.column_name

注釋:在某些數(shù)據(jù)庫中, FULL JOIN 稱為 FULL OUTER JOIN。

SQL UNION 和 UNION ALL

SQL UNION 操作符

UNION 操作符用于合并兩個或多個 SELECT 語句的結(jié)果集。

請注意,UNION 內(nèi)部的 SELECT 語句必須擁有相同數(shù)量的列。列也必須擁有相似的數(shù)據(jù)類型。同時,每條 SELECT 語句中的列的順序必須相同。

SQL UNION 語法

SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2

注釋:默認地,UNION 操作符選取不同的值。如果允許重復(fù)的值,請使用 UNION ALL。

SQL UNION ALL 語法

SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2

另外,UNION 結(jié)果集中的列名總是等于 UNION 中第一個 SELECT 語句中的列名。

SQL SELECT INTO

SQL SELECT INTO 語句可用于創(chuàng)建表的備份復(fù)件。

SELECT INTO 語句

SELECT INTO 語句從一個表中選取數(shù)據(jù),然后把數(shù)據(jù)插入另一個表中。

SELECT INTO 語句常用于創(chuàng)建表的備份復(fù)件或者用于對記錄進行存檔。

SQL CREATE DATABASE

CREATE DATABASE 用于創(chuàng)建數(shù)據(jù)庫。

SQL CREATE DATABASE 語法

CREATE DATABASE database_name

SQL CREATE TABLE

CREATE TABLE 語句

CREATE TABLE 語句用于創(chuàng)建數(shù)據(jù)庫中的表。

SQL CREATE TABLE 語法

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

數(shù)據(jù)類型(data_type)規(guī)定了列可容納何種數(shù)據(jù)類型。下面的表格包含了SQL中最常用的數(shù)據(jù)類型:

數(shù)據(jù)類型 描述
integer(size)int(size)smallint(size)tinyint(size) 僅容納整數(shù)。在括號內(nèi)規(guī)定數(shù)字的最大位數(shù)。
decimal(size,d)numeric(size,d) 容納帶有小數(shù)的數(shù)字。"size" 規(guī)定數(shù)字的最大位數(shù)。"d" 規(guī)定小數(shù)點右側(cè)的最大位數(shù)。
char(size) 容納固定長度的字符串(可容納字母、數(shù)字以及特殊字符)。在括號中規(guī)定字符串的長度。
varchar(size) 容納可變長度的字符串(可容納字母、數(shù)字以及特殊的字符)。在括號中規(guī)定字符串的最大長度。
date(yyyymmdd) 容納日期。

SQL 約束 (Constraints)

SQL 約束

約束用于限制加入表的數(shù)據(jù)的類型。

可以在創(chuàng)建表時規(guī)定約束(通過 CREATE TABLE 語句),或者在表創(chuàng)建之后也可以(通過 ALTER TABLE 語句)。

我們將主要探討以下幾種約束:

  • NOT NULL
  • UNIQUE
  • PRIMARY KEY
  • FOREIGN KEY
  • CHECK
  • DEFAULT

SQL NOT NULL 約束

SQL NOT NULL 約束

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

NOT NULL 約束強制字段始終包含值。這意味著,如果不向字段添加值,就無法插入新記錄或者更新記錄。

下面的 SQL 語句強制 "Id_P" 列和 "LastName" 列不接受 NULL 值:

CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

SQL UNIQUE 約束

SQL UNIQUE 約束

UNIQUE 約束唯一標識數(shù)據(jù)庫表中的每條記錄。

UNIQUE 和 PRIMARY KEY 約束均為列或列集合提供了唯一性的保證。

PRIMARY KEY 擁有自動定義的 UNIQUE 約束。

請注意,每個表可以有多個 UNIQUE 約束,但是每個表只能有一個 PRIMARY KEY 約束。

SQL PRIMARY KEY 約束

SQL PRIMARY KEY 約束

PRIMARY KEY 約束唯一標識數(shù)據(jù)庫表中的每條記錄。

主鍵必須包含唯一的值。

主鍵列不能包含 NULL 值。

每個表都應(yīng)該有一個主鍵,并且每個表只能有一個主鍵。

SQL FOREIGN KEY 約束

SQL FOREIGN KEY 約束

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

讓我們通過一個例子來解釋外鍵。請看下面兩個表:

"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

請注意,"Orders" 中的 "Id_P" 列指向 "Persons" 表中的 "Id_P" 列。

"Persons" 表中的 "Id_P" 列是 "Persons" 表中的 PRIMARY KEY。

"Orders" 表中的 "Id_P" 列是 "Orders" 表中的 FOREIGN KEY。

FOREIGN KEY 約束用于預(yù)防破壞表之間連接的動作。

FOREIGN KEY 約束也能防止非法數(shù)據(jù)插入外鍵列,因為它必須是它指向的那個表中的值之一。

SQL CHECK 約束

SQL CHECK 約束

CHECK 約束用于限制列中的值的范圍。

如果對單個列定義 CHECK 約束,那么該列只允許特定的值。

如果對一個表定義 CHECK 約束,那么此約束會在特定的列中對值進行限制。

SQL DEFAULT 約束

SQL DEFAULT 約束

DEFAULT 約束用于向列中插入默認值。

如果沒有規(guī)定其他的值,那么會將默認值添加到所有的新記錄。

SQL DEFAULT Constraint on CREATE TABLE

下面的 SQL 在 "Persons" 表創(chuàng)建時為 "City" 列創(chuàng)建 DEFAULT 約束:

My SQL / SQL Server / Oracle / MS Access:

CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255) DEFAULT 'Sandnes'
)

通過使用類似 GETDATE() 這樣的函數(shù),DEFAULT 約束也可以用于插入系統(tǒng)值:

CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
OrderDate date DEFAULT GETDATE()
)

SQL CREATE INDEX

CREATE INDEX 語句用于在表中創(chuàng)建索引。

在不讀取整個表的情況下,索引使數(shù)據(jù)庫應(yīng)用程序可以更快地查找數(shù)據(jù)。

索引

您可以在表中創(chuàng)建索引,以便更加快速高效地查詢數(shù)據(jù)。

用戶無法看到索引,它們只能被用來加速搜索/查詢。

注釋:更新一個包含索引的表需要比更新一個沒有索引的表更多的時間,這是由于索引本身也需要更新。因此,理想的做法是僅僅在常常被搜索的列(以及表)上面創(chuàng)建索引。

SQL CREATE INDEX 語法

在表上創(chuàng)建一個簡單的索引。允許使用重復(fù)的值:

CREATE INDEX index_name
ON table_name (column_name)

注釋:"column_name" 規(guī)定需要索引的列。

SQL CREATE UNIQUE INDEX 語法

在表上創(chuàng)建一個唯一的索引。唯一的索引意味著兩個行不能擁有相同的索引值。

CREATE UNIQUE INDEX index_name
ON table_name (column_name)

SQL 撤銷索引、表以及數(shù)據(jù)庫

通過使用 DROP 語句,可以輕松地刪除索引、表和數(shù)據(jù)庫。

SQL DROP INDEX 語句

我們可以使用 DROP INDEX 命令刪除表格中的索引。

用于 Microsoft SQLJet (以及 Microsoft Access) 的語法:

DROP INDEX index_name ON table_name

用于 MS SQL Server 的語法:

DROP INDEX table_name.index_name

用于 IBM DB2 和 Oracle 語法:

DROP INDEX index_name

用于 MySQL 的語法:

ALTER TABLE table_name DROP INDEX index_name

SQL ALTER TABLE

ALTER TABLE 語句

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

SQL ALTER TABLE 語法

如需在表中添加列,請使用下列語法:

ALTER TABLE table_name
ADD column_name datatype

要刪除表中的列,請使用下列語法:

ALTER TABLE table_name 
DROP COLUMN column_name

注釋:某些數(shù)據(jù)庫系統(tǒng)不允許這種在數(shù)據(jù)庫表中刪除列的方式 (DROP COLUMN column_name)。

要改變表中列的數(shù)據(jù)類型,請使用下列語法:

ALTER TABLE table_name
ALTER COLUMN column_name datatype

SQL AUTO INCREMENT

Auto-increment 會在新記錄插入表中時生成一個唯一的數(shù)字。

AUTO INCREMENT 字段

我們通常希望在每次插入新記錄時,自動地創(chuàng)建主鍵字段的值。

我們可以在表中創(chuàng)建一個 auto-increment 字段。

SQL VIEW

視圖是可視化的表。

本章講解如何創(chuàng)建、更新和刪除視圖。

SQL CREATE VIEW 語句

什么是視圖?

在 SQL 中,視圖是基于 SQL 語句的結(jié)果集的可視化的表。

視圖包含行和列,就像一個真實的表。視圖中的字段就是來自一個或多個數(shù)據(jù)庫中的真實的表中的字段。我們可以向視圖添加 SQL 函數(shù)、WHERE 以及 JOIN 語句,我們也可以提交數(shù)據(jù),就像這些來自于某個單一的表。

注釋:數(shù)據(jù)庫的設(shè)計和結(jié)構(gòu)不會受到視圖中的函數(shù)、where 或 join 語句的影響。

SQL Date

SQL 日期

當(dāng)我們處理日期時,最難的任務(wù)恐怕是確保所插入的日期的格式,與數(shù)據(jù)庫中日期列的格式相匹配。

只要數(shù)據(jù)包含的只是日期部分,運行查詢就不會出問題。但是,如果涉及時間,情況就有點復(fù)雜了。

在討論日期查詢的復(fù)雜性之前,我們先來看看最重要的內(nèi)建日期處理函數(shù)。

MySQL Date 函數(shù)

下面的表格列出了 MySQL 中最重要的內(nèi)建日期函數(shù):

函數(shù) 描述
NOW() 返回當(dāng)前的日期和時間
CURDATE() 返回當(dāng)前的日期
CURTIME() 返回當(dāng)前的時間
DATE() 提取日期或日期/時間表達式的日期部分
EXTRACT() 返回日期/時間按的單獨部分
DATE_ADD() 給日期添加指定的時間間隔
DATE_SUB() 從日期減去指定的時間間隔
DATEDIFF() 返回兩個日期之間的天數(shù)
DATE_FORMAT() 用不同的格式顯示日期/時間

SQL Server Date 函數(shù)

下面的表格列出了 SQL Server 中最重要的內(nèi)建日期函數(shù):

函數(shù) 描述
GETDATE() 返回當(dāng)前日期和時間
DATEPART() 返回日期/時間的單獨部分
DATEADD() 在日期中添加或減去指定的時間間隔
DATEDIFF() 返回兩個日期之間的時間
CONVERT() 用不同的格式顯示日期/時間

SQL Date 數(shù)據(jù)類型

MySQL 使用下列數(shù)據(jù)類型在數(shù)據(jù)庫中存儲日期或日期/時間值:

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

SQL Server 使用下列數(shù)據(jù)類型在數(shù)據(jù)庫中存儲日期或日期/時間值:

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

SQL 日期處理

如果不涉及時間部分,那么我們可以輕松地比較兩個日期!

假設(shè)我們有下面這個 "Orders" 表:

OrderId ProductName OrderDate
1 computer 2008-12-26
2 printer 2008-12-26
3 electrograph 2008-11-12
4 telephone 2008-10-19

現(xiàn)在,我們希望從上表中選取 OrderDate 為 "2008-12-26" 的記錄。

我們使用如下 SELECT 語句:

SELECT * FROM Orders WHERE OrderDate='2008-12-26'

結(jié)果集:

OrderId ProductName OrderDate
1 computer 2008-12-26
3 electrograph 2008-12-26

現(xiàn)在假設(shè) "Orders" 類似這樣(請注意 "OrderDate" 列中的時間部分):

OrderId ProductName OrderDate
1 computer 2008-12-26 16:23:55
2 printer 2008-12-26 10:45:26
3 electrograph 2008-11-12 14:12:08
4 telephone 2008-10-19 12:56:10

如果我們使用上面的 SELECT 語句:

SELECT * FROM Orders WHERE OrderDate='2008-12-26'

那么我們得不到結(jié)果。這是由于該查詢不含有時間部分的日期。

SQL NULL

NULL 值是遺漏的未知數(shù)據(jù)。

默認地,表的列可以存放 NULL 值。

本章講解 IS NULL 和 IS NOT NULL 操作符。

SQL NULL

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

SQL 數(shù)據(jù)類型

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

Microsoft Access、MySQL 以及 SQL Server 所使用的數(shù)據(jù)類型和范圍。

Microsoft Access 數(shù)據(jù)類型

數(shù)據(jù)類型 描述 存儲
Text 用于文本或文本與數(shù)字的組合。最多 255 個字符。
Memo Memo 用于更大數(shù)量的文本。最多存儲 65,536 個字符。注釋:無法對 memo 字段進行排序。不過它們是可搜索的。
Byte 允許 0 到 255 的數(shù)字。 1 字節(jié)
Integer 允許介于 -32,768 到 32,767 之間的數(shù)字。 2 字節(jié)
Long 允許介于 -2,147,483,648 與 2,147,483,647 之間的全部數(shù)字 4 字節(jié)
Single 單精度浮點。處理大多數(shù)小數(shù)。 4 字節(jié)
Double 雙精度浮點。處理大多數(shù)小數(shù)。 8 字節(jié)
Currency 用于貨幣。支持 15 位的元,外加 4 位小數(shù)。提示:您可以選擇使用哪個國家的貨幣。 8 字節(jié)
AutoNumber AutoNumber 字段自動為每條記錄分配數(shù)字,通常從 1 開始。 4 字節(jié)
Date/Time 用于日期和時間 8 字節(jié)
Yes/No 邏輯字段,可以顯示為 Yes/No、True/False 或 On/Off。在代碼中,使用常量 True 和 False (等價于 1 和 0)注釋:Yes/No 字段中不允許 Null 值 1 比特
Ole Object 可以存儲圖片、音頻、視頻或其他 BLOBs (Binary Large OBjects) 最多 1GB
Hyperlink 包含指向其他文件的鏈接,包括網(wǎng)頁。
Lookup Wizard 允許你創(chuàng)建一個可從下列列表中進行選擇的選項列表。 4 字節(jié)

MySQL 數(shù)據(jù)類型

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

Text 類型:

數(shù)據(jù)類型 描述
CHAR(size) 保存固定長度的字符串(可包含字母、數(shù)字以及特殊字符)。在括號中指定字符串的長度。最多 255 個字符。
VARCHAR(size) 保存可變長度的字符串(可包含字母、數(shù)字以及特殊字符)。在括號中指定字符串的最大長度。最多 255 個字符。注釋:如果值的長度大于 255,則被轉(zhuǎn)換為 TEXT 類型。
TINYTEXT 存放最大長度為 255 個字符的字符串。
TEXT 存放最大長度為 65,535 個字符的字符串。
BLOB 用于 BLOBs (Binary Large OBjects)。存放最多 65,535 字節(jié)的數(shù)據(jù)。
MEDIUMTEXT 存放最大長度為 16,777,215 個字符的字符串。
MEDIUMBLOB 用于 BLOBs (Binary Large OBjects)。存放最多 16,777,215 字節(jié)的數(shù)據(jù)。
LONGTEXT 存放最大長度為 4,294,967,295 個字符的字符串。
LONGBLOB 用于 BLOBs (Binary Large OBjects)。存放最多 4,294,967,295 字節(jié)的數(shù)據(jù)。
ENUM(x,y,z,etc.) 允許你輸入可能值的列表??梢栽?ENUM 列表中列出最大 65535 個值。如果列表中不存在插入的值,則插入空值。注釋:這些值是按照你輸入的順序存儲的??梢园凑沾烁袷捷斎肟赡艿闹担篍NUM('X','Y','Z')
SET 與 ENUM 類似,SET 最多只能包含 64 個列表項,不過 SET 可存儲一個以上的值。

Number 類型:

數(shù)據(jù)類型 描述
TINYINT(size) -128 到 127 常規(guī)。0 到 255 無符號*。在括號中規(guī)定最大位數(shù)。
SMALLINT(size) -32768 到 32767 常規(guī)。0 到 65535 無符號*。在括號中規(guī)定最大位數(shù)。
MEDIUMINT(size) -8388608 到 8388607 普通。0 to 16777215 無符號*。在括號中規(guī)定最大位數(shù)。
INT(size) -2147483648 到 2147483647 常規(guī)。0 到 4294967295 無符號*。在括號中規(guī)定最大位數(shù)。
BIGINT(size) -9223372036854775808 到 9223372036854775807 常規(guī)。0 到 18446744073709551615 無符號*。在括號中規(guī)定最大位數(shù)。
FLOAT(size,d) 帶有浮動小數(shù)點的小數(shù)字。在括號中規(guī)定最大位數(shù)。在 d 參數(shù)中規(guī)定小數(shù)點右側(cè)的最大位數(shù)。
DOUBLE(size,d) 帶有浮動小數(shù)點的大數(shù)字。在括號中規(guī)定最大位數(shù)。在 d 參數(shù)中規(guī)定小數(shù)點右側(cè)的最大位數(shù)。
DECIMAL(size,d) 作為字符串存儲的 DOUBLE 類型,允許固定的小數(shù)點。

* 這些整數(shù)類型擁有額外的選項 UNSIGNED。通常,整數(shù)可以是負數(shù)或正數(shù)。如果添加 UNSIGNED 屬性,那么范圍將從 0 開始,而不是某個負數(shù)。

Date 類型:

數(shù)據(jù)類型 描述
DATE() 日期。格式:YYYY-MM-DD注釋:支持的范圍是從 '1000-01-01' 到 '9999-12-31'
DATETIME() *日期和時間的組合。格式:YYYY-MM-DD HH:MM:SS注釋:支持的范圍是從 '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'
TIMESTAMP() *時間戳。TIMESTAMP 值使用 Unix 紀元('1970-01-01 00:00:00' UTC) 至今的描述來存儲。格式:YYYY-MM-DD HH:MM:SS注釋:支持的范圍是從 '1970-01-01 00:00:01' UTC 到 '2038-01-09 03:14:07' UTC
TIME() 時間。格式:HH:MM:SS 注釋:支持的范圍是從 '-838:59:59' 到 '838:59:59'
YEAR() 2 位或 4 位格式的年。注釋:4 位格式所允許的值:1901 到 2155。2 位格式所允許的值:70 到 69,表示從 1970 到 2069。

* 即便 DATETIME 和 TIMESTAMP 返回相同的格式,它們的工作方式很不同。在 INSERT 或 UPDATE 查詢中,TIMESTAMP 自動把自身設(shè)置為當(dāng)前的日期和時間。TIMESTAMP 也接受不同的格式,比如 YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD 或 YYMMDD。

SQL Server 數(shù)據(jù)類型

Character 字符串:

數(shù)據(jù)類型 描述 存儲
char(n) 固定長度的字符串。最多 8,000 個字符。 n
varchar(n) 可變長度的字符串。最多 8,000 個字符。
varchar(max) 可變長度的字符串。最多 1,073,741,824 個字符。
text 可變長度的字符串。最多 2GB 字符數(shù)據(jù)。

Unicode 字符串:

數(shù)據(jù)類型 描述 存儲
nchar(n) 固定長度的 Unicode 數(shù)據(jù)。最多 4,000 個字符。
nvarchar(n) 可變長度的 Unicode 數(shù)據(jù)。最多 4,000 個字符。
nvarchar(max) 可變長度的 Unicode 數(shù)據(jù)。最多 536,870,912 個字符。
ntext 可變長度的 Unicode 數(shù)據(jù)。最多 2GB 字符數(shù)據(jù)。

Binary 類型:

數(shù)據(jù)類型 描述 存儲
bit 允許 0、1 或 NULL
binary(n) 固定長度的二進制數(shù)據(jù)。最多 8,000 字節(jié)。
varbinary(n) 可變長度的二進制數(shù)據(jù)。最多 8,000 字節(jié)。
varbinary(max) 可變長度的二進制數(shù)據(jù)。最多 2GB 字節(jié)。
image 可變長度的二進制數(shù)據(jù)。最多 2GB。

Number 類型:

數(shù)據(jù)類型 描述 存儲
tinyint 允許從 0 到 255 的所有數(shù)字。 1 字節(jié)
smallint 允許從 -32,768 到 32,767 的所有數(shù)字。 2 字節(jié)
int 允許從 -2,147,483,648 到 2,147,483,647 的所有數(shù)字。 4 字節(jié)
bigint 允許介于 -9,223,372,036,854,775,808 和 9,223,372,036,854,775,807 之間的所有數(shù)字。 8 字節(jié)
decimal(p,s) 固定精度和比例的數(shù)字。允許從 -10^38 +1 到 10^38 -1 之間的數(shù)字。p 參數(shù)指示可以存儲的最大位數(shù)(小數(shù)點左側(cè)和右側(cè))。p 必須是 1 到 38 之間的值。默認是 18。s 參數(shù)指示小數(shù)點右側(cè)存儲的最大位數(shù)。s 必須是 0 到 p 之間的值。默認是 0。 5-17 字節(jié)
numeric(p,s) 固定精度和比例的數(shù)字。允許從 -10^38 +1 到 10^38 -1 之間的數(shù)字。p 參數(shù)指示可以存儲的最大位數(shù)(小數(shù)點左側(cè)和右側(cè))。p 必須是 1 到 38 之間的值。默認是 18。s 參數(shù)指示小數(shù)點右側(cè)存儲的最大位數(shù)。s 必須是 0 到 p 之間的值。默認是 0。 5-17 字節(jié)
smallmoney 介于 -214,748.3648 和 214,748.3647 之間的貨幣數(shù)據(jù)。 4 字節(jié)
money 介于 -922,337,203,685,477.5808 和 922,337,203,685,477.5807 之間的貨幣數(shù)據(jù)。 8 字節(jié)
float(n) 從 -1.79E + 308 到 1.79E + 308 的浮動精度數(shù)字數(shù)據(jù)。 參數(shù) n 指示該字段保存 4 字節(jié)還是 8 字節(jié)。float(24) 保存 4 字節(jié),而 float(53) 保存 8 字節(jié)。n 的默認值是 53。 4 或 8 字節(jié)
real 從 -3.40E + 38 到 3.40E + 38 的浮動精度數(shù)字數(shù)據(jù)。 4 字節(jié)

Date 類型:

數(shù)據(jù)類型 描述 存儲
datetime 從 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度為 3.33 毫秒。 8 bytes
datetime2 從 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度為 100 納秒。 6-8 bytes
smalldatetime 從 1900 年 1 月 1 日 到 2079 年 6 月 6 日,精度為 1 分鐘。 4 bytes
date 僅存儲日期。從 0001 年 1 月 1 日 到 9999 年 12 月 31 日。 3 bytes
time 僅存儲時間。精度為 100 納秒。 3-5 bytes
datetimeoffset 與 datetime2 相同,外加時區(qū)偏移。 8-10 bytes
timestamp 存儲唯一的數(shù)字,每當(dāng)創(chuàng)建或修改某行時,該數(shù)字會更新。timestamp 基于內(nèi)部時鐘,不對應(yīng)真實時間。每個表只能有一個 timestamp 變量。

其他數(shù)據(jù)類型:

數(shù)據(jù)類型 描述
sql_variant 存儲最多 8,000 字節(jié)不同數(shù)據(jù)類型的數(shù)據(jù),除了 text、ntext 以及 timestamp。
uniqueidentifier 存儲全局標識符 (GUID)。
xml 存儲 XML 格式化數(shù)據(jù)。最多 2GB。
cursor 存儲對用于數(shù)據(jù)庫操作的指針的引用。
table 存儲結(jié)果集,供稍后處理。

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

SQL 服務(wù)器 - RDBMS

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

現(xiàn)代的 SQL 服務(wù)器構(gòu)建在 RDBMS 之上。

DBMS - 數(shù)據(jù)庫管理系統(tǒng)(Database Management System)

數(shù)據(jù)庫管理系統(tǒng)是一種可以訪問數(shù)據(jù)庫中數(shù)據(jù)的計算機程序。

DBMS 使我們有能力在數(shù)據(jù)庫中提取、修改或者存貯信息。

不同的 DBMS 提供不同的函數(shù)供查詢、提交以及修改數(shù)據(jù)。

RDBMS - 關(guān)系數(shù)據(jù)庫管理系統(tǒng)(Relational Database Management System)

關(guān)系數(shù)據(jù)庫管理系統(tǒng) (RDBMS) 也是一種數(shù)據(jù)庫管理系統(tǒng),其數(shù)據(jù)庫是根據(jù)數(shù)據(jù)間的關(guān)系來組織和訪問數(shù)據(jù)的。

20 世紀 70 年代初,IBM 公司發(fā)明了 RDBMS。

RDBMS 是 SQL 的基礎(chǔ),也是所有現(xiàn)代數(shù)據(jù)庫系統(tǒng)諸如 Oracle、SQL Server、IBM DB2、Sybase、MySQL 以及 Microsoft Access 的基礎(chǔ)。


?

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

SQL 函數(shù)

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

SQL 擁有很多可用于計數(shù)和計算的內(nèi)建函數(shù)。

函數(shù)的語法

內(nèi)建 SQL 函數(shù)的語法是:

SELECT function(列) FROM 表

函數(shù)的類型

在 SQL 中,基本的函數(shù)類型和種類有若干種。函數(shù)的基本類型是:

  • Aggregate 函數(shù)
  • Scalar 函數(shù)

合計函數(shù)(Aggregate functions)

Aggregate 函數(shù)的操作面向一系列的值,并返回一個單一的值。

注釋:如果在 SELECT 語句的項目列表中的眾多其它表達式中使用 SELECT 語句,則這個 SELECT 必須使用 GROUP BY 語句!

"Persons" table (在大部分的例子中使用過)

Name Age
Adams, John 38
Bush, George 33
Carter, Thomas 28

MS Access 中的合計函數(shù)

函數(shù) 描述
AVG(column) 返回某列的平均值
COUNT(column) 返回某列的行數(shù)(不包括 NULL 值)
COUNT(*) 返回被選行數(shù)
FIRST(column) 返回在指定的域中第一個記錄的值
LAST(column) 返回在指定的域中最后一個記錄的值
MAX(column) 返回某列的最高值
MIN(column) 返回某列的最低值
STDEV(column)
STDEVP(column)
SUM(column) 返回某列的總和
VAR(column)
VARP(column)

在 SQL Server 中的合計函數(shù)

函數(shù) 描述
AVG(column) 返回某列的平均值
BINARY_CHECKSUM
CHECKSUM
CHECKSUM_AGG
COUNT(column) 返回某列的行數(shù)(不包括NULL值)
COUNT(*) 返回被選行數(shù)
COUNT(DISTINCT column) 返回相異結(jié)果的數(shù)目
FIRST(column) 返回在指定的域中第一個記錄的值(SQLServer2000 不支持)
LAST(column) 返回在指定的域中最后一個記錄的值(SQLServer2000 不支持)
MAX(column) 返回某列的最高值
MIN(column) 返回某列的最低值
STDEV(column)
STDEVP(column)
SUM(column) 返回某列的總和
VAR(column)
VARP(column)

Scalar 函數(shù)

Scalar 函數(shù)的操作面向某個單一的值,并返回基于輸入值的一個單一的值。

MS Access 中的 Scalar 函數(shù)

函數(shù) 描述
UCASE(c) 將某個域轉(zhuǎn)換為大寫
LCASE(c) 將某個域轉(zhuǎn)換為小寫
MID(c,start[,end]) 從某個文本域提取字符
LEN(c) 返回某個文本域的長度
INSTR(c,char) 返回在某個文本域中指定字符的數(shù)值位置
LEFT(c,number_of_char) 返回某個被請求的文本域的左側(cè)部分
RIGHT(c,number_of_char) 返回某個被請求的文本域的右側(cè)部分
ROUND(c,decimals) 對某個數(shù)值域進行指定小數(shù)位數(shù)的四舍五入
MOD(x,y) 返回除法操作的余數(shù)
NOW() 返回當(dāng)前的系統(tǒng)日期
FORMAT(c,format) 改變某個域的顯示方式
DATEDIFF(d,date1,date2) 用于執(zhí)行日期計算

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

SQL AVG

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

定義和用法

AVG 函數(shù)返回數(shù)值列的平均值。NULL 值不包括在計算中。

SQL AVG() 語法

SELECT AVG(column_name) FROM table_name

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

SQL COUNT()

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

COUNT() 函數(shù)返回匹配指定條件的行數(shù)。

SQL COUNT() 語法

SQL COUNT(column_name) 語法

COUNT(column_name) 函數(shù)返回指定列的值的數(shù)目(NULL 不計入):

SELECT COUNT(column_name) FROM table_name

SQL COUNT(*) 語法

COUNT(*) 函數(shù)返回表中的記錄數(shù):

SELECT COUNT(*) FROM table_name

SQL COUNT(DISTINCT column_name) 語法

COUNT(DISTINCT column_name) 函數(shù)返回指定列的不同值的數(shù)目:

SELECT COUNT(DISTINCT column_name) FROM table_name

注釋:COUNT(DISTINCT) 適用于 ORACLE 和 Microsoft SQL Server,但是無法用于 Microsoft Access。

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

SQL FIRST()

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

FIRST() 函數(shù)

FIRST() 函數(shù)返回指定的字段中第一個記錄的值。

提示:可使用 ORDER BY 語句對記錄進行排序。

SQL FIRST() 語法

SELECT FIRST(column_name) FROM table_name

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

SQL LAST()

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

LAST() 函數(shù)

LAST() 函數(shù)返回指定的字段中最后一個記錄的值。

提示:可使用 ORDER BY 語句對記錄進行排序。

SQL LAST() 語法

SELECT LAST(column_name) FROM table_name

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

SQL MAX()

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

MAX() 函數(shù)

MAX 函數(shù)返回一列中的最大值。NULL 值不包括在計算中。

SQL MAX() 語法

SELECT MAX(column_name) FROM table_name

注釋:MIN 和 MAX 也可用于文本列,以獲得按字母順序排列的最高或最低值。

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

SQL MIN()

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

MIN() 函數(shù)

MIN 函數(shù)返回一列中的最小值。NULL 值不包括在計算中。

SQL MIN() 語法

SELECT MIN(column_name) FROM table_name

注釋:MIN 和 MAX 也可用于文本列,以獲得按字母順序排列的最高或最低值。

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

SQL SUM()

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

SUM() 函數(shù)

SUM 函數(shù)返回數(shù)值列的總數(shù)(總額)。

SQL SUM() 語法

SELECT SUM(column_name) FROM table_name

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

SQL GROUP BY

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

合計函數(shù) (比如 SUM) 常常需要添加 GROUP BY 語句。

GROUP BY 語句

GROUP BY 語句用于結(jié)合合計函數(shù),根據(jù)一個或多個列對結(jié)果集進行分組。

SQL GROUP BY 語法

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

SQL HAVING

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

HAVING 子句

在 SQL 中增加 HAVING 子句原因是,WHERE 關(guān)鍵字無法與合計函數(shù)一起使用。

SQL HAVING 語法

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

SQL UCASE()

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

UCASE() 函數(shù)

UCASE 函數(shù)把字段的值轉(zhuǎn)換為大寫。

SQL UCASE() 語法

SELECT UCASE(column_name) FROM table_name

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

SQL LCASE()

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

LCASE() 函數(shù)

LCASE 函數(shù)把字段的值轉(zhuǎn)換為小寫。

SQL LCASE() 語法

SELECT LCASE(column_name) FROM table_name

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

SQL MID()

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

MID() 函數(shù)

MID 函數(shù)用于從文本字段中提取字符。

SQL MID() 語法

SELECT MID(column_name,start[,length]) FROM table_name
參數(shù) 描述
column_name 必需。要提取字符的字段。
start 必需。規(guī)定開始位置(起始值是 1)。
length 可選。要返回的字符數(shù)。如果省略,則 MID() 函數(shù)返回剩余文本。

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

SQL LEN()

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

LEN() 函數(shù)

LEN 函數(shù)返回文本字段中值的長度。

SQL LEN() 語法

SELECT LEN(column_name) FROM table_name

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

SQL ROUND()

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products

?

ROUND() 函數(shù)

ROUND 函數(shù)用于把數(shù)值字段舍入為指定的小數(shù)位數(shù)。

SQL ROUND() 語法

SELECT ROUND(column_name,decimals) FROM table_name

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products

SQL NOW()

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

NOW() 函數(shù)

NOW 函數(shù)返回當(dāng)前的日期和時間。

提示:如果您在使用 Sql Server 數(shù)據(jù)庫,請使用 getdate() 函數(shù)來獲得當(dāng)前的日期時間。

SQL NOW() 語法

SELECT NOW() FROM table_name

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

SQL FORMAT()

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

FORMAT() 函數(shù)

FORMAT 函數(shù)用于對字段的顯示進行格式化。

SQL FORMAT() 語法

SELECT FORMAT(column_name,format) FROM table_name
參數(shù) 描述
column_name 必需。要格式化的字段。
format 必需。規(guī)定格式。

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

SQL 快速參考

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products


?

SQL 語句

語句 語法
AND / OR SELECT column_name(s)FROM table_nameWHERE conditionAND|OR condition
ALTER TABLE (add column) ALTER TABLE table_name ADD column_name datatype
ALTER TABLE (drop column) ALTER TABLE table_name DROP COLUMN column_name
AS (alias for column) SELECT column_name AS column_aliasFROM table_name
AS (alias for table) SELECT column_nameFROM table_name AS table_alias
BETWEEN SELECT column_name(s)FROM table_nameWHERE column_nameBETWEEN value1 AND value2
CREATE DATABASE CREATE DATABASE database_name
CREATE INDEX CREATE INDEX index_nameON table_name (column_name)
CREATE TABLE CREATE TABLE table_name(column_name1 data_type,column_name2 data_type,.......)
CREATE UNIQUE INDEX CREATE UNIQUE INDEX index_nameON table_name (column_name)
CREATE VIEW CREATE VIEW view_name ASSELECT column_name(s)FROM table_nameWHERE condition
DELETE FROM DELETE FROM table_name (Note: Deletes the entire table!!)orDELETE FROM table_nameWHERE condition
DROP DATABASE DROP DATABASE database_name
DROP INDEX DROP INDEX table_name.index_name
DROP TABLE DROP TABLE table_name
GROUP BY SELECT column_name1,SUM(column_name2)FROM table_nameGROUP BY column_name1
HAVING SELECT column_name1,SUM(column_name2)FROM table_nameGROUP BY column_name1HAVING SUM(column_name2) condition value
IN SELECT column_name(s)FROM table_nameWHERE column_nameIN (value1,value2,..)
INSERT INTO INSERT INTO table_nameVALUES (value1, value2,....)orINSERT INTO table_name(column_name1, column_name2,...)VALUES (value1, value2,....)
LIKE SELECT column_name(s)FROM table_nameWHERE column_nameLIKE pattern
ORDER BY SELECT column_name(s)FROM table_nameORDER BY column_name [ASC|DESC]
SELECT SELECT column_name(s)FROM table_name
SELECT * SELECT *FROM table_name
SELECT DISTINCT SELECT DISTINCT column_name(s)FROM table_name
SELECT INTO(used to create backup copies of tables) SELECT *INTO new_table_nameFROM original_table_nameorSELECT column_name(s)INTO new_table_nameFROM original_table_name
TRUNCATE TABLE(deletes only the data inside the table) TRUNCATE TABLE table_name
UPDATE UPDATE table_nameSET column_name=new_value[, column_name=new_value]WHERE column_name=some_value
WHERE SELECT column_name(s)FROM table_nameWHERE condition

MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點不同。

在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

或者我們可以使用 COALESCE() 函數(shù),就像這樣:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • SQL SELECT 語句 一、查詢SQL SELECT 語法 (1)SELECT 列名稱 FROM 表名稱 (2...
    有錢且幸福閱讀 6,020評論 0 33
  • **SQL TOP 子句 TOP 子句用于規(guī)定要返回的記錄的數(shù)目。 對于擁有數(shù)千條記錄的大型表來說,TOP 子句是...
    廖馬兒閱讀 3,357評論 1 46
  • SQL 高級 01 SQL 高級 02 CREATE INDEX 語句用于在表中創(chuàng)建索引。 在不讀取整個表的情況下...
    鹿守心畔光閱讀 718評論 0 1
  • 語 句 功 能 數(shù)據(jù)操作 SELECT——從數(shù)據(jù)庫表中檢索數(shù)據(jù)行和列INSERT——向數(shù)據(jù)庫表添加新數(shù)據(jù)行DELE...
    戰(zhàn)敭閱讀 5,242評論 0 53
  • 學(xué)習(xí)web安全足足有一個半月有余,之前學(xué)的是前端,也會一點python。。好吧差不多忘了。常規(guī)工具算是熟悉基本...
    一葉紅塵哦喲閱讀 3,487評論 4 92

友情鏈接更多精彩內(nèi)容