美文网首页读书笔记
《SQL基础教程》阅读笔记3

《SQL基础教程》阅读笔记3

作者: Athenaearl | 来源:发表于2018-11-18 13:18 被阅读7次

    查询基础

    一.SELECT 语句基础

    列的查询

    格式:

    SELECT <column_name1>,<column_name2>.....FROM <table_name>;
    

    示例:

    mysql> SELECT product_id, product_name, purchase_price FROM Product;
    +------------+--------------+----------------+
    | product_id | product_name | purchase_price |
    +------------+--------------+----------------+
    | 0001       | T恤衫        |            500 |
    | 0002       | 打孔机       |            320 |
    | 0003       | 运动T恤      |           2800 |
    | 0004       | 菜刀         |           2800 |
    | 0005       | 高压锅       |           5000 |
    | 0006       | 叉子         |           NULL |
    | 0007       | 擦菜板       |            790 |
    | 0008       | 圆珠笔       |           NULL |
    +------------+--------------+----------------+
    8 rows in set (0.01 sec)
    

    说明:
    列出来的顺序即是查询时候的顺序
    比如:select 后面 先查的id,然后是name,最后是price,列表则是按照这个顺序列出数据

    查询出表中的所有列

    格式:

    SELECT * FROM Product;
    

    说明:本质上没有什么区别,只不过是用 * 来代替所有的类别名
    示例:

    mysql> SELECT * FROM Product;-
    +------------+--------------+--------------+------------+----------------+-------------+
    | product_id | product_name | product_type | sale_price | purchase_price | regist_date |
    +------------+--------------+--------------+------------+----------------+-------------+
    | 0001       | T恤衫        | 衣服         |       1000 |            500 | 2009-09-20  |
    | 0002       | 打孔机       | 办公用品     |        500 |            320 | 2009-09-11  |
    | 0003       | 运动T恤      | 衣服         |       4000 |           2800 | NULL        |
    | 0004       | 菜刀         | 厨房用具     |       3000 |           2800 | 2009-09-20  |
    | 0005       | 高压锅       | 厨房用具     |       6800 |           5000 | 2009-01-15  |
    | 0006       | 叉子         | 厨房用具     |        500 |           NULL | 2009-09-20  |
    | 0007       | 擦菜板       | 厨房用具     |        880 |            790 | 2008-04-28  |
    | 0008       | 圆珠笔       | 办公用品     |        100 |           NULL | 2009-11-11  |
    +------------+--------------+--------------+------------+----------------+-------------+
    8 rows in set (0.00 sec)
    

    为列设置别名

    格式:

    SELECT <column_name1> AS <new_name1>, <column_name2> AS <new_name2>,....FROM <table_name>;
    

    示例:

    mysql> SELECT product_id AS id, product_name AS name, purchase_price AS price FROM Product;
    +------+------------+-------+
    | id   | name       | price |
    +------+------------+-------+
    | 0001 | T恤衫      |   500 |
    | 0002 | 打孔机     |   320 |
    | 0003 | 运动T恤    |  2800 |
    | 0004 | 菜刀       |  2800 |
    | 0005 | 高压锅     |  5000 |
    | 0006 | 叉子       |  NULL |
    | 0007 | 擦菜板     |   790 |
    | 0008 | 圆珠笔     |  NULL |
    +------+------------+-------+
    8 rows in set (0.00 sec)
    

    说明:其实就是查找之后,表示的时候用一个别名来展示

    常数的书写

    示例:

    mysql> SELECT 'hello' AS haha , product_id FROM Product;
    +-------+------------+
    | haha  | product_id |
    +-------+------------+
    | hello | 0001       |
    | hello | 0002       |
    | hello | 0003       |
    | hello | 0004       |
    | hello | 0005       |
    | hello | 0006       |
    | hello | 0007       |
    | hello | 0008       |
    +-------+------------+
    8 rows in set (0.00 sec)
    

    说明:
    临时加一列,这一列名叫做 haha,它的值统一是 hello

    单独这么做显然没有什么意义,但是如下这样就意义就更多了

    mysql> SELECT Product_id, Product_name, sale_price, sale_price * 2 AS sale_price_X2 FROM Product;
    +------------+--------------+------------+---------------+
    | Product_id | Product_name | sale_price | sale_price_X2 |
    +------------+--------------+------------+---------------+
    | 0001       | T恤衫        |       1000 |          2000 |
    | 0002       | 打孔机       |        500 |          1000 |
    | 0003       | 运动T恤      |       4000 |          8000 |
    | 0004       | 菜刀         |       3000 |          6000 |
    | 0005       | 高压锅       |       6800 |         13600 |
    | 0006       | 叉子         |        500 |          1000 |
    | 0007       | 擦菜板       |        880 |          1760 |
    | 0008       | 圆珠笔       |        100 |           200 |
    +------------+--------------+------------+---------------+
    8 rows in set (0.00 sec)
    

    运算符号:+ - * / 支持 ()
    运算中所有和NULL有关的结果都是NULL

    修改列名:

    mysql> ALTER TABLE  ProductCopy CHANGE prouduct_type product_type VARCHAR(32) NOT NULL;
    Query OK, 0 rows affected (0.03 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    

    避免输出结果中有重复项

    如果直接打印product_type 效果如下:

    mysql> SELECT product_type FROM Product;
    +--------------+
    | product_type |
    +--------------+
    | 衣服         |
    | 办公用品     |
    | 衣服         |
    | 厨房用具     |
    | 厨房用具     |
    | 厨房用具     |
    | 厨房用具     |
    | 办公用品     |
    +--------------+
    8 rows in set (0.00 sec)
    

    会发现有很多重复项,但是我只是想知道,这里面有几类数据
    就会用到DISTINCT关键字
    效果如下:

    mysql> SELECT DISTINCT product_type FROM Product;
    +--------------+
    | product_type |
    +--------------+
    | 衣服         |
    | 办公用品     |
    | 厨房用具     |
    +--------------+
    3 rows in set (0.01 sec)
    

    注意:

    1. NULL也被认为是一种类别
    2. DISTINCT 只能修饰一个列名,当有多列的时候,同样只会修饰一列

    根据WHERE 语句来选择记录

    格式:

    SELECT <column_name1>, <column_name2>... FROM <table_name> WHERE <condition>;
    

    示例:

    mysql> SELECT product_type, product_name FROM Product WHERE product_id=0001;
    +--------------+--------------+
    | product_type | product_name |
    +--------------+--------------+
    | 衣服         | T恤衫        |
    +--------------+--------------+
    1 row in set (0.01 sec)
    

    注意:
    这里的等号表达的是比较关系而非赋值关系
    这个条件不一定非的是用主键才可以,product_name...都可以
    比如:

    mysql> SELECT product_id, product_name FROM Product WHERE product_type='厨房用具';
    +------------+--------------+
    | product_id | product_name |
    +------------+--------------+
    | 0004       | 菜刀         |
    | 0005       | 高压锅       |
    | 0006       | 叉子         |
    | 0007       | 擦菜板       |
    +------------+--------------+
    4 rows in set (0.00 sec)
    

    注意:
    用中文的时候注意要用单引号将其括起来

    比较运算符:

    • 等于 =
    • 不等于 <> 这个是不等于,表达是这样的而非 !=
    • 小于等于 <=
    • 大于等于 >=
    • 大于 >
    • 小于 <

    字符串之间的比较是按照字典序比较
    与NULL做比较是不可以的,因此,有专门判断是否是NULL的条件
    IS NULL
    IS NOT NULL

    逻辑运算符

    • 非 NOT
    • 与 AND
    • 或 OR
    • 提升级别 ()
      NULL 被认为是一种不确定结果
      真 或 不确定 为真
      假 且 不确定 为假

      真 且 不确定 为不确定
      假 或 不确定 为不确定

    不确定代表的是非真非假,因此 不确定 或者 NOT 不确定 都为 FALSE

    注释

    单行注释:

    -- 这是注释
    

    多行注释:

    /*
    这是
    注释
    */
    

    相关文章

      网友评论

        本文标题:《SQL基础教程》阅读笔记3

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