sql笔记

where子句要放在order by子句之前

通配符通过LIKE,单字符匹配通过_,多字符匹配通过%,eg:select * from T_Employee where Fname LIKE '_erry'; select * from T_Employee where Fname LIKE 'DEV%';

select * from T_Employee where Fname is NULL;对于NULL不能使用=等其他来筛选,只能通过is或is not

select * from T_Emplyee where Fage between 20 and 30;

GROUP BY子句必须放在WHERE子句后面

WHERE子句中不能出现聚合函数,这种情况可用HAVING,eg:HAVING count(*)>2
WHERE是在分组前原表的数据过滤

HAVING是在分组后新建表的数据过滤
HAVING跟在GROUP BY后面

UNION会删除重复行,UNION ALL不会

CASE
WHEN a>b then a
WHEN b>a then b
ELSE 0
END
CASE可如上所示是比较时,后面不跟变量

DELETE只能删除行,不能删除列,因此DELETE的语句为DELETE FROM table WHERE *

 事务在数据库中执行有两种模式。第一种为自动提交模式:每条sql语句就是一个事务;第二种为直到用户执行COMMIT或者ROLLBACK为止算作一个事务。通常的数据库都可以选择其中任意一种模式。默认使用自动提交模式的数据库有SQL Server,PostgreSQL和MySQL等。自动提交模式下,每条SQL语句都被括在事务的开始语句和结束语句中。自动提交模式中,需要特别注意DELETE语句,因为在该模式下,执行了DELETE操作,即使再回滚也无济于事了。

子查询的分类:

–相关子查询
  执行依赖于外部查询的数据。
  外部查询返回一行,子查询就执行一次。
–非相关子查询
  独立于外部查询的子查询。
  子查询总共执行一次,执行完毕后后将值传递给外部查询。
 
SQL索引有两种,聚集索引和非聚集索引,索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间。
聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个。
聚集索引就是这样的,他是和表的物理排列顺序是一样的,非聚集索引中索引顺序和数据库表的排列顺序是不一样的。
使用聚集索引的效率高于非聚集索引。
 
a join b on *的原理为a表先和b表join为笛卡尔积,然后on的条件对笛卡尔积进行过滤。
 
posted @   ~宁静致远~  阅读(169)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示