MySQL基础篇-SELECT 语句详解

  • Post author:
  • Post category:mysql


1、基本的SELECT语句

基本格式:

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

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

举个栗子:

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

SELECT name,age FROM employee;

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

SELECT * FROM employee;

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

2、数学符号条件

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

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

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

SELECT name,age FROM employee WHERE age>25;

3、“AND”和“OR”

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

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

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

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

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

另一种表现方式

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

4、IN和NOT IN

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

举个栗子:

查询在dpt3或dpt4的人

SELECT * FROM employee WHERE in_dpt IN(‘dpt3′,’dpt4’);

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

SELECT * FROM employee WHERE in_dpt NOT IN(‘dpt1′,’dpt3’);

5、通配符

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

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

举个栗子:

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

SELECT * FROM employee WHERE phone LIKE ‘1101__’;

查询首字母为J的人

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

6、对查询结果进行排序

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

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

举个栗子:

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

SELECT * FROM employee ORDER BY salary DESC;

7、SQL内置函数和计算

内置函数

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

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

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

举个栗子:

计算出salary的最大、最小值

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

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’);

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;

或用JOIN ON语法

SELECT id,name,people_num

FROM employee JOIN department

ON employee.in_dpt=department.dpt_name

ORDER BY id;



版权声明:本文为XXDYxxdy原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。