SQL 語法大全
標(biāo)簽(空格分隔): SQL DB2
SQL SELECT
SQL SELECT 語句
SELECT 語句用于從表中選取數(shù)據(jù)。
結(jié)果被存儲(chǔ)在一個(gè)結(jié)果表中(稱為結(jié)果集)。
SQL SELECT 語法
SELECT 列名稱 FROM 表名稱
以及:
SELECT * FROM 表名稱
注釋:SQL 語句對(duì)大小寫不敏感。SELECT 等效于 select。
SQL SELECT DISTINCT
SQL SELECT DISTINCT 語句
在表中,可能會(huì)包含重復(fù)值。這并不成問題,不過,有時(shí)您也許希望僅僅列出不同(distinct)的值。
關(guān)鍵詞 DISTINCT 用于返回唯一不同的值。
語法:
SELECT DISTINCT 列名稱 FROM 表名稱
SQL WHERE
WHERE 子句
如需有條件地從表中選取數(shù)據(jù),可將 WHERE 子句添加到 SELECT 語句。
語法
SELECT 列名稱 FROM 表名稱 WHERE 列 運(yùn)算符 值
下面的運(yùn)算符可在 WHERE 子句中使用:
| 操作符 | 描述 |
|---|---|
| = | 等于 |
| <> | 不等于 |
| > | 大于 |
| < | 小于 |
| >= | 大于等于 |
| <= | 小于等于 |
| BETWEEN | 在某個(gè)范圍內(nèi) |
| LIKE | 搜索某種模式 |
注釋:在某些版本的 SQL 中,操作符 <> 可以寫為 !=。
SQL AND & OR
AND 和 OR 運(yùn)算符用于基于一個(gè)以上的條件對(duì)記錄進(jìn)行過濾。
AND 和 OR 運(yùn)算符
AND 和 OR 可在 WHERE 子語句中把兩個(gè)或多個(gè)條件結(jié)合起來。
如果第一個(gè)條件和第二個(gè)條件都成立,則 AND 運(yùn)算符顯示一條記錄。
如果第一個(gè)條件和第二個(gè)條件中只要有一個(gè)成立,則 OR 運(yùn)算符顯示一條記錄。
原始的表 (用在例子中的):
| 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 語句用于對(duì)結(jié)果集進(jìn)行排序。
ORDER BY 語句
ORDER BY 語句用于根據(jù)指定的列對(duì)結(jié)果集進(jìn)行排序。
ORDER BY 語句默認(rèn)按照升序?qū)τ涗涍M(jìn)行排序。
如果您希望按照降序?qū)τ涗涍M(jìn)行排序,可以使用 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ù)目。
對(duì)于擁有數(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ù)時(shí),您可以使用 SQL 通配符。
SQL 通配符
在搜索數(shù)據(jù)庫中的數(shù)據(jù)時(shí),SQL 通配符可以替代一個(gè)或多個(gè)字符。
SQL 通配符必須與 LIKE 運(yùn)算符一起使用。
在 SQL 中,可使用以下通配符:
| 通配符 | 描述 |
|---|---|
| % | 替代一個(gè)或多個(gè)字符 |
| _ | 僅替代一個(gè)字符 |
| [charlist] | 字符列中的任何單一字符 |
| [^charlist]或者[!charlist] | 不在字符列中的任何單一字符 |
SQL IN
IN 操作符
IN 操作符允許我們?cè)?WHERE 子句中規(guī)定多個(gè)值。
SQL IN 語法
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...)
SQL BETWEEN
BETWEEN 操作符在 WHERE 子句中使用,作用是選取介于兩個(gè)值之間的數(shù)據(jù)范圍。
BETWEEN 操作符
操作符 BETWEEN ... AND 會(huì)選取介于兩個(gè)值之間的數(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ù)兩個(gè)或多個(gè)表中的列之間的關(guān)系,從這些表中查詢數(shù)據(jù)。
不同的 SQL JOIN
除了我們?cè)谏厦娴睦又惺褂玫?INNER JOIN(內(nèi)連接),我們還可以使用其他幾種連接。
下面列出了您可以使用的 JOIN 類型,以及它們之間的差異。
- JOIN: 如果表中有至少一個(gè)匹配,則返回行
- LEFT JOIN: 即使右表中沒有匹配,也從左表返回所有的行
- RIGHT JOIN: 即使左表中沒有匹配,也從右表返回所有的行
- FULL JOIN: 只要其中一個(gè)表中存在匹配,就返回行
SQL INNER JOIN
SQL INNER JOIN 關(guān)鍵字
在表中存在至少一個(gè)匹配時(shí),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)鍵字會(huì)從左表 (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)鍵字會(huì)右表 (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)鍵字
只要其中某個(gè)表存在匹配,F(xiàn)ULL JOIN 關(guān)鍵字就會(huì)返回行。
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 操作符用于合并兩個(gè)或多個(gè) SELECT 語句的結(jié)果集。
請(qǐng)注意,UNION 內(nèi)部的 SELECT 語句必須擁有相同數(shù)量的列。列也必須擁有相似的數(shù)據(jù)類型。同時(shí),每條 SELECT 語句中的列的順序必須相同。
SQL UNION 語法
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
注釋:默認(rèn)地,UNION 操作符選取不同的值。如果允許重復(fù)的值,請(qǐng)使用 UNION ALL。
SQL UNION ALL 語法
SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2
另外,UNION 結(jié)果集中的列名總是等于 UNION 中第一個(gè) SELECT 語句中的列名。
SQL SELECT INTO
SQL SELECT INTO 語句可用于創(chuàng)建表的備份復(fù)件。
SELECT INTO 語句
SELECT INTO 語句從一個(gè)表中選取數(shù)據(jù),然后把數(shù)據(jù)插入另一個(gè)表中。
SELECT INTO 語句常用于創(chuàng)建表的備份復(fù)件或者用于對(duì)記錄進(jìn)行存檔。
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ù)。在括號(hào)內(nèi)規(guī)定數(shù)字的最大位數(shù)。 |
| decimal(size,d)numeric(size,d) | 容納帶有小數(shù)的數(shù)字。"size" 規(guī)定數(shù)字的最大位數(shù)。"d" 規(guī)定小數(shù)點(diǎn)右側(cè)的最大位數(shù)。 |
| char(size) | 容納固定長度的字符串(可容納字母、數(shù)字以及特殊字符)。在括號(hào)中規(guī)定字符串的長度。 |
| varchar(size) | 容納可變長度的字符串(可容納字母、數(shù)字以及特殊的字符)。在括號(hào)中規(guī)定字符串的最大長度。 |
| date(yyyymmdd) | 容納日期。 |
SQL 約束 (Constraints)
SQL 約束
約束用于限制加入表的數(shù)據(jù)的類型。
可以在創(chuàng)建表時(shí)規(guī)定約束(通過 CREATE TABLE 語句),或者在表創(chuàng)建之后也可以(通過 ALTER TABLE 語句)。
我們將主要探討以下幾種約束:
- NOT NULL
- UNIQUE
- PRIMARY KEY
- FOREIGN KEY
- CHECK
- DEFAULT
SQL NOT NULL 約束
SQL NOT NULL 約束
NOT NULL 約束強(qiáng)制列不接受 NULL 值。
NOT NULL 約束強(qiáng)制字段始終包含值。這意味著,如果不向字段添加值,就無法插入新記錄或者更新記錄。
下面的 SQL 語句強(qiáng)制 "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 約束唯一標(biāo)識(shí)數(shù)據(jù)庫表中的每條記錄。
UNIQUE 和 PRIMARY KEY 約束均為列或列集合提供了唯一性的保證。
PRIMARY KEY 擁有自動(dòng)定義的 UNIQUE 約束。
請(qǐng)注意,每個(gè)表可以有多個(gè) UNIQUE 約束,但是每個(gè)表只能有一個(gè) PRIMARY KEY 約束。
SQL PRIMARY KEY 約束
SQL PRIMARY KEY 約束
PRIMARY KEY 約束唯一標(biāo)識(shí)數(shù)據(jù)庫表中的每條記錄。
主鍵必須包含唯一的值。
主鍵列不能包含 NULL 值。
每個(gè)表都應(yīng)該有一個(gè)主鍵,并且每個(gè)表只能有一個(gè)主鍵。
SQL FOREIGN KEY 約束
SQL FOREIGN KEY 約束
一個(gè)表中的 FOREIGN KEY 指向另一個(gè)表中的 PRIMARY KEY。
讓我們通過一個(gè)例子來解釋外鍵。請(qǐng)看下面兩個(gè)表:
"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 |
請(qǐng)注意,"Orders" 中的 "Id_P" 列指向 "Persons" 表中的 "Id_P" 列。
"Persons" 表中的 "Id_P" 列是 "Persons" 表中的 PRIMARY KEY。
"Orders" 表中的 "Id_P" 列是 "Orders" 表中的 FOREIGN KEY。
FOREIGN KEY 約束用于預(yù)防破壞表之間連接的動(dòng)作。
FOREIGN KEY 約束也能防止非法數(shù)據(jù)插入外鍵列,因?yàn)樗仨毷撬赶虻哪莻€(gè)表中的值之一。
SQL CHECK 約束
SQL CHECK 約束
CHECK 約束用于限制列中的值的范圍。
如果對(duì)單個(gè)列定義 CHECK 約束,那么該列只允許特定的值。
如果對(duì)一個(gè)表定義 CHECK 約束,那么此約束會(huì)在特定的列中對(duì)值進(jìn)行限制。
SQL DEFAULT 約束
SQL DEFAULT 約束
DEFAULT 約束用于向列中插入默認(rèn)值。
如果沒有規(guī)定其他的值,那么會(huì)將默認(rèn)值添加到所有的新記錄。
SQL DEFAULT Constraint on CREATE TABLE
下面的 SQL 在 "Persons" 表創(chuàng)建時(shí)為 "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)建索引。
在不讀取整個(gè)表的情況下,索引使數(shù)據(jù)庫應(yīng)用程序可以更快地查找數(shù)據(jù)。
索引
您可以在表中創(chuàng)建索引,以便更加快速高效地查詢數(shù)據(jù)。
用戶無法看到索引,它們只能被用來加速搜索/查詢。
注釋:更新一個(gè)包含索引的表需要比更新一個(gè)沒有索引的表更多的時(shí)間,這是由于索引本身也需要更新。因此,理想的做法是僅僅在常常被搜索的列(以及表)上面創(chuàng)建索引。
SQL CREATE INDEX 語法
在表上創(chuàng)建一個(gè)簡單的索引。允許使用重復(fù)的值:
CREATE INDEX index_name
ON table_name (column_name)
注釋:"column_name" 規(guī)定需要索引的列。
SQL CREATE UNIQUE INDEX 語法
在表上創(chuàng)建一個(gè)唯一的索引。唯一的索引意味著兩個(gè)行不能擁有相同的索引值。
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 語法
如需在表中添加列,請(qǐng)使用下列語法:
ALTER TABLE table_name
ADD column_name datatype
要?jiǎng)h除表中的列,請(qǐng)使用下列語法:
ALTER TABLE table_name
DROP COLUMN column_name
注釋:某些數(shù)據(jù)庫系統(tǒng)不允許這種在數(shù)據(jù)庫表中刪除列的方式 (DROP COLUMN column_name)。
要改變表中列的數(shù)據(jù)類型,請(qǐng)使用下列語法:
ALTER TABLE table_name
ALTER COLUMN column_name datatype
SQL AUTO INCREMENT
Auto-increment 會(huì)在新記錄插入表中時(shí)生成一個(gè)唯一的數(shù)字。
AUTO INCREMENT 字段
我們通常希望在每次插入新記錄時(shí),自動(dòng)地創(chuàng)建主鍵字段的值。
我們可以在表中創(chuàng)建一個(gè) auto-increment 字段。
SQL VIEW
視圖是可視化的表。
本章講解如何創(chuàng)建、更新和刪除視圖。
SQL CREATE VIEW 語句
什么是視圖?
在 SQL 中,視圖是基于 SQL 語句的結(jié)果集的可視化的表。
視圖包含行和列,就像一個(gè)真實(shí)的表。視圖中的字段就是來自一個(gè)或多個(gè)數(shù)據(jù)庫中的真實(shí)的表中的字段。我們可以向視圖添加 SQL 函數(shù)、WHERE 以及 JOIN 語句,我們也可以提交數(shù)據(jù),就像這些來自于某個(gè)單一的表。
注釋:數(shù)據(jù)庫的設(shè)計(jì)和結(jié)構(gòu)不會(huì)受到視圖中的函數(shù)、where 或 join 語句的影響。
SQL Date
SQL 日期
當(dāng)我們處理日期時(shí),最難的任務(wù)恐怕是確保所插入的日期的格式,與數(shù)據(jù)庫中日期列的格式相匹配。
只要數(shù)據(jù)包含的只是日期部分,運(yùn)行查詢就不會(huì)出問題。但是,如果涉及時(shí)間,情況就有點(diǎn)復(fù)雜了。
在討論日期查詢的復(fù)雜性之前,我們先來看看最重要的內(nèi)建日期處理函數(shù)。
MySQL Date 函數(shù)
下面的表格列出了 MySQL 中最重要的內(nèi)建日期函數(shù):
| 函數(shù) | 描述 |
|---|---|
| NOW() | 返回當(dāng)前的日期和時(shí)間 |
| CURDATE() | 返回當(dāng)前的日期 |
| CURTIME() | 返回當(dāng)前的時(shí)間 |
| DATE() | 提取日期或日期/時(shí)間表達(dá)式的日期部分 |
| EXTRACT() | 返回日期/時(shí)間按的單獨(dú)部分 |
| DATE_ADD() | 給日期添加指定的時(shí)間間隔 |
| DATE_SUB() | 從日期減去指定的時(shí)間間隔 |
| DATEDIFF() | 返回兩個(gè)日期之間的天數(shù) |
| DATE_FORMAT() | 用不同的格式顯示日期/時(shí)間 |
SQL Server Date 函數(shù)
下面的表格列出了 SQL Server 中最重要的內(nèi)建日期函數(shù):
| 函數(shù) | 描述 |
|---|---|
| GETDATE() | 返回當(dāng)前日期和時(shí)間 |
| DATEPART() | 返回日期/時(shí)間的單獨(dú)部分 |
| DATEADD() | 在日期中添加或減去指定的時(shí)間間隔 |
| DATEDIFF() | 返回兩個(gè)日期之間的時(shí)間 |
| CONVERT() | 用不同的格式顯示日期/時(shí)間 |
SQL Date 數(shù)據(jù)類型
MySQL 使用下列數(shù)據(jù)類型在數(shù)據(jù)庫中存儲(chǔ)日期或日期/時(shí)間值:
- 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ù)庫中存儲(chǔ)日期或日期/時(shí)間值:
- DATE - 格式 YYYY-MM-DD
- DATETIME - 格式: YYYY-MM-DD HH:MM:SS
- SMALLDATETIME - 格式: YYYY-MM-DD HH:MM:SS
- TIMESTAMP - 格式: 唯一的數(shù)字
SQL 日期處理
如果不涉及時(shí)間部分,那么我們可以輕松地比較兩個(gè)日期!
假設(shè)我們有下面這個(gè) "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" 類似這樣(請(qǐng)注意 "OrderDate" 列中的時(shí)間部分):
| 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é)果。這是由于該查詢不含有時(shí)間部分的日期。
SQL NULL
NULL 值是遺漏的未知數(shù)據(jù)。
默認(rèn)地,表的列可以存放 NULL 值。
本章講解 IS NULL 和 IS NOT NULL 操作符。
SQL NULL
MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點(diǎn)不同。
在 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ù)有點(diǎn)不同。
在 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ù)有點(diǎn)不同。
在 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ù)類型 | 描述 | 存儲(chǔ) |
|---|---|---|
| Text | 用于文本或文本與數(shù)字的組合。最多 255 個(gè)字符。 | |
| Memo | Memo 用于更大數(shù)量的文本。最多存儲(chǔ) 65,536 個(gè)字符。注釋:無法對(duì) memo 字段進(jìn)行排序。不過它們是可搜索的。 | |
| 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 | 單精度浮點(diǎn)。處理大多數(shù)小數(shù)。 | 4 字節(jié) |
| Double | 雙精度浮點(diǎn)。處理大多數(shù)小數(shù)。 | 8 字節(jié) |
| Currency | 用于貨幣。支持 15 位的元,外加 4 位小數(shù)。提示:您可以選擇使用哪個(gè)國家的貨幣。 | 8 字節(jié) |
| AutoNumber | AutoNumber 字段自動(dòng)為每條記錄分配數(shù)字,通常從 1 開始。 | 4 字節(jié) |
| Date/Time | 用于日期和時(shí)間 | 8 字節(jié) |
| Yes/No | 邏輯字段,可以顯示為 Yes/No、True/False 或 On/Off。在代碼中,使用常量 True 和 False (等價(jià)于 1 和 0)注釋:Yes/No 字段中不允許 Null 值 | 1 比特 |
| Ole Object | 可以存儲(chǔ)圖片、音頻、視頻或其他 BLOBs (Binary Large OBjects) | 最多 1GB |
| Hyperlink | 包含指向其他文件的鏈接,包括網(wǎng)頁。 | |
| Lookup Wizard | 允許你創(chuàng)建一個(gè)可從下列列表中進(jìn)行選擇的選項(xiàng)列表。 | 4 字節(jié) |
MySQL 數(shù)據(jù)類型
在 MySQL 中,有三種主要的類型:文本、數(shù)字和日期/時(shí)間類型。
Text 類型:
| 數(shù)據(jù)類型 | 描述 |
|---|---|
| CHAR(size) | 保存固定長度的字符串(可包含字母、數(shù)字以及特殊字符)。在括號(hào)中指定字符串的長度。最多 255 個(gè)字符。 |
| VARCHAR(size) | 保存可變長度的字符串(可包含字母、數(shù)字以及特殊字符)。在括號(hào)中指定字符串的最大長度。最多 255 個(gè)字符。注釋:如果值的長度大于 255,則被轉(zhuǎn)換為 TEXT 類型。 |
| TINYTEXT | 存放最大長度為 255 個(gè)字符的字符串。 |
| TEXT | 存放最大長度為 65,535 個(gè)字符的字符串。 |
| BLOB | 用于 BLOBs (Binary Large OBjects)。存放最多 65,535 字節(jié)的數(shù)據(jù)。 |
| MEDIUMTEXT | 存放最大長度為 16,777,215 個(gè)字符的字符串。 |
| MEDIUMBLOB | 用于 BLOBs (Binary Large OBjects)。存放最多 16,777,215 字節(jié)的數(shù)據(jù)。 |
| LONGTEXT | 存放最大長度為 4,294,967,295 個(gè)字符的字符串。 |
| LONGBLOB | 用于 BLOBs (Binary Large OBjects)。存放最多 4,294,967,295 字節(jié)的數(shù)據(jù)。 |
| ENUM(x,y,z,etc.) | 允許你輸入可能值的列表??梢栽?ENUM 列表中列出最大 65535 個(gè)值。如果列表中不存在插入的值,則插入空值。注釋:這些值是按照你輸入的順序存儲(chǔ)的??梢园凑沾烁袷捷斎肟赡艿闹担篍NUM('X','Y','Z') |
| SET | 與 ENUM 類似,SET 最多只能包含 64 個(gè)列表項(xiàng),不過 SET 可存儲(chǔ)一個(gè)以上的值。 |
Number 類型:
| 數(shù)據(jù)類型 | 描述 |
|---|---|
| TINYINT(size) | -128 到 127 常規(guī)。0 到 255 無符號(hào)*。在括號(hào)中規(guī)定最大位數(shù)。 |
| SMALLINT(size) | -32768 到 32767 常規(guī)。0 到 65535 無符號(hào)*。在括號(hào)中規(guī)定最大位數(shù)。 |
| MEDIUMINT(size) | -8388608 到 8388607 普通。0 to 16777215 無符號(hào)*。在括號(hào)中規(guī)定最大位數(shù)。 |
| INT(size) | -2147483648 到 2147483647 常規(guī)。0 到 4294967295 無符號(hào)*。在括號(hào)中規(guī)定最大位數(shù)。 |
| BIGINT(size) | -9223372036854775808 到 9223372036854775807 常規(guī)。0 到 18446744073709551615 無符號(hào)*。在括號(hào)中規(guī)定最大位數(shù)。 |
| FLOAT(size,d) | 帶有浮動(dòng)小數(shù)點(diǎn)的小數(shù)字。在括號(hào)中規(guī)定最大位數(shù)。在 d 參數(shù)中規(guī)定小數(shù)點(diǎn)右側(cè)的最大位數(shù)。 |
| DOUBLE(size,d) | 帶有浮動(dòng)小數(shù)點(diǎn)的大數(shù)字。在括號(hào)中規(guī)定最大位數(shù)。在 d 參數(shù)中規(guī)定小數(shù)點(diǎn)右側(cè)的最大位數(shù)。 |
| DECIMAL(size,d) | 作為字符串存儲(chǔ)的 DOUBLE 類型,允許固定的小數(shù)點(diǎn)。 |
* 這些整數(shù)類型擁有額外的選項(xiàng) UNSIGNED。通常,整數(shù)可以是負(fù)數(shù)或正數(shù)。如果添加 UNSIGNED 屬性,那么范圍將從 0 開始,而不是某個(gè)負(fù)數(shù)。
Date 類型:
| 數(shù)據(jù)類型 | 描述 |
|---|---|
| DATE() | 日期。格式:YYYY-MM-DD注釋:支持的范圍是從 '1000-01-01' 到 '9999-12-31' |
| DATETIME() | *日期和時(shí)間的組合。格式:YYYY-MM-DD HH:MM:SS注釋:支持的范圍是從 '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59' |
| TIMESTAMP() | *時(shí)間戳。TIMESTAMP 值使用 Unix 紀(jì)元('1970-01-01 00:00:00' UTC) 至今的描述來存儲(chǔ)。格式:YYYY-MM-DD HH:MM:SS注釋:支持的范圍是從 '1970-01-01 00:00:01' UTC 到 '2038-01-09 03:14:07' UTC |
| TIME() | 時(shí)間。格式: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 自動(dòng)把自身設(shè)置為當(dāng)前的日期和時(shí)間。TIMESTAMP 也接受不同的格式,比如 YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD 或 YYMMDD。
SQL Server 數(shù)據(jù)類型
Character 字符串:
| 數(shù)據(jù)類型 | 描述 | 存儲(chǔ) |
|---|---|---|
| char(n) | 固定長度的字符串。最多 8,000 個(gè)字符。 | n |
| varchar(n) | 可變長度的字符串。最多 8,000 個(gè)字符。 | |
| varchar(max) | 可變長度的字符串。最多 1,073,741,824 個(gè)字符。 | |
| text | 可變長度的字符串。最多 2GB 字符數(shù)據(jù)。 |
Unicode 字符串:
| 數(shù)據(jù)類型 | 描述 | 存儲(chǔ) |
|---|---|---|
| nchar(n) | 固定長度的 Unicode 數(shù)據(jù)。最多 4,000 個(gè)字符。 | |
| nvarchar(n) | 可變長度的 Unicode 數(shù)據(jù)。最多 4,000 個(gè)字符。 | |
| nvarchar(max) | 可變長度的 Unicode 數(shù)據(jù)。最多 536,870,912 個(gè)字符。 | |
| ntext | 可變長度的 Unicode 數(shù)據(jù)。最多 2GB 字符數(shù)據(jù)。 |
Binary 類型:
| 數(shù)據(jù)類型 | 描述 | 存儲(chǔ) |
|---|---|---|
| bit | 允許 0、1 或 NULL | |
| binary(n) | 固定長度的二進(jìn)制數(shù)據(jù)。最多 8,000 字節(jié)。 | |
| varbinary(n) | 可變長度的二進(jìn)制數(shù)據(jù)。最多 8,000 字節(jié)。 | |
| varbinary(max) | 可變長度的二進(jìn)制數(shù)據(jù)。最多 2GB 字節(jié)。 | |
| image | 可變長度的二進(jìn)制數(shù)據(jù)。最多 2GB。 |
Number 類型:
| 數(shù)據(jù)類型 | 描述 | 存儲(chǔ) |
|---|---|---|
| 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ù)指示可以存儲(chǔ)的最大位數(shù)(小數(shù)點(diǎn)左側(cè)和右側(cè))。p 必須是 1 到 38 之間的值。默認(rèn)是 18。s 參數(shù)指示小數(shù)點(diǎn)右側(cè)存儲(chǔ)的最大位數(shù)。s 必須是 0 到 p 之間的值。默認(rèn)是 0。 | 5-17 字節(jié) |
| numeric(p,s) | 固定精度和比例的數(shù)字。允許從 -10^38 +1 到 10^38 -1 之間的數(shù)字。p 參數(shù)指示可以存儲(chǔ)的最大位數(shù)(小數(shù)點(diǎn)左側(cè)和右側(cè))。p 必須是 1 到 38 之間的值。默認(rèn)是 18。s 參數(shù)指示小數(shù)點(diǎn)右側(cè)存儲(chǔ)的最大位數(shù)。s 必須是 0 到 p 之間的值。默認(rèn)是 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 的浮動(dòng)精度數(shù)字?jǐn)?shù)據(jù)。 參數(shù) n 指示該字段保存 4 字節(jié)還是 8 字節(jié)。float(24) 保存 4 字節(jié),而 float(53) 保存 8 字節(jié)。n 的默認(rèn)值是 53。 | 4 或 8 字節(jié) |
| real | 從 -3.40E + 38 到 3.40E + 38 的浮動(dòng)精度數(shù)字?jǐn)?shù)據(jù)。 | 4 字節(jié) |
Date 類型:
| 數(shù)據(jù)類型 | 描述 | 存儲(chǔ) |
|---|---|---|
| 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 | 僅存儲(chǔ)日期。從 0001 年 1 月 1 日 到 9999 年 12 月 31 日。 | 3 bytes |
| time | 僅存儲(chǔ)時(shí)間。精度為 100 納秒。 | 3-5 bytes |
| datetimeoffset | 與 datetime2 相同,外加時(shí)區(qū)偏移。 | 8-10 bytes |
| timestamp | 存儲(chǔ)唯一的數(shù)字,每當(dāng)創(chuàng)建或修改某行時(shí),該數(shù)字會(huì)更新。timestamp 基于內(nèi)部時(shí)鐘,不對(duì)應(yīng)真實(shí)時(shí)間。每個(gè)表只能有一個(gè) timestamp 變量。 |
其他數(shù)據(jù)類型:
| 數(shù)據(jù)類型 | 描述 |
|---|---|
| sql_variant | 存儲(chǔ)最多 8,000 字節(jié)不同數(shù)據(jù)類型的數(shù)據(jù),除了 text、ntext 以及 timestamp。 |
| uniqueidentifier | 存儲(chǔ)全局標(biāo)識(shí)符 (GUID)。 |
| xml | 存儲(chǔ) XML 格式化數(shù)據(jù)。最多 2GB。 |
| cursor | 存儲(chǔ)對(duì)用于數(shù)據(jù)庫操作的指針的引用。 |
| table | 存儲(chǔ)結(jié)果集,供稍后處理。 |
MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點(diǎn)不同。
在 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ù)有點(diǎn)不同。
在 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ù)的計(jì)算機(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 世紀(jì) 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ù)有點(diǎn)不同。
在 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ù)有點(diǎn)不同。
在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:
SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products
或者我們可以使用 COALESCE() 函數(shù),就像這樣:
SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products
?
SQL 擁有很多可用于計(jì)數(shù)和計(jì)算的內(nèi)建函數(shù)。
函數(shù)的語法
內(nèi)建 SQL 函數(shù)的語法是:
SELECT function(列) FROM 表
函數(shù)的類型
在 SQL 中,基本的函數(shù)類型和種類有若干種。函數(shù)的基本類型是:
- Aggregate 函數(shù)
- Scalar 函數(shù)
合計(jì)函數(shù)(Aggregate functions)
Aggregate 函數(shù)的操作面向一系列的值,并返回一個(gè)單一的值。
注釋:如果在 SELECT 語句的項(xiàng)目列表中的眾多其它表達(dá)式中使用 SELECT 語句,則這個(gè) SELECT 必須使用 GROUP BY 語句!
"Persons" table (在大部分的例子中使用過)
| Name | Age |
|---|---|
| Adams, John | 38 |
| Bush, George | 33 |
| Carter, Thomas | 28 |
MS Access 中的合計(jì)函數(shù)
| 函數(shù) | 描述 |
|---|---|
| AVG(column) | 返回某列的平均值 |
| COUNT(column) | 返回某列的行數(shù)(不包括 NULL 值) |
| COUNT(*) | 返回被選行數(shù) |
| FIRST(column) | 返回在指定的域中第一個(gè)記錄的值 |
| LAST(column) | 返回在指定的域中最后一個(gè)記錄的值 |
| MAX(column) | 返回某列的最高值 |
| MIN(column) | 返回某列的最低值 |
| STDEV(column) | |
| STDEVP(column) | |
| SUM(column) | 返回某列的總和 |
| VAR(column) | |
| VARP(column) |
在 SQL Server 中的合計(jì)函數(shù)
| 函數(shù) | 描述 |
|---|---|
| AVG(column) | 返回某列的平均值 |
| BINARY_CHECKSUM | |
| CHECKSUM | |
| CHECKSUM_AGG | |
| COUNT(column) | 返回某列的行數(shù)(不包括NULL值) |
| COUNT(*) | 返回被選行數(shù) |
| COUNT(DISTINCT column) | 返回相異結(jié)果的數(shù)目 |
| FIRST(column) | 返回在指定的域中第一個(gè)記錄的值(SQLServer2000 不支持) |
| LAST(column) | 返回在指定的域中最后一個(gè)記錄的值(SQLServer2000 不支持) |
| MAX(column) | 返回某列的最高值 |
| MIN(column) | 返回某列的最低值 |
| STDEV(column) | |
| STDEVP(column) | |
| SUM(column) | 返回某列的總和 |
| VAR(column) | |
| VARP(column) |
Scalar 函數(shù)
Scalar 函數(shù)的操作面向某個(gè)單一的值,并返回基于輸入值的一個(gè)單一的值。
MS Access 中的 Scalar 函數(shù)
| 函數(shù) | 描述 |
|---|---|
| UCASE(c) | 將某個(gè)域轉(zhuǎn)換為大寫 |
| LCASE(c) | 將某個(gè)域轉(zhuǎn)換為小寫 |
| MID(c,start[,end]) | 從某個(gè)文本域提取字符 |
| LEN(c) | 返回某個(gè)文本域的長度 |
| INSTR(c,char) | 返回在某個(gè)文本域中指定字符的數(shù)值位置 |
| LEFT(c,number_of_char) | 返回某個(gè)被請(qǐng)求的文本域的左側(cè)部分 |
| RIGHT(c,number_of_char) | 返回某個(gè)被請(qǐng)求的文本域的右側(cè)部分 |
| ROUND(c,decimals) | 對(duì)某個(gè)數(shù)值域進(jìn)行指定小數(shù)位數(shù)的四舍五入 |
| MOD(x,y) | 返回除法操作的余數(shù) |
| NOW() | 返回當(dāng)前的系統(tǒng)日期 |
| FORMAT(c,format) | 改變某個(gè)域的顯示方式 |
| DATEDIFF(d,date1,date2) | 用于執(zhí)行日期計(jì)算 |
MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點(diǎn)不同。
在 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ù)有點(diǎn)不同。
在 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ù)返回?cái)?shù)值列的平均值。NULL 值不包括在計(jì)算中。
SQL AVG() 語法
SELECT AVG(column_name) FROM table_name
MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點(diǎn)不同。
在 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ù)有點(diǎn)不同。
在 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 不計(jì)入):
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ù)有點(diǎn)不同。
在 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ù)有點(diǎn)不同。
在 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ù)返回指定的字段中第一個(gè)記錄的值。
提示:可使用 ORDER BY 語句對(duì)記錄進(jìn)行排序。
SQL FIRST() 語法
SELECT FIRST(column_name) FROM table_name
MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點(diǎn)不同。
在 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ù)有點(diǎn)不同。
在 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ù)返回指定的字段中最后一個(gè)記錄的值。
提示:可使用 ORDER BY 語句對(duì)記錄進(jìn)行排序。
SQL LAST() 語法
SELECT LAST(column_name) FROM table_name
MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點(diǎn)不同。
在 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ù)有點(diǎn)不同。
在 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 值不包括在計(jì)算中。
SQL MAX() 語法
SELECT MAX(column_name) FROM table_name
注釋:MIN 和 MAX 也可用于文本列,以獲得按字母順序排列的最高或最低值。
MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點(diǎn)不同。
在 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ù)有點(diǎn)不同。
在 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 值不包括在計(jì)算中。
SQL MIN() 語法
SELECT MIN(column_name) FROM table_name
注釋:MIN 和 MAX 也可用于文本列,以獲得按字母順序排列的最高或最低值。
MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點(diǎn)不同。
在 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ù)有點(diǎn)不同。
在 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ù)返回?cái)?shù)值列的總數(shù)(總額)。
SQL SUM() 語法
SELECT SUM(column_name) FROM table_name
MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點(diǎn)不同。
在 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ù)有點(diǎn)不同。
在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:
SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products
或者我們可以使用 COALESCE() 函數(shù),就像這樣:
SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products
?
合計(jì)函數(shù) (比如 SUM) 常常需要添加 GROUP BY 語句。
GROUP BY 語句
GROUP BY 語句用于結(jié)合合計(jì)函數(shù),根據(jù)一個(gè)或多個(gè)列對(duì)結(jié)果集進(jìn)行分組。
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ù)有點(diǎn)不同。
在 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ù)有點(diǎn)不同。
在 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)鍵字無法與合計(jì)函數(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ù)有點(diǎn)不同。
在 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ù)有點(diǎn)不同。
在 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ù)有點(diǎn)不同。
在 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ù)有點(diǎn)不同。
在 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ù)有點(diǎn)不同。
在 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ù)有點(diǎn)不同。
在 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ù)有點(diǎn)不同。
在 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ù)有點(diǎn)不同。
在 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ù)有點(diǎn)不同。
在 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ù)有點(diǎn)不同。
在 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ù)有點(diǎn)不同。
在 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ù)有點(diǎn)不同。
在 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)前的日期和時(shí)間。
提示:如果您在使用 Sql Server 數(shù)據(jù)庫,請(qǐng)使用 getdate() 函數(shù)來獲得當(dāng)前的日期時(shí)間。
SQL NOW() 語法
SELECT NOW() FROM table_name
MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點(diǎn)不同。
在 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ù)有點(diǎn)不同。
在 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ù)用于對(duì)字段的顯示進(jìn)行格式化。
SQL FORMAT() 語法
SELECT FORMAT(column_name,format) FROM table_name
| 參數(shù) | 描述 |
|---|---|
| column_name | 必需。要格式化的字段。 |
| format | 必需。規(guī)定格式。 |
MySQL 也擁有類似 ISNULL() 的函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點(diǎn)不同。
在 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ù)有點(diǎn)不同。
在 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ù)有點(diǎn)不同。
在 MySQL 中,我們可以使用 IFNULL() 函數(shù),就像這樣:
SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products
或者我們可以使用 COALESCE() 函數(shù),就像這樣:
SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products