查询
简单查询
限定查询
| select 列名 from 表名 {where 条件} |
| is not null is null |
| WHERE 列名 [NOT] BETWEEN 取值1 AND 取值2 |
| WHERE {条件} [OR|AND] {条件} |
| SELECT * FROM user WHERE uid [NOT] IN (2,3,5) |
| |
模糊查询
| [NOT] LIKE '%字符串_' |
| != > < |
| |
排序
| SELECT 列名 FROM 表名 {WHERE 条件} ORDER BY 排序字段 ASC|DESC // 排序放在最后 |
| |
分组
| // 配合聚合函数使用,根据一个或多个列对结果集进行分组;例如对同一类别的字段进行求和操作 |
| select 列名1, sum() as 数量之和 from 表名 group by 列名1 |
| // 过滤:where 是在分组前过滤数据,where条件不能包含聚组函数 having 在分组之后过滤数据,条件中经常包含聚组函数 |
| select 列名 from 表名 having num > 10; |
| |
多表查询
| SELECT 列名1 别名1, 列名2 别名2 FROM 表名1 别名1, 表名2 别名2 {WHERE 连接条件 and 普通条件} {ORDER BY 排序字段 ASC|DESC} |
| |
| |
| select a.ename, b.deptno from emp e, dept b where e.deptno = b.deptno; |
| select a.ename, d.deptno from emp e join dept d on e.deptno = d.deptno; |
| |
| |
| |
| SELECT * FROM emp CROSS JOIN dept; |
| |
| SELECT * FROM emp NATURAL JOIN dept; |
| |
| SELECT * FROM emp JOIN dept USING(deptno); |
| |
| select a.ename, d.deptno from emp e inner join dept d on e.deptno <> d.deptno; |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| SELECT column_name(s) FROM table_name1 |
| UNION |
| SELECT column_name(s) FROM table_name2 |
| |
| |
| SELECT e1.Name AS employee_name FROM Employee AS e1, Employee AS e2 WHERE e1.ManagerId=e2.Id AND e1.Salary>e2.Salary |
| |
子查询
| |
| select e.ename, e.sal, b.deptno from emp as e , (select deptno, avg(sal) as sal from emp group by deptno) as b where e.deptno = b.deptno and e.sal > b.sal; |
| |
分页
| //LIMIT [位置偏移量] <行数> |
| SELECT * FROM students_info LIMIT 4; //查询前四条数据 |
| SELECT * FROM students_info LIMIT 3,5; //从第四条开始查询5条数据 |
| |
分组函数
| Count():计数 |
| Max():求最大值 |
| Min():求最小值 |
| Avg():求平均值 |
| Sum():求和 |
| |
| SELECT avg(sal),sum(sal) FROM emp WHERE deptno=20 // 例如查询部门编号为20的平均薪资及求和 |
| |
执行过程
select from where group by having union order by limit
其他
| alter table 表名 change id id int primary key auto_increment; // id设置为自动增长 |
| |
| ALTER TABLE `table_name` MODIFY COLUMN `CreateTime` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' ; // 插入数据时自动填充时间 |
| |
| ALTER TABLE `table_name` MODIFY COLUMN `UpdateTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' ; // 更新数据时自动填充时间 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术