MySQL基础篇-SELECT 语句详解

1、基本的SELECT语句

     基本格式:

            SELECT 要查询的列名 FROM 表名 WHERE 限制条件;

     若要查询所有内容,则把“要查询的列名”用*代替,代表要查询表中所有的列。

     举个栗子:

            栗子1)要查询employee表中的name和age

                        SELECT name,age FROM employee;

            MySQL基础篇-SELECT 语句详解

       栗子2)要查询employee表中的所有列

                   SELECT * FROM employee;

            MySQL基础篇-SELECT 语句详解

          从而可以比较下,SELECT 指定列和SELECT * 的区别

2、数学符号条件

     SELECT语句常常会有WHERE限制条件,用于达到更加精确的查询。

     WHERE限制条件可以有数学符号(=,<,<=,>,>=,<>)

     在栗子1的基础上,细化查询条件age>25

     SELECT name,age FROM employee WHERE age>25;

     MySQL基础篇-SELECT 语句详解

3、“AND”和“OR”

      WHERE的后面可以有不止一条限制,根据条件之间的逻辑关系,可以用OR(或)和AND(且)连接

      在栗子1的基础上,增加查询age小于25或age大于30的数据

      SELECT name,age FROM employee WHERE age<25 OR age>30;

      MySQL基础篇-SELECT 语句详解

      或查询年龄在25和30之间的数据

      SELECT name,age FROM employee WHERE age>25 AND age<30;

      MySQL基础篇-SELECT 语句详解

      另一种表现方式

      SELECT name,age FROM employee WHERE age BETWEEN 25 AND 30;

     MySQL基础篇-SELECT 语句详解

4、IN和NOT IN

     关键词IN和NOT IN,主要用于筛选“在”或“不在”某个范围内的结果

     举个栗子:

            查询在dpt3或dpt4的人

            SELECT * FROM employee WHERE in_dpt IN('dpt3','dpt4');

            MySQL基础篇-SELECT 语句详解

            查询不在dpt1也不在dpt3的数据

            SELECT * FROM employee WHERE in_dpt NOT IN('dpt1','dpt3');

            MySQL基础篇-SELECT 语句详解

5、通配符

     通配符与关键字LIKE一起使用,通配符代表未知字符。

     主要有“_”和“%”两种。“_”代表一个未指定字符,而“%”代表不定个未指定字符。

     举个栗子:

            查询电话号码前四位为1101的信息

            SELECT * FROM employee WHERE phone LIKE '1101__';

            MySQL基础篇-SELECT 语句详解

            查询首字母为J的人

            SELECT * FROM employee WHERE name LIKE'J%';

            MySQL基础篇-SELECT 语句详解

6、对查询结果进行排序

     对查询结果按某一列进行排序,需用到ORDER BY关键词。

     默认情况下,ORDER BY的结果是升序排列;若需按某一列倒序排列,则需再加入关键词DESC

     举个栗子:

           将所有查询结果,按salary倒序进行排序

           SELECT * FROM employee ORDER BY salary DESC;

           MySQL基础篇-SELECT 语句详解

7、SQL内置函数和计算

     内置函数     

函数名 COUNT SUM AVG MAX MIN
作用 计数 求和 求平均值 最大值 最小值
     COUNT函数可用于任何数据类型(因为它只是计数)

     SUM、AVG函数都只能对数字类数据类型做计算

     MAX、MIN可用于数值、字符串或是日期时间数据类型

     举个栗子:

            计算出salary的最大、最小值

           SELECT MAX(salary) AS max_salary, MIN(salary) FROM employee;

           MySQL基础篇-SELECT 语句详解

8、子查询

     直接上栗子:

     查询名为Tom的员工所在部门做了几个工程。

     SELECT of_dpt,COUNT(proj_name) AS count_project

     FROM project

     WHERE of_dpt IN

           (SELECT in_dpt FROM employee WHERE name='Tom');

   MySQL基础篇-SELECT 语句详解

9、连接查询

     连接的基本思想,就是把两个或多个表当做一个新的表来操作

     栗子栗子:

           查询各员工所在部门的人数,其中的id和name来自employee表,people_num来自department表

           SELECT id,name,people_num

           FROM employee,department

           WHERE employee,in_dpt=department.dpt_name

           ORDER BY id;

           MySQL基础篇-SELECT 语句详解

          或用JOIN ON语法

          SELECT id,name,people_num

          FROM employee JOIN department

          ON employee.in_dpt=department.dpt_name

          ORDER BY id;

          MySQL基础篇-SELECT 语句详解