SQL杂记_day01

作者: 感觉变强了 | 来源:发表于2018-04-16 15:33 被阅读0次

           本记录旨在记录以及回忆常用的Sql语句,关键字(太基础如select就算了),以数据分析为根本目的,服务于分析,因此需要常做更新,切勿死磕一点,木有意义,会用即可;还有一点,就是记性好像不怎么好,所以需要这么一个随笔来进行记录。一下内容大部分都取自《sql必知必会》,做一个总结。

            关于环境的搭建问题,仅仅是练习熟悉sql的话,不需要使用可视化工具,搭建完整的环境(如安装mysql,SQLyog等),直接使用PHPstudy这个工具的数据库工具即可,快速绿色,敲命令行完成练习,足够。

            关于SQL语句通用性的问题,不同的数据库,在某些功能上会有不同的sql实现方法,当前练习的版本仅仅是以mysql为基准,所以以下语句都是在mysql 5.5 运行练习。如果语句不通用,则会标注出来


    开始正题 Let`s do it !:

    1、检索不同的值DISTINCT

    输入:

    SELECT DISTINCT vend_id

    FROM Products;

    输出:

    vend_id

    ----------

    BRS01

    DLL01

    FNG01

    由此可见它的作用就是检索出选中列中的所有不同的行,很简单,但有一点需要注意:

    注意:不能部分使用 DISTINCT

    DISTINCT作用于select后的所有列,不仅仅是紧跟着 DISTINCT后的那一列,例如:

    SELECT DISTINCT vend_id, prod_price  则得出的结果如下:

    以最长的不重复列为标准

    2、输出限定数目的结果 LIMIT(只适用于mysql DB)

    两种语句方式:

    SELECT prod_name      或者                SELECT prod_name 

    FROM Products                                     FROM Products

    LIMIT 4 OFFSET 3;                               LIMIT 3, 4;

    以上两种方法得到的结果都是:

    从第三行开始,选取四行输出

    LIMIT 4 OFFSET 3 是指输出四行,从行号为3的行开始;

    LIMIT 3, 4; 是指从行号为3的行开始,输出四行;(意义相同,这句为简化版本)

    PS:行号是从0开始的

    3、对所选择的列进行排序 ORDER BY

    1)ORDER BY一定是SELECT语句中的最后一个语句,此处解释一下:SELECT语句就是指的 SELECT....FROM....语句,ORDER BY使用的时候必须紧跟在这条语句之后,之后在使用其他语句,比如LIMIT等;但如果出现了WHERE语句,ORDER BY就要位于WHERE之后使用

    如:

    SELECT prod_id, prod_price, prod_name

    FROM Products

    LIMIT 3, 4

    ORDER BY 2, 3;

    就是错误的!

    2)默认的的排序顺序是升序ASC(或ASCENDING),数字的序低于字母(先数字后字母)

    3)降序是DESC(或DESCENDING)

    4)多个列排序:

    SELECT prod_id, prod_price, prod_name

    FROM Products

    ORDER BY prod_price DESC, prod_name;

    以上是对prod_price进行降序,之后再对prod_name升序(只有在prod_price中出现相同的值时,才会开始对prod_name升序排序;不存在相同时,就按着prod_price降序排序),如:

    以上语句执行后的结果

    5)使用相对位置来进行排序:

    SELECT prod_id, prod_price, prod_name

    FROM Products

    ORDER BY 2 DESC, 3;

    此条语句执行结果和 4)结果相同,相对位置是指SELECT所选择的列的相对书写位置

    6)关于大小写的排序区别:

    就如A和a该如何排序,这个就和数据库的具体设置有关了,找管理员,在此就不深究,遇到问题再解决

    4、关于WHERE语句的一些总结:

    以上是WHERE中可以使用的操作符

    1)其实以上列出的有些操作符是冗余的,如"<>",就可以使用" != "来代替, " !< "相当于" >= ",并非所有的DB都支持这些操作符!

    2)对于值是字符串的列,需要使用单引号来限定。

    SELECT vend_id, prod_name

    FROM Products

    WHERE vend_id != 'DLL01';

    3)取范围值BETWEEN

    SELECT prod_name, prod_price

    FROM Products

    WHERE prod_price BETWEEN 5 AND 10;

    此处需要注意,是包含5和10的,也就是包含开始和结束值!

    4)匹配空值NULL要使用 IS NULL 语句:

    空值不代表值为0,是指的没有填充值!

    SELECT cust_name

    FROM CUSTOMERS

    WHERE cust_email IS NULL;

    语句执行结果

    5)WHERE语句中的 AND 和 OR:

    此处一定要注意结合顺序,AND结合优先级高于OR,也就是先和计算 AND,之后计算 OR

    SELECT prod_name, prod_price

    FROM Products

    WHERE vend_id = 'DLL01' OR vend_id = 'BRS01'

                   AND prod_price >= 10;

    先计算 (vend_id = 'BRS01' AND prod_price >= 10)

    SELECT prod_name, prod_price

    FROM Products

    WHERE (vend_id = 'DLL01' OR vend_id = 'BRS01')

                   AND prod_price >= 10;

    结果不同

    相关文章

      网友评论

        本文标题:SQL杂记_day01

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