mysql单表、多表查询

1.单表查询

     1.1mysql的基本查询语句:

               SELECT 属性列表 FROM 表名和视图列表

               [WHERE 条件表达式 1]

               [GROUP BY 属性名 1[HAVING 条件表达式 2]]

              [ORDER BY 属性名 2[ASC|DESC]]

   1.2 使用“ * ”查询所有字段

SELECT * FROM 表名  [where  条件]

  1.3 使用指定字段

SELECT 字段名1,字段名2,字段名n FROM 表名 [where 条件];

  1.4 使用in关键字

     IN关键字可以判断某个字段的值是否在指定的集合中;

     [NOT] IN(元素 1,元素 2,…,元素 n)

SELECT * FROM student WHERE stuid IN(2,3,4);

  1.5使用between and 的范围

       BETWEEN AND 关键字可以判断某个字段的值是否在指定的范围内。

      [NOT] BETWEEN 取值 1 AND 取值 2

SELECT * FROM student WHERE age BETWEEN 18 AND 20;

  1.6带 LIKE 的字符匹配查询

    LIKE 关键字可以匹配字符串是否相等。“%”:匹配任意长度的字符串;  “-”:只能匹配单个字符。

    [NOT] LIKE ‘字符串’

SELECT * FROM student WHERE name LIKE ‘A%’;  //任意长度

SELECT * FROM student WHERE name LIKE ’A_y’; //单个

1.7查询空值​​​​​​​

IS NULL 关键字可以用来判断字段的值是否为空值。

IS [NOT] NULL

//查询电话号码为空的学生信息
SELECT * FROM student WHERE phone IS NULL

1.7用 LIMIT 限制查询结果的数量

    指定一共显示多 少条记录;

   SELECT * FROM TABLE_NAME LIMIT [初始位置], 记录数

//查询年龄最大的五名学生的信息
SELECT * FROM student
ORDER BY birthday  //按照字段名排序
LIMIT 0, 5

2.聚合函数

   常用聚合函数有:

      1. SUM 求和

      2. AVG 求平均值

     3. MAX 和 MIN 求最大值/最小值

     4. COUNT 计数(count(*))

    另:可使用 DISTINCT 语句对重要数据进行过滤。

     eg:   SELECT DISTINCT subid FROM score;

    总结一:HAVING 与 WHERE 区别

                   相同点:HAVING 和 WHERE 语句都是对查询结果进行筛选,其后都可跟条件判断。

                   不同点:1) HAVING 只能用于 GROUP BY 后,WHERE 不可用于 GROUP BY 后。

                                   2) HAVING 后可使用聚合函数,WHERE 不可以

                                   3) 作用时机不同,WHERE 对表数据进行筛选,HAVING 对分组后的数据进行筛选。

  总结二:查询语句执行顺序:

                  WHERE -> GROUP BY-> 聚合-> HAVING -> ORDER BY -> LIMIT

3.多表查询

        3.1交叉连接(CROSS JOIN)

          交叉连接会返回被连接的两个表的笛卡尔积,返回结果的行数等于两个表行数的乘积。

         可用 CROSS JOIN JOIN“,”(英文逗号)将两个表进行交叉 连接;

         注:在使用连接查询时,字段选取、连接条件和过滤条件可使用“表名.列名”的方式选择过滤 哪一个表的列。特别是对于两个表中具有相同列名的列,必须通过表名来指定。

SELECT * FROM 表1 CROSS JOIN 表2[where 条件]

      3.2内连接

        其语法如下: SELECT * FROM  表1  INNER JOIN 表2 ON 连接条件 [WHERE 条件]

        注:内连接的效率要比交叉连接高。

     3.3 外连接

                  外连接与内连接不同,内连接时,根据连接条件只保留两个表中有对应数据的记录;而外连接时, 当一个表中记录在             另一 个表中没有对应记录时,会生成一条与 NULL 值对应的记录。

          外连接:内连接(LEFT [OUTER] JOIN)与外连接(RIGHT  [OUTER] JOIN)

          语法格式如下: SELECT * FROM   表1  LEFT [OUTER] JOIN 表2  ON 连接条件 [WHERE 条件]

          注:AS- 为表和字段起别名(as 一般可以省略,直接在表或字段的后面写上别名)​​​​​​​

猜你喜欢

转载自blog.csdn.net/wangyang668/article/details/81676670