一、where语句
where语句用于限制查询结果,只返回符合条件的记录。
1.基本用法:where后面写上限制条件,条件可以是比较运算、逻辑运算符或者函数运算。
```sql SELECT column1, column2,...columnN FROM table_name WHERE [condition]; ```2.比较运算符:=、<、>、<=、>=、<>或!=
SELECT * FROM customers WHERE customer_id = 1; // 返回ID为1的记录 SELECT * FROM customers WHERE customer_name <> 'Peter'; // 返回名字不是Peter的记录 SELECT * FROM orders WHERE order_date < '2021-09-01'; // 返回日期早于2021年9月1日的记录
3.逻辑运算符:and、or、not
SELECT * FROM customers WHERE city = 'New York' and country = 'USA'; // 返回纽约市的美国客户 SELECT * FROM customers WHERE city = 'Paris' or city = 'London'; // 返回巴黎或伦敦的客户 SELECT * FROM customers WHERE not country = 'USA'; // 返回非美国国籍的客户
4.函数运算符:通常和比较运算符结合使用,例如LIKE,BETWEEN,IN,IS NULL等等。
SELECT * FROM customers WHERE customer_name LIKE 'Ana%'; // 返回名字以Ana开头的客户,%代表任意字符 SELECT * FROM customers WHERE order_date BETWEEN '2021-01-01' AND '2021-12-31'; // 返回2021年订单记录 SELECT * FROM customers WHERE country IN ('USA', 'Canada', 'Mexico'); // 返回美国、加拿大或墨西哥的客户 SELECT * FROM customers WHERE phone IS NULL; // 返回没有电话号码的客户
二、group by语句
group by语句用于将查询结果按照指定列进行分组,然后对每个分组进行汇总计算。
1.基本用法:group by后面写上列名,可以多个列名进行分组。同时,需要在select语句中使用聚合函数对分组后的结果进行计算。
```sql SELECT column1, SUM(column2) FROM table_name WHERE [condition] GROUP BY column1; ```2.聚合函数:常用的聚合函数有AVG、COUNT、MAX、MIN和SUM。
SELECT country, COUNT(*) FROM customers GROUP BY country; // 返回每个国家的客户数目 SELECT country, AVG(bonus) FROM employees GROUP BY country; // 返回每个国家员工的平均奖金 SELECT country, MAX(salary) FROM employees GROUP BY country; // 返回每个国家员工的最高薪资 SELECT country, MIN(age) FROM employees GROUP BY country; // 返回每个国家员工的最低年龄 SELECT country, SUM(sales) FROM orders GROUP BY country; // 返回每个国家订单销售额之和
三、order by语句
order by语句用于对查询结果进行排序。
1.基本用法:order by后面写上排序的列,可以多个列名进行排序。默认为升序排列,可以使用DESC进行降序排列。
```sql SELECT column1, column2,...columnN FROM table_name WHERE [condition] ORDER BY column_name1 [ASC|DESC], column_name2 [ASC|DESC]...; ```2.排序规则:对于字符串类型的列,按照字典顺序排序;对于数值类型的列,按照数值大小排序;对于日期类型的列,按照时间顺序排序。
SELECT * FROM customers ORDER BY customer_name; // 按照名字升序排列 SELECT * FROM customers ORDER BY customer_name DESC; // 按照名字降序排列 SELECT * FROM orders ORDER BY order_date; // 按照日期升序排列
四、综合示例
下面是一个综合示例,同时使用了where、group by和order by语句。将查询出大于50岁且工资高于30000的员工,然后按照国家和城市进行分组,计算出每个城市的平均工资,并按照平均工资降序排列。
```sql SELECT country, city, AVG(salary) as avg_salary FROM employees WHERE age > 50 AND salary > 30000 GROUP BY country, city ORDER BY avg_salary DESC; ```参考文献
1. MySQL官方文档:https://dev.mysql.com/doc/
2. W3School:https://www.w3schools.com/sql/
3. SQLZOO:https://sqlzoo.net/