SQL Date(日期) 函數
MySQL Date 函數
下表為 MySQL 中最重要的內建日期函數
SQL Server Date 函數
下表列出了 SQL Server 中最重要的內建日期函數
SQL Date 數據類型
MySQL 使用下列數據類型在數據庫中存儲日期或日期/時間值:
DATE - 格式 YYYY-MM-DD
DATETIME - 格式: YYYY-MM-DD HH:MM:SS
TIMESTAMP - 格式: YYYY-MM-DD HH:MM:SS
時間戳(timestamp),一個能表示一份數據在某個特定時間之前已經存在的、 完整的、 可驗證的數據,通常是一個字符序列,唯一地標識某一刻的時間。
YEAR - 格式 YYYY 或 YY
SQL Server 使用下列數據類型在數據庫中存儲日期或日期/時間值:
DATE - 格式 YYYY-MM-DD
DATETIME - 格式: YYYY-MM-DD HH:MM:SS
SMALLDATETIME - 格式: YYYY-MM-DD HH:MM:SS
TIMESTAMP - 格式: 唯一的數字
* smalldatetime 和 datetime 的區別
smalldatetime不能到秒.
不過它占的空間小(4位),datetime(8位);而且兩者的時間范圍不一樣,datetime占8字節,精度3.33毫秒,時間從1753.1.1到9999.12.31,smalldatetime占4字節,精度1分鐘,時間從1900.1.1到2079.6.6
SQL 日期處理
從上表 Orders 中,篩選時間在 2008-12-26的數據
SELECT * FROM Orders WHERE OrderDate='2008-12-26'
提示:如果希望使查詢簡單且更易維護,那么就不要在日期中使用時間部分
SQL NULL 值
NULL 值是遺漏的未知數據。默認地,表的列可以存放 NULL 值。
如果表中的某個列是可選的,那么我們可以在不向該列添加值的情況下插入新記錄或更新已有的記錄。這意味著該字段將以 NULL 值保存。
* NULL 和 0 的區別
NULL表示指針為空的宏,0是沒有任何特殊含義的值。也就是說,理論上來講NULL可以是任意數值,雖然目前所有編譯器都將其設為0。
*空指針值,一般的文檔中傾向于用 NULL 表示,而沒有直接說成 0。但是我們應該清楚:對于指針類型來說,返回 NULL 和 返回 0 是完全等價的,因為 NULL 和 0 都表示 “null pointer”(空指針)。因此,空指針是什么,就是一個被賦值為0的指針,在沒有被具體初始化之前,其值為0。
SQL IS NULL
eg.在下表中,列出"Address" 列中帶有 NULL 值的記錄
SELECT Lastname,Firtsname,Address FROM Persons?
WHERE Address IS NULL
SQL IS NOT NULL
列出"Address" 列中沒有 NULL 值的記錄
SELECT Lastname,Firtsname,Address FROM Persons
WHERE Address IS NOT NULL
SQL ISNULL()、NVL()、IFNULL() 和 COALESCE() 函數
假如 "UnitsOnOrder" 是可選的,而且可以包含 NULL 值。
SELECT ProductName,UnitPrice*(UnitsInStock+UnitsOnOrder)?
FROM Products
注釋: 單價 * 乘以 (庫存 + 訂購量)
在上面的例子中,如果有 "UnitsOnOrder" 值是 NULL,那么結果是 NULL。
微軟的 ISNULL() 函數用于規定如何處理 NULL 值。
NVL(), IFNULL() 和 COALESCE() 函數也可以達到相同的結果。
在這里,我們希望 NULL 值為 0。如果 "UnitsOnOrder" 是 NULL,則不利于計算,因此如果值是 NULL 則 ISNULL() 返回 0。
SQL Server / MS Access
SELECT ProductName,UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0))
FROM Products
Oracle
Oracle 沒有 ISNULL() 函數。可以使用 NVL() 函數達到相同的結果
SELECT ProductName,UnitPrice*(UnitsInStock+NVL(UnitsOnOrder,0))
FROM Products
注釋:NVL(字段名,'判斷字段如果為空的話這里填你想要替換的值')
MySQL
SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products
或者使用 COALESCE() 函數:
SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products
注釋:COALESCE是一個函數, (expression_1, expression_2, ...,expression_n)依次參考各參數表達式,遇到非null值即停止并返回該值。如果所有的表達式都是空值,最終將返回一個空值。使用COALESCE在于大部分包含空值的表達式最終將返回空值。
SQL 數據類型
Microsoft Access 數據類型
MySQL 數據類型
在 MySQL 中,有三種主要的類型:文本、數字和日期/時間類型。
UTC :協調世界時
SQL Server 數據類型(省略)
SQL 服務器 - RDBMS
DBMS - 數據庫管理系統(Database Management System)。
數據庫管理系統是一種可以訪問數據庫中數據的計算機程序。DBMS 使我們有能力在數據庫中提取、修改或者存貯信息。不同的 DBMS 提供不同的函數供查詢、提交以及修改數據。
RDBMS - 關系數據庫管理系統(Relational Database Management System)
關系數據庫管理系統 (RDBMS) 也是一種數據庫管理系統,其數據庫是根據數據間的關系來組織和訪問數據的。20 世紀 70 年代初,IBM 公司發明了 RDBMS。RDBMS 是 SQL 的基礎,也是所有現代數據庫系統諸如 Oracle、SQL Server、IBM DB2、Sybase、MySQL 以及 Microsoft Access 的基礎。
好像很重要的一部分要來啦!??(???)
SQL 函數
內建 SQL 函數的語法:SELECT function(列) FROM 表
在 SQL 中,基本的函數類型和種類有若干種。函數的基本類型是:Aggregate 函數 (合計函數) 和 Scalar 函數(單一函數)
合計函數(Aggregate functions)
Aggregate 函數的操作面向一系列的值,并返回一個單一的值。
注釋:如果在 SELECT 語句的項目列表中的眾多其它表達式中使用 SELECT 語句,則這個 SELECT 必須使用 GROUP BY 語句
Scalar 函數
Scalar 函數的操作面向某個單一的值,并返回基于輸入值的一個單一的值。