欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

[笔记]MySQL学习(1)

程序员文章站 2022-04-04 07:54:19
检索数据 限制结果 limit 5 返回不多于5行 limit 5, 5 从行5开始的5行 排序检索 ORDER BY 列 (可以是检索列或非检索列) ORDER BY 列1 DESC,列2 DESC,列3 DESC 降序 (如果想对多个列降序排序,必须每个列指定DESC) ASC 升序 过滤数据 =、!=、BETWEEN AND IS NULL mysql在执行匹配时,默认不区分大......

检索数据
    限制结果 
        limit 5 返回不多于5行
        limit 5, 5 从行5开始的5行
        
排序检索
    ORDER BY 列 (可以是检索列或非检索列)
    ORDER BY 列1 DESC,列2 DESC,列3 
    DESC 降序 (如果想对多个列降序排序,必须每个列指定DESC)
    ASC 升序
    
过滤数据
    =、!=、BETWEEN  AND
    IS NULL
    mysql在执行匹配时,默认不区分大小写
    AND、OR、IN(value1,value2)、NOT IN
    通配符:
        LIKE 
            % 任何字符出现任意次数,搜索区分大小写
            _ 匹配单个字符
        花费之间更长
    正则表达式:
        RGEXP '...'
        RGEXP '1000|2000'
        RGEXP '[123]TON'  (OR)
        RGEXP '[1-3]TON'  (范围)
        特使字符前加\\   包括. [ ] | -
        [:alnum:] [a-zA-Z0-9]任意字母和数字
        [:alpha:] 任意字母
        * 0个或多个
        + 1个或多个
        
汇总数据
    AVG COUNT MAX MIN SUM 某列    (忽略NULL的行)

分组
    1. GROUP BY 可以包含任意数目的列
    2. GROUP BY 子句中列出的每个列都必须是检索列或者有效的表达式(但不能是聚集函数)
    3. 如果在SELECT中使用表达式,则必须在GROUP BY子句中指定相同的表达式,不能用别名
    4. 除聚集语句外,select中的每个列都必须在group by子句中列出
    5. group by子句必须出现在where子句之后,order by子句之前
    6. 过滤分组:having,在分组后进行过滤 例如 having count(*) > 2

子查询
    1. 子查询总是从内向外处理
    2. 列必须匹配,在where子句中使用子查询,应该保证select语句具有与where子句中相同数目的列
       通常子查询将返回单个列,并且与单个列匹配。
    3. 利用子查询进行过滤, 例子:
        orderitems: order_num, prod_id, cust_id
        customers: cust_id, cust_name, cust_contact, cust_state
        查询包含物品TNT2订单的所有客户的客户信息
        SELECT cust_name, cust_contact
        FROM customers
        WHERE cust_id IN (SELECT cust_id
                          FROM orders
                          WHERE order_num IN (SELECT order_num
                                              FROM orderitems
                                              WHERE prod_id='TNT2')));
            
    4. 子查询作为计算字段
        查询customers中每个客户的订单总数
        SELECT cust_name, cust_state, (SELECT COUNT(*) 
                                        FROM orders
                                        WHERE orders.cust_id = customers.cust_id) AS orders
        FROM customers
        ORDER BY cust_name;
    
联结表
    用来检索出存储在多个表中的信息
    关系表的设计就是要保证把信息分解成多个表,一类数据一个表。各表通过某些常用的值(即关系设计中的关系)互相关联。
    vendors 供应商信息 vend_id vend_name 
    products 产品信息 prod_id prod_name prod_price vend_id
    内部联结 等值联结
        SELECT vend_name, prod_name, prod_price
        FROM vendors INNER JOIN products
        ON vendors.vend_id = products.vend_id;
        
    使用连接查询包含物品TNT2订单的所有客户的客户信息
        SELECT cust_name, cust_contact
        FROM customers, orders, orderitems
        WHERE customers.cust_id = orders.cust_id
            AND orderitems.order_num = orders.order_num
            AND prod_id = 'TNT2';

本文地址:https://blog.csdn.net/m0_37855217/article/details/107676828

相关标签: MySQL