学习SQL的第十天(11月18日~11月19日)

SQL Date(日期) 函数

MySQL Date 函数

下表为 MySQL 中最重要的内建日期函数

学习SQL的第十天(11月18日~11月19日)_第1张图片
图片来自W3C

SQL Server Date 函数

下表列出了 SQL Server 中最重要的内建日期函数

学习SQL的第十天(11月18日~11月19日)_第2张图片
图片来自W3C

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 日期处理

学习SQL的第十天(11月18日~11月19日)_第3张图片
图片来自W3C

从上表 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 值的记录

学习SQL的第十天(11月18日~11月19日)_第4张图片
图片来自W3C

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() 函数

学习SQL的第十天(11月18日~11月19日)_第5张图片
表“Products”,图片来自W3C

假如 "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 数据类型

学习SQL的第十天(11月18日~11月19日)_第6张图片
图片来自W3C

MySQL 数据类型

在 MySQL 中,有三种主要的类型:文本、数字和日期/时间类型。

学习SQL的第十天(11月18日~11月19日)_第7张图片
图片来自W3C
学习SQL的第十天(11月18日~11月19日)_第8张图片
图片来自W3C
学习SQL的第十天(11月18日~11月19日)_第9张图片
图片来自W3C

UTC :协调世界时

SQL Server 数据类型(省略)

学习SQL的第十天(11月18日~11月19日)_第10张图片
图片来自W3C

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 语句

学习SQL的第十天(11月18日~11月19日)_第11张图片
图片来自W3C
学习SQL的第十天(11月18日~11月19日)_第12张图片
图片来自W3C

Scalar 函数

Scalar 函数的操作面向某个单一的值,并返回基于输入值的一个单一的值。

学习SQL的第十天(11月18日~11月19日)_第13张图片
图片来自W3C

你可能感兴趣的:(学习SQL的第十天(11月18日~11月19日))