mysql DQL语言

select语句

查询数据
语法格式:
select 去重 要查询的字段 from 表名
xxx join 要连接的表
on 等值判断
where 过滤
group by 根据哪个字段分组
having 过滤分组数据
order by (asc|desc)排序
limit 起始下标 显示数据的长度

查询所有数据
select * from student;

查询指定字段
select id from student;

查询多个字段,用逗号隔开
select id,name from student;

给查询到的数据字段取别名(也可以给别名),使用AS
select id as 学生学号 from student;

Concat(a,b)函数(连接)
select concat(‘学生学号:’,id) as 学号 from student;

计算
select 100*2+62 as 计算结果;

查询自增增量
select @auto_increment_increment;

查询系统版本
select version();

假如我们有一些学生的分数,给所有学生的分数都+1
select studentnum + 1 as ‘加分后’ from student;

如果想要筛选查询的结果,只需要在后面写一个where就好了
selectstudentnum fromstudent wherestudentnum between1002 and1003;

去重

使用distinct
语法格式:
select distinct 字段[] from 表名

查询并去重
select distinct studentnum from student;

数据库中的表达式:文本值、列、NULL、函数、计算表达式、系统变量…

模糊查询

下面具体的条件可以参考我写的运算符那一篇文章

使用like运算符 %表示0到n个字符 _表示一个字符
查询名字中姓刘的
select studentname from student where studentname like ‘刘%’;

查询名字中姓刘并且名字只有两个字的
select studentname from student where studentname like ‘刘_’;

查询名字中带有佳的
select studentname from student where studentname like ‘%佳%’;

查找studentnum=1001、1002、1003的学生
select studentnum from student wherestudentnum in (1001,1002,1003);

查找电话为空的学生
select studentnum,studentname from student where phone=’’ or phone is null;

<think>好的,用户想了解MySQLDQL(数据查询语言)的使用教程和示例。我需要先整理DQL的基本概念,然后分步骤讲解,并给出对应的示例代码。还要结合用户提供的引用内容,特别是引用1中的常见操作示例,引用2中的子查询,以及引用3中的排序查询部分。 首先,DQL的核心是SELECT语句,所以应该从基础查询开始,包括选择特定列、使用别名、去重等。然后逐步深入到条件查询,使用WHERE子句,包括比较运算符、逻辑运算符和模糊查询LIKE。接着是排序查询,根据引用3的内容,需要解释ORDER BY的用法和排序方式(ASC/DESC)。 接下来是聚合函数,这部分对数据分析很重要,比如COUNT、SUM、AVG等,要给出示例说明如何使用。分组查询GROUP BY和HAVING子句也是关键点,需要说明如何分组和过滤分组后的数据。 子查询部分需要参考引用2的内容,解释什么是子查询,如何在不同位置使用,比如在WHERE或FROM子句中。关联查询(JOIN)也是必须涵盖的,包括内连接、左连接、右连接的区别和应用场景。 分页查询LIMIT在引用3中也有提到,需要说明其语法和实际应用,尤其是在处理大量数据时的作用。组合查询UNION和UNION ALL的区别也需要简要说明。 最后,综合示例部分可以结合多个子句,展示一个复杂的查询是如何构建的。同时,注意事项部分要提醒用户常见错误,比如GROUP BY和HAVING的使用顺序,性能优化的小技巧等。 在生成相关问题时,要覆盖教程中提到的各个部分,比如基本语法、条件查询、子查询、性能优化等,确保用户能通过问题进一步深入学习。同时,确保所有示例代码使用正确的格式,数学表达式和独立公式按照要求处理,虽然这里可能用不到太多数学内容,但变量名如表名、列名需要用$符号包裹,例如$table_name$。 需要检查是否有遗漏的部分,比如是否有足够的示例,是否涵盖了用户提供的引用内容,特别是子查询和排序查询部分。另外,确保回答结构清晰,步骤分明,符合用户要求的教程和示例格式。最后,添加相关的引用标注,比如在子查询部分标注引用2,在排序部分标注引用3等。</think>### MySQL DQL数据查询语言教程与示例 #### 一、DQL基础语法 DQL(Data Query Language)的核心是`SELECT`语句,用于从数据库中检索数据。 **基本语法**: ```sql SELECT 列名1, 列名2 FROM 表名 [WHERE 条件] [ORDER BY 排序字段] [LIMIT 分页参数]; ``` **示例1:基础查询** ```sql -- 查询所有列 SELECT * FROM employees; -- 查询特定列并去重 SELECT DISTINCT department_id FROM employees; -- 使用别名 SELECT employee_id AS 编号, salary * 12 年收入 FROM employees; ``` --- #### 二、条件查询(WHERE) 通过`WHERE`子句筛选数据,支持运算符: - **比较运算符**:$=$, $>$, $<$, $>=$, $<=$, $<>$ - **逻辑运算符**:$AND$, $OR$, $NOT$ - **模糊查询**:$LIKE$ **示例2**: ```sql -- 查询薪资大于10000的IT部门员工 SELECT name, salary FROM employees WHERE department = 'IT' AND salary > 10000; -- 查询姓名以"张"开头的员工 SELECT name FROM employees WHERE name LIKE '张%'; ``` --- #### 三、排序查询(ORDER BY) 使用`ORDER BY`对结果排序,支持多字段排序[^3]: **语法**: ```sql SELECT 字段列表 FROM 表名 ORDER BY 字段1 [ASC|DESC], 字段2 [ASC|DESC]; ``` **示例3**: ```sql -- 按薪资降序、入职时间升序排列 SELECT name, salary, hire_date FROM employees ORDER BY salary DESC, hire_date ASC; ``` --- #### 四、聚合函数 常用聚合函数: - $COUNT()$:统计行数 - $SUM()$:求和 - $AVG()$:平均值 - $MAX()$/$MIN()$:最大/最小值 **示例4**: ```sql -- 统计各部门平均薪资 SELECT department_id, AVG(salary) 平均薪资 FROM employees GROUP BY department_id; ``` --- #### 五、分组查询(GROUP BY) 通过`GROUP BY`对数据分组,`HAVING`过滤分组结果: **示例5**: ```sql -- 查询平均薪资大于8000的部门 SELECT department_id, AVG(salary) FROM employees GROUP BY department_id HAVING AVG(salary) > 8000; ``` --- #### 六、子查询(Subquery) 子查询可嵌套在`WHERE`、`FROM`或`SELECT`中[^2]: **示例6**: ```sql -- 查询薪资高于部门平均水平的员工 SELECT name, salary FROM employees e1 WHERE salary > ( SELECT AVG(salary) FROM employees e2 WHERE e2.department_id = e1.department_id ); ``` --- #### 七、关联查询(JOIN) **常用连接类型**: - **内连接**(INNER JOIN):返回交集 - **左连接**(LEFT JOIN):返回左表全部+右表匹配 - **右连接**(RIGHT JOIN):返回右表全部+左表匹配 **示例7**: ```sql -- 查询员工及其部门名称 SELECT e.name, d.department_name FROM employees e INNER JOIN departments d ON e.department_id = d.id; ``` --- #### 八、分页查询(LIMIT) 使用`LIMIT`实现分页: **语法**: ```sql SELECT 字段列表 FROM 表名 LIMIT 起始索引, 每页数量; ``` **示例8**: ```sql -- 查询第2页数据(每页10条) SELECT * FROM employees LIMIT 10, 10; ``` --- #### 九、组合查询(UNION) 合并多个`SELECT`结果: ```sql SELECT 字段 FROM 表1 UNION [ALL] SELECT 字段 FROM 表2; ``` --- #### 十、综合示例 ```sql -- 查询2023年销售额前5名的产品 SELECT p.product_name, SUM(s.amount) 总销售额 FROM sales s INNER JOIN products p ON s.product_id = p.id WHERE YEAR(s.sale_date) = 2023 GROUP BY p.product_name ORDER BY 总销售额 DESC LIMIT 5; ``` --- ### 注意事项 1. **性能优化**:避免`SELECT *`,尽量指定列名[^1]。 2. **索引使用**:WHERE条件中的字段建议加索引。 3. **子查询深度**:多层嵌套子查询可能影响效率,可改用JOIN[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值