![a37a4d56c1e0d8ef376714a1cb39379e.png](https://img-blog.csdnimg.cn/img_convert/a37a4d56c1e0d8ef376714a1cb39379e.png)
一、基本的查询语句
1.1 从表中查询所有的行和列
SELECT * FROM [table name]
![862eb1b2f9b9d1b7a418ad9f586a97a5.png](https://img-blog.csdnimg.cn/img_convert/862eb1b2f9b9d1b7a418ad9f586a97a5.png)
注意:一般而言,除非确实需要用到表中的每一列,否则最好别使用*通配符。虽然使用通配符可以让自己省事,不用明确列出所需列,但检索不需要的列通常会降低检索和应用程序的性能。
此外,使用*通配符无法设定列的显示顺序了。这时就会按照CREATE TABLE语句的定义对列进行排序。
1.2 从表中查询特定的列
SELECT [column name1], [column name2], .... [column name N] FROM [table name]
![1d15883ffb214a16deedfa8e9313de47.png](https://img-blog.csdnimg.cn/img_convert/1d15883ffb214a16deedfa8e9313de47.png)
注意:查询结果中列的顺序和 SELECT 子句中的顺序相同。
1.3 列重命名
SELECT [old column name] AS [new column name] FROM [table name]
![85030b435990a777892e0c1771aacaf1.png](https://img-blog.csdnimg.cn/img_convert/85030b435990a777892e0c1771aacaf1.png)
设定汉语别名时需要使用双引号(")括起来。
注意:在where子句中引用重命名的列名会报错
举例:
![40ab817fc97b6c4f3153fc3a57f0dd8f.png](https://img-blog.csdnimg.cn/img_convert/40ab817fc97b6c4f3153fc3a57f0dd8f.png)
原因:where子句是在select之前处理的,也就是说在执行where语句时,student_id这一列并不存在,因此系统报错。
解决方案:将查询作为内联视图
![868ccdabfdbf2b6e13693d5b9ba12026.png](https://img-blog.csdnimg.cn/img_convert/868ccdabfdbf2b6e13693d5b9ba12026.png)
之前提到了where子句在select子句之前执行,因此在where子句中引用重命名的列会报错,但是将查询作为内联视图可解决这个问题,因为from子句在where子句之前执行。
1.4 查询常数
SELECT 'text' AS [column name],
number AS [column name],
'date' AS [column name]
FROM [table name]
![e672a4dc259853ced25acc4d6fc5daf5.png](https://img-blog.csdnimg.cn/img_convert/e672a4dc259853ced25acc4d6fc5daf5.png)
1.5 查询不重复的信息/删除重复行
SELECT DISTINCT [column name] FROM [table name]
![7a9735cf18ea64ee6008a107e2eacb87.png](https://img-blog.csdnimg.cn/img_convert/7a9735cf18ea64ee6008a107e2eacb87.png)
注意:
- 如果将 DISTINCT 放在多个列名前,则删除的的是所有列信息均相同的行。
- 在使用 DISTINCT 时,NULL 也被视为一类数据。NULL 存在于多 行中时,也会被合并为一条 NULL 数据。
- DISTINCT 关键字只能用在第一个列名之前。 因此 SELECT id, DISTINCT c_name FROM classes 会报错。
1.6 连接列值
SELECT CONCAT([column name 1], [column name2], .... [column name N]) AS [new column name] FROM [table name]
![feddf975ef0d8fccf51853926af8a725.png](https://img-blog.csdnimg.cn/img_convert/feddf975ef0d8fccf51853926af8a725.png)
提示:在使用CONCAT连接列的同时,可以结合RTRIM, LTRIM和TRIM函数去掉空格。
1.6 限制返回行数
SELECT ... FROM ... LIMIT N
![9b9a0eb062061513f0c2b42ff16a141f.png](https://img-blog.csdnimg.cn/img_convert/9b9a0eb062061513f0c2b42ff16a141f.png)
1.7 跳过某些行
SELECT ... FROM ... LIMIT N1 OFFSET N2
LIMIT 指定返回的行数,LIMIT 带的 OFFSET 指定从哪儿开始。
MySQL支持简化版的 LIMIT 4 OFFSET 3 语句,即 LIMIT 3,4。 使用这个语法,逗号之前的值对应 OFFSET,逗号之后的值对应 LIMIT。
1.8 随机返回N条记录
SELECT ... FROM ... ORDER BY RAND() LIMIT N
<