MySQL进阶操作
来源:互联网 发布:mac装win10温度咋样 编辑:程序博客网 时间:2024/06/12 08:22
LIKE子句
MySQL 中使用 SELECT 命令来读取数据。通过 SELECT 语句中使用WHERE 子句来获取指定的记录。
LIKE 子句通常用于 WHERE 子句中。
LIKE 子句中使用百分号(%)字符来表示任意字符,类似于UNIX或正则表达式中的星号(*)。
如果没有使用百分号(%), LIKE 子句与等号(=)的效果是一样的。
SELECT field_1, field_2, ..., field_n from table_name_1, table_name_2, ..., table_name_n WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'value'
GROUP BY分组子句
- GROUP BY 语句根据一个或多个列对结果集进行分组。
- 可使用 COUNT, SUM, AVG 等函数对每一组进行操作。
- 若不分组使用 COUNT, SUM, AVG 等函数,MySQL将把所有获取的所有数据做为一个组,当且仅当只有这一个组。
SELECT column_name, function(column_name) FROM table_name [WHRER Clause] GROUP BY column_name
HAVING子句
- HAVING子句通常与GRUOP BY同时使用,用于过滤聚合后的结果(比如使用了SUM、COUNT、AVG等聚合函数)。
- HAVING子句通常与聚合函数(SUM、COUNT、AVG)搭配使用。
- HAVING与WHERE子句含义相近,都是用来设置条件的。不同的是,WHERE子句先判断再聚合结果;HAVING子句先聚合结果再判断再聚合结果。
- HAVING与WHERE通常不会同时出现。
SELECT field_1, field_2, ..., field_n FROM table_name_1, table_name_2, ..., table_name_n GROUP BY field_1 HAVING SUM(field_1) > 10
表的别名(Alias)
当进行多表操作时,给表使用别名可以达到简化SQL语句的功能。
别名加在表名的后面,用AS子句表示,也可以直接用空格隔开。事实上,通常用空格隔开。
SELECT t1.name, t2.gender FROM table_1 [AS] t1, table_2 [AS] t2
解析:从table_1、table_2中取出数据。对于table_1只需要它的name字段数据;对于table_2只需要它的gender字段数据。
JOIN连接表,进行多表查询
你可以在SELECT, UPDATE 和 DELETE 语句中使用 Mysql 的 JOIN 来联合多表查询。
JOIN 按照功能大致分为如下三类:
- INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
- LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
- RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。
注:MySQL没有FULL OUTER JOIN,但可以通过某种方式实现FULL OUTER JOIN,后续讲解。
①INNER JOIN(相当于JOIN,内连接)
SELECT t1.name, t2.salary FROM table_1 t1 [INNER] JOIN table_2 t2 ON t1.dept = t2.dept
分析:只返回满足t1.dept = t2.dept条件的数据。分别取t1表的name字段,t2表的salary字段。
②LEFT JOIN(左连接)
SELECT t1.name, t2.salary FROM table_1 t1 LEFT JOIN table_2 t2 ON t1.dept = t2.dept
分析:返回t1表的所有数据,不管是否满足t1.dept = t2.dept条件。返回t2表中满足t1.dept = t2.dept的数据。
③RIGHT JOIN
SELECT t1.name, t2.salary FROM table_1 t1 LEFT JOIN table_2 t2 ON t1.dept = t2.dept
分析:返回t2表的所有数据,不管是否满足t1.dept = t2.dept条件。返回t1表中满足t1.dept = t2.dept的数据。
刚才上文说MySQL没有FULL OUTER JOIN,那么我们怎么实现FULL OUTER JOIN呢?
事实上,使用UNION语句连接LEFT JOIN和RIGHT JOIN就可实现全外连接
SELECT t1.name, t2.salary FROM table_1 t1 LEFT JOIN table_2 t2 ON t1.dept = t2.dept UNION SELECT t1.name, t2.salary FROM table_1 t1 RIGHT JOIN table_2 t2 ON t1.dept = t2.dept
- Mysql 游标操作-进阶
- MySQL进阶操作
- MySQL操作进阶
- MySQL操作——进阶
- MySQL学习笔记3——MySQL进阶操作
- MySQL学习笔记4——MySQL进阶操作2
- MySQL进阶(三)——多表操作
- mysql进阶篇之数据约束和多表操作
- JavaEE_ JDBC操作MySQL数据库 (进阶篇)
- MySQl进阶
- Mysql进阶
- MySQL 进阶
- MySQL进阶
- MySQL 进阶
- MYSQL进阶
- mysql进阶
- mysql 进阶
- Mysql进阶
- Volley用法解析一(转载自郭霖郭大神的CSDN博客)
- 串口检测
- 【iOS测试系列】instruments工具的使用(二)- 通过Time Profiler
- Socket基本原理
- java 多种单例模式
- MySQL进阶操作
- [译]URL和URI的区别
- Memcache 命令行操作
- rn:strict mode does not allow function declarations in a lexically nested statement
- 何时发生隐式类型转换
- android studio ndk开发
- android系统添加自己写的工具
- VHDL数据类型(Data Types)
- js 停止事件冒泡 阻止浏览器的默认行为