SQL Server 的查询语句,用起来其实挺有门道的。你平时写查询是不是也总是从一张表开始?但如果你想搞清楚多张表之间的关联、做统计、筛选、分组这些操作,那下面这份总结还挺值一看的。比如说,多表连接你可以用INNER JOIN
、LEFT JOIN
这些来搞定表与表之间的关系,像BookInformation
和Borrow
之间的借书数据,就靠这个连起来的。
查询统计的时候,聚合函数是绕不过去的。像COUNT(*)
和COUNT(DISTINCT ...)
,用来数一数行数或者去重统计都比较常见。还有那种GROUP BY
的用法,配合聚合函数一起用,效果更强。比如你想知道每个学生借了几本书,GROUP BY sStudentId
就挺好使的。
还有个用得比较多的是条件过滤,WHERE
语句能帮你把不想要的数据筛掉,比如只查某个班级、某段时间的记录,方便。说到时间,SQL Server 的日期函数也挺强的,DATEPART
、DATEDIFF
这些在做报表、统计的时候有用。
要是你喜欢写点更复杂的逻辑,子查询也能派上用场,比如查询某个学生借的书是啥,可以在SELECT
里面套个子查询。另外,虽然这次例子里没写,但窗口函数像ROW_NUMBER()
、RANK()
这些也挺值得学,写排行榜之类的场景好用。
再进阶一点的,还有游标和动态 SQL。游标可以一行一行数据,虽然慢点,但有时候真就需要这么细的控制。而动态 SQL 就适合那种查询条件老变的情况,拼字符串执行 SQL,灵活性更高。
顺便提一下,自连接也是个挺实用的技巧,像一个表里有父子关系,比如员工和上级、课程和前置课程这种,就靠它来搞。,如果你还想更进一步,可以去看看存储过程、事务这些,配合查询写出来的功能会更稳更灵活。
哦对了,下面这几个教程我觉得还不错,配合着看更容易理解:
- SQL Server 多表连接查询分类教程
- SQL Server 聚合函数
- left_join_on_and 与 left_join_on_where 的区别
- Join 在 SQL Server 中的基础及管理
如果你最近正好在调查询语句,不妨参考下这些点,写起来会顺不少~