随笔分类 -  sql

sql总结内容
摘要:下面就T-SQL的几个方面来分别讲解一下。1、变量要动态的写sql语句,就不能没有变量。声明变量并赋值:1 declare @i as int;--定义一个 int 类型的 变量 (as可以省略)2 print @i;--这注意:没有赋值之前,程序不会报错,而且输出一个 空3 set @i=3;4 print @i;在sql server 2008之后就可以对变量 在声明的同时进行赋值1 declare @a int=3;2 print @a;在变量的使用过程中,一定要注意nvarcahr 和nchar的区别。1 declare @s nvarchar(20);2 set @s='He 阅读全文
posted @ 2013-12-11 17:26 小小gogo 阅读(6038) 评论(12) 推荐(15) 编辑
摘要:1、Transaction(事务)是什么:事务是作为单一工作单元而执行的一系列操作。包括增删查改。2、事务的种类:事务分为显示事务和隐式事务:隐式事务:就是平常我们使用每一条sql 语句就是一个事务,只不过他们执行完成之后事务就跟着结束了。显示事务:就是需要我们来手写了,这个时候就可以进行控制事务的开始和结束了。 1 --显式事务(对事物可以进行控制) 2 3 --开始事务 4 begin transaction; 5 update [Sales.Shippers] 6 set companyname='顺丰' where shipperid=5; 7 8 select * f 阅读全文
posted @ 2013-12-09 07:10 小小gogo 阅读(8505) 评论(11) 推荐(14) 编辑
摘要:1、透视原理:就是将查询结果进行转置下面就举例来说明:执行下面语句:检查是否含有表 dbo.Orders,如果有就将表删除:1 if OBJECT_ID('dbo.Orders','U') is not null2 drop table dbo.Orders然后创建表dbo.Orders:1 create table dbo.Orders2 (3 orderid int not null primary key,4 empid int not null,5 custid int not null,6 orderdate datetime,7 qty int8 ) 阅读全文
posted @ 2013-11-27 19:15 小小gogo 阅读(1901) 评论(0) 推荐(2) 编辑
摘要:1、派生表实质:就是特殊的子查询(将查询结果放在from后面)含有一张Order表:看下面的sql语句:1 select2 orderid,orderdate,custid3 from4 (5 select6 orderid,orderdate,custid,ROW_NUMBER() over(order by orderid) as rownum--列明必须起别名7 from [Sales.Orders]8 ) as t--表名必须起别名需要注意的特殊之处:查询出来的表要起别名,子查询里面的字段名也要起别名2、CTE(公共表的表达式)1)语法规范:1 with use_c... 阅读全文
posted @ 2013-11-24 21:34 小小gogo 阅读(1822) 评论(3) 推荐(5) 编辑
摘要:三张数据表关系如图:其实出现表循环依赖情况:就是 同时 ConfigCompany和 Department 也有依赖,就会报错,说有循环依赖,就会报错。所以 这个时候的解决办法:可以改 在数据库中建立联系 改成 逻辑 中建立关系。在EF里面就是 建立ConfigCompany 和 Department 表的 一对多的关系 值保留 ConfigCompany 的 主键的外键,但是不含有 ConfigCompany的 对象字段 阅读全文
posted @ 2013-11-20 18:55 小小gogo 阅读(1354) 评论(2) 推荐(0) 编辑
摘要:使用一个简单的例子,说明他们之间的区别使用的表:[Sales.Orders]订单表和[Sales.Customers]客户表,和上一篇博客的表相同业务要求:查询出 : 所有的用户 在2012-10-10 16:44:51.000订单数量通常筛选条件都会添加到连接外面 where 里面,例如:1 select2 c.custid,count(o.orderid)3 from [Sales.Customers] c left join [Sales.Orders] o4 on c.custid=o.custid5 where o.orderdate='2012-10-10 16:44:51 阅读全文
posted @ 2013-11-20 15:16 小小gogo 阅读(1020) 评论(0) 推荐(0) 编辑
摘要:1、首先我们来先看一个简单的例子:有[Sales.Orders]订单表和[Sales.Customers]顾客表,表的机构如下业务要求:筛选 来自“按时打算”国家的用户以及所下的订单数1 select2 o.custid,COUNT(*) as '订单数'3 from [Sales.Orders] o inner join [Sales.Customers] c4 on o.custid=c.custid5 where c.country='按时打算'6 group by o.custid;这样简单的查询,大家都能够看明白,就不再解释,就是使用了一个 内连接,和 阅读全文
posted @ 2013-11-20 14:41 小小gogo 阅读(6711) 评论(0) 推荐(0) 编辑
摘要:1、交叉连接(就是将两张表的数据 交叉组合在一起)有两张表 客户表:[Sales.Customers] 和订单表:[Sales.Orders]。业务需求:实现 Customer中custid(客户Id) 和 Orders表中的 Orderid的 交叉连接1 select 2 c.custid,o.orderid3 from [Sales.Customers] as c cross join [Sales.Orders] as o实现效果:2、内连接(使用最多的):inner join业务要求:查询出:Order对应的 Customer中的所有客户的所有订单1 select c.custid,o 阅读全文
posted @ 2013-11-14 00:33 小小gogo 阅读(559) 评论(0) 推荐(1) 编辑
摘要:1、独立子查询:顾名思义:就是子查询和外层查询不存在任何联系,是独立于外层查询的:下面就看一个例子:有一张订单表 Sales.Order 和一张 客户表 Sales.Customer下面的sql 语句是为了查询出Sales.Customer里 custid(用户id)不在Sales.Order 的custid1 select custid 2 from [Sales.Customers]3 where custid not in 4 (5 select custid 6 from [Sales.Orders]7 ) 2、相关子查询:顾名思义:就是子查询里面的条件依赖于外层查询的数据下面... 阅读全文
posted @ 2013-11-14 00:06 小小gogo 阅读(2827) 评论(0) 推荐(1) 编辑