随笔分类 - 03-数据库
摘要:小表驱动大表,即小的数据集驱动大得数据集。在知道什么是小表驱动达大表之前,我们先来了解两个查询关键字,IN 与 EXISTS。我们通过两段查询语句先来了解一下它们的作用。我建立了两张表,一张员工表,一张部门表,将这两张表关联起来。 我们先使用IN 来查询数据: SELECT * FROM t_emp
阅读全文
摘要::普通SQL语句可以用Exec执行 eg: Select * from tableName Exec('select * from tableName') Exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N 2:字段名,表名,数
阅读全文
摘要:如果想给自增列赋值,需先将自增关闭,插入完数据后再打开 set Identity_insert [tb1] on GO INSERT INTO [dbo].[tb1]([ID],[Name],[ClassName]) VALUES (4,'zhangsan','一班') GO set Identit
阅读全文
摘要:不记录,很快就忘记了;记录了,仿佛也记得更牢了 步骤如下: Step1:右击数据库,弹出的标签中选择Tasks Generate Scripts... Step2: 弹出新窗口中,勾选"请下次别烦了别通知我了",然后点击下一步 Step3:在又弹出的新页面,选择指定的数据库,然后勾选你想要的表,选择
阅读全文
摘要:悲观锁、乐观锁用来处理并发情况下出现的问题 模拟一个抢单的业务场景,一个乘客发了一个打车订单,很多司机去抢这个订单,执行的业务简单点来说是,先select出这条数据,然后update这个条数据中的driveName字段为自己的名字,但是现在会有这么一种现象,同时select出这条订单,先后更新dri
阅读全文
摘要:pivot帮助我们实现行转列,pivot出现之前只能通过下列sql实现行转列 转置sql1:查询多次表,性能差 select PaymentType 支付类型 ,count(*) 订单数 ,sum(RealUSDPayTotalPrice) 总支付金额 ,(select count(*) from
阅读全文
摘要:公用表表达式和派生表类似的另一种形式的表表达式,CTE中是先定义表,然后再引用,结构比较清晰 CTE相比派生表的优势:如果有多个子查询,不需要像派生表那样嵌套,只需要在WITH中定义多个CTE,每个CTE可以引用它前面定义的所有CTE 派生表:from子句中的子查询。 select * from (
阅读全文
摘要:使用场景: 得到部门中工资排名前N名的员工列表;查找各部门每人工资占部门总工资的百分比。 对于这些场景,使用传统SQL实现比较困难,这类需求有一个共同特点就是需要在满足某些条件的记录集内部做一些函数操作,不是简单的表连接、聚合就可以实现。 要解决此类问题,最方便的方式就是使用窗口函数。 窗口: 窗口
阅读全文