网站前期建设,建设网站的网站江苏,网站建设工作目标,成都网站推广技巧上篇#xff1a;SQL零基础入门学习#xff08;十三#xff09;
SQL NULL 值
NULL 值代表遗漏的未知数据。 默认地#xff0c;表的列可以存放 NULL 值。 如果表中的某个列是可选的#xff0c;那么我们可以在不向该列添加值的情况下插入新记录或更新已有的记录。这意味着该…上篇SQL零基础入门学习十三
SQL NULL 值
NULL 值代表遗漏的未知数据。 默认地表的列可以存放 NULL 值。 如果表中的某个列是可选的那么我们可以在不向该列添加值的情况下插入新记录或更新已有的记录。这意味着该字段将以 NULL 值保存。 NULL 值的处理方式与其他值不同。 NULL 用作未知的或不适用的值的占位符。 Note注释无法比较 NULL 和 0它们是不等价的。
SQL 的 NULL 值处理
请看下面的 “Persons” 表 假如 “Persons” 表中的 “Address” 列是可选的。这意味着如果在 “Address” 列插入一条不带值的记录“Address” 列会使用 NULL 值保存。 那么我们如何测试 NULL 值呢 无法使用比较运算符来测试 NULL 值比如 、 或 。 我们必须使用 IS NULL 和 IS NOT NULL 操作符。
SQL IS NULL
我们如何仅仅选取在 “Address” 列中带有 NULL 值的记录呢
我们必须使用 IS NULL 操作符
SELECT LastName,FirstName,Address FROM Persons
WHERE Address IS NULL结果集如下所示 提示请始终使用 IS NULL 来查找 NULL 值。
SQL IS NOT NULL
我们如何仅仅选取在 “Address” 列中不带有 NULL 值的记录呢 我们必须使用 IS NOT NULL 操作符
SELECT LastName,FirstName,Address FROM Persons
WHERE Address IS NOT NULL结果集如下所示
SQL NULL 函数
SQL ISNULL()、NVL()、IFNULL() 和 COALESCE() 函数
请看下面的 “Products” 表 假如 “UnitsOnOrder” 是可选的而且可以包含 NULL 值。 我们使用下面的 SELECT 语句
SELECT ProductName,UnitPrice*(UnitsInStockUnitsOnOrder)
FROM Products在上面的实例中如果有 “UnitsOnOrder” 值是 NULL那么结果是 NULL。 微软的 ISNULL() 函数用于规定如何处理 NULL 值。 NVL()、IFNULL() 和 COALESCE() 函数也可以达到相同的结果。 在这里我们希望 NULL 值为 0。 下面如果 “UnitsOnOrder” 是 NULL则不会影响计算因为如果值是 NULL 则 ISNULL() 返回 0 SQL Server / MS Access
SELECT ProductName,UnitPrice*(UnitsInStockISNULL(UnitsOnOrder,0))
FROM ProductsOracle Oracle 没有 ISNULL() 函数。不过我们可以使用 NVL() 函数达到相同的结果
SELECT ProductName,UnitPrice*(UnitsInStockNVL(UnitsOnOrder,0))
FROM ProductsMySQL MySQL 也拥有类似 ISNULL() 的函数。不过它的工作方式与微软的 ISNULL() 函数有点不同。 在 MySQL 中我们可以使用 IFNULL() 函数如下所示
SELECT ProductName,UnitPrice*(UnitsInStockIFNULL(UnitsOnOrder,0))
FROM Products或者我们可以使用 COALESCE() 函数如下所示
SELECT ProductName,UnitPrice*(UnitsInStockCOALESCE(UnitsOnOrder,0))
FROM ProductsSQL 通用数据类型
数据库表中的每个列都要求有名称和数据类型。Each column in a database table is required to have a name and a data type.
SQL 开发人员必须在创建 SQL 表时决定表中的每个列将要存储的数据的类型。数据类型是一个标签是便于 SQL 了解每个列期望存储什么类型的数据的指南它也标识了 SQL 如何与存储的数据进行交互。
下面的表格列出了 SQL 中通用的数据类型
SQL 数据类型快速参考手册
然而不同的数据库对数据类型定义提供不同的选择。
下面的表格显示了各种不同的数据库平台上一些数据类型的通用名称 注释在不同的数据库中同一种数据类型可能有不同的名称。即使名称相同尺寸和其他细节也可能不同 请总是检查文档
SQL 用于各种数据库的数据类型
Microsoft Access、MySQL 和 SQL Server 所使用的数据类型和范围。
Microsoft Access 数据类型 MySQL 数据类型
在 MySQL 中有三种主要的类型Text文本、Number数字和 Date/Time日期/时间类型。
Text 类型 Number 类型 注意以上的 size 代表的并不是存储在数据库中的具体的长度如 int(4) 并不是只能存储4个长度的数字。
实际上int(size)所占多少存储空间并无任何关系。int(3)、int(4)、int(8) 在磁盘上都是占用 4 btyes 的存储空间。就是在显示给用户的方式有点不同外int(M) 跟 int 数据类型是相同的。
例如
1、int的值为10 指定zerofillint9显示结果为000000010
int3显示结果为010就是显示的长度不一样而已 都是占用四个字节的空间
Date 类型 即便 DATETIME 和 TIMESTAMP 返回相同的格式它们的工作方式很不同。在 INSERT 或 UPDATE 查询中TIMESTAMP 自动把自身设置为当前的日期和时间。TIMESTAMP 也接受不同的格式比如 YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD 或 YYMMDD。
SQL Server 数据类型
String 类型 Number 类型 Date 类型 其他数据类型