根据提供的文件信息,我们可以归纳出一系列关于MySQL查询语句的重要知识点。这些知识点涵盖了从基本的SELECT语句到更复杂的查询技巧,例如使用IN、CONCAT、LOCATE等函数以及GROUP BY、HAVING子句的应用。 ### 1. 基本SELECT语句 #### 知识点一:基础查询 在MySQL中,`SELECT`是最常用的SQL命令之一,用于从数据库中检索数据。基础查询通常包括指定要查询的数据表和字段。 - **语法示例**: ```sql SELECT * FROM article WHERE id = 1; ``` 上述代码表示从`article`表中选择所有列,其中`id`为1的记录。 ### 2. 使用IN进行多条件查询 #### 知识点二:使用IN进行多值匹配 当需要匹配多个值时,可以使用`IN`操作符。这比使用多个`OR`条件更加简洁。 - **语法示例**: ```sql SELECT * FROM article WHERE id IN (1, 3, 5); ``` 这条语句将返回`article`表中`id`为1、3或5的所有记录。 ### 3. 使用CONCAT进行字符串拼接 #### 知识点三:字符串拼接 `CONCAT`函数可以用来连接两个或多个字符串值。 - **语法示例**: ```sql SELECT CONCAT(id, "-", content) AS res FROM article WHERE id = 1; ``` 此语句将`id`和`content`列的值进行拼接,并将结果作为`res`列返回。 ### 4. 使用LOCATE进行字符串定位 #### 知识点四:字符串定位 `LOCATE`函数用于查找一个字符串在另一个字符串中的位置。 - **语法示例**: ```sql SELECT LOCATE("hello", "hellobaby"); ``` 返回的结果是1,因为“hello”在“hellobaby”中的起始位置为1。 ### 5. 使用GROUP BY进行分组 #### 知识点五:分组统计 `GROUP BY`子句用于结合聚合函数(如AVG(), MAX(), MIN(), COUNT(), SUM()等)一起使用,对数据进行分组。 - **语法示例**: ```sql SELECT city, COUNT(*) FROM customer GROUP BY city; ``` 此语句将根据`city`列对`customer`表中的记录进行分组,并计算每个城市的记录数量。 ### 6. 使用HAVING进行分组过滤 #### 知识点六:HAVING子句 与`WHERE`子句不同,`HAVING`子句可以在分组后过滤结果集。 - **语法示例**: ```sql SELECT city, COUNT(*), MIN(birth_day) FROM customer GROUP BY city HAVING COUNT(*) > 10; ``` 这条语句首先根据`city`对`customer`表中的记录进行分组,然后只显示那些城市中有超过10个客户的记录。 ### 7. WHERE、GROUP BY、HAVING与ORDER BY的区别 #### 知识点七:WHERE、GROUP BY、HAVING与ORDER BY的关系 `WHERE`、`GROUP BY`、`HAVING`和`ORDER BY`是SQL查询中非常重要的四个子句,它们的执行顺序为:`WHERE` -> `GROUP BY` -> `HAVING` -> `ORDER BY`。 - **执行顺序**: 1. **WHERE**:过滤记录。 2. **GROUP BY**:对过滤后的记录进行分组。 3. **HAVING**:对分组后的记录进行进一步过滤。 4. **ORDER BY**:最后对结果进行排序。 ### 8. 使用DISTINCT去除重复记录 #### 知识点八:去除重复记录 `DISTINCT`关键字可以用来消除查询结果中的重复行。 - **语法示例**: ```sql SELECT DISTINCT city FROM customer ORDER BY id DESC; ``` 此语句将返回`customer`表中不重复的`city`值,并按`id`降序排列。 ### 9. 使用LIMIT限制结果集 #### 知识点九:限制结果集 `LIMIT`子句用于限制查询结果的数量,常用于分页显示数据。 - **语法示例**: ```sql SELECT * FROM article LIMIT 100, -1; ``` 这条语句的写法不太常见,通常的格式应该是`LIMIT [OFFSET, ]ROWS`。如果按照常见格式,应该是`SELECT * FROM article LIMIT 100, 1;`,表示从第101条记录开始取1条记录。 ### 10. 多表查询 #### 知识点十:JOIN查询 当需要从多个表中检索数据时,可以使用JOIN操作。 - **语法示例**: ```sql SELECT user_name FROM user u JOIN member m ON u.id = m.id WHERE m.reg_date >= '2006-12-28' ORDER BY u.id DESC; ``` 这条语句将`user`表和`member`表通过`id`列进行连接,并筛选出`reg_date`大于等于2006-12-28的用户名称,最后按`user`表的`id`降序排列。 以上是对给定文件中提到的主要知识点的详细解释。通过学习这些知识点,你可以更好地理解和掌握MySQL查询语句的使用方法。
$sql="select * from article where id=1"
和 $sql="select * from article
where id=1",都可以得到正确的结果,但有时分开写或许能更明了一点,特别是当sql语句比较长时
2、批量查询数据
可以用in来实现
$sql="select * from article where id in(1,3,5)"
3、使用concat连接查询的结果
$sql="select concat(id,"-",con) as res from article where id=1"
返回"1-article content"
4、使用locate
用法:select locate("hello","hello baby");返回1
不存在返回0
5、使用group by
以前一直没怎么搞明group by 和 order by,其实也满简单的,group by 是把相同的结果编为一组
exam:$sql="select city ,count(*) from customer group by city";
这句话的意思就是从customer表里列出所有不重复的城市,及其数量(有点类似distinct)
group by 经常与AVG(),MIN(),MAX(),SUM(),COUNT()一起使用
6、使用having
having 允许有条件地聚合数据为组
$sql="select city,count(*),min(birth_day) from customer
group by city having count(*)>10";
这句话是先按city归组,然后找出city地数量大于10的城市
btw:使用group by + having 速度有点慢
同时having子句包含的表达式必须在之前出现过
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 运用python生成的跳跃的爱心
- 基于 Java 实现的 Socket.IO 服务器 实时 Java 框架.zip
- 基于 Ant 的 Java 项目示例.zip
- 各种字符串相似度和距离算法的实现Levenshtein、Jaro-winkler、n-Gram、Q-Gram、Jaccard index、最长公共子序列编辑距离、余弦相似度…….zip
- 运用python生成的跳跃的爱心
- 包括用 Java 编写的程序 欢迎您在此做出贡献!.zip
- (源码)基于QT框架的学生管理系统.zip
- 功能齐全的 Java Socket.IO 客户端库,兼容 Socket.IO v1.0 及更高版本 .zip
- 功能性 javascript 研讨会 无需任何库(即无需下划线),只需 ES5 .zip
- 分享Java相关的东西 - Java安全漫谈笔记相关内容.zip