美文网首页
学习SQL的第十天(11月18日~11月19日)

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

作者: 旅兔seven | 来源:发表于2017-11-19 23:12 被阅读11次

    SQL Date(日期) 函数

    MySQL Date 函数

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

    图片来自W3C

    SQL Server Date 函数

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

    图片来自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 日期处理

    图片来自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 值的记录

    图片来自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() 函数

    表“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 数据类型

    图片来自W3C

    MySQL 数据类型

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

    图片来自W3C 图片来自W3C 图片来自W3C

    UTC :协调世界时

    SQL Server 数据类型(省略)

    图片来自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 语句

    图片来自W3C 图片来自W3C

    Scalar 函数

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

    图片来自W3C

    相关文章

      网友评论

          本文标题:学习SQL的第十天(11月18日~11月19日)

          本文链接:https://www.haomeiwen.com/subject/lmdevxtx.html