T-SQL语言基础 学习笔记
文章平均质量分 68
xufei96
SDET .net C#
展开
-
T-SQL 查询返回每个月的最后一天生成的订单
T-SQL 查询返回每个月的最后一天生成的订单 use tsql2012 select orderid, orderdate, custid, empid from sales.orders where month(dateadd(day, 1, orderd原创 2011-07-06 16:31:54 · 1136 阅读 · 0 评论 -
第二章 单表查询(4)
use TSQLFundamentals2008;go-- 1.返回2007年6月生成的订单select orderid, orderdate, custid, empidfrom Sales.Orderswhere orderdate > '20070601' and orderdate < '20070701'-- 2.返回每个月的最后一天生成的订单select orderi原创 2012-08-01 16:28:53 · 799 阅读 · 0 评论 -
第9章 事务和并发(1)
--9.1 事务--显示事务的定义需要以BEGIN TRAN语句作为开始.如果想提交事务,则应该以COMMIT TRAN语句显式结束事务;--如果不想提交事务(撤销事务中的修改),则应该以ROLLBACK TRAN语句显式结束事务。begin tran;use tempdb;goinsert into dbo.t1(keycol, col1, col2) values(4, 101,原创 2012-08-28 19:52:15 · 446 阅读 · 0 评论 -
第八章 数据修改(2)
use tempdb;goif OBJECT_ID('dbo.Orders', 'U') is not null drop table dbo.Orders; create table dbo.Orders ( orderid int not null constraint PK_Orders primary key, orderdate date not nu原创 2012-08-16 19:41:02 · 407 阅读 · 0 评论 -
第八章 数据修改(3)
--8.3 更新数据use tempdb;goif OBJECT_ID('dbo.orderdetails', 'u') is not null drop table dbo.orderdetailsif OBJECT_ID('dbo.orders', 'u') is not null drop table dbo.ordersselect * into dbo.orders fro原创 2012-08-20 14:10:02 · 378 阅读 · 0 评论 -
第10章 可编程对象(1)
--第10章 可编程对象--10.1 变量--变量用于临时保存数据值,以供在声明它们的同一批处理语句中引用。declare @i as int;set @i = 10;set @i += @i;select @i as i;declare @j as int = 10;use TSQLFundamentals2008;declare @empname as nvarchar(原创 2012-09-04 20:01:17 · 321 阅读 · 0 评论 -
第9章 事务和并发(2)
use TSQLFundamentals2008;go--9.3 隔离级别--隔离级别用于决定如何并发控制用户读写数据的操作。读操作可以是任何检索数据的语句,默认使用共享锁。--写操作是指任何对表做出修改的语句,需要使用排他锁。--可以设置的隔离级别有6个read uncommitted(未提交读)、read committed(提交读)、repeatable read--(可重复读)原创 2012-09-03 17:20:51 · 317 阅读 · 0 评论 -
第9章 事务和并发(3)
--9.3.6 隔离级别总结------------------------------------------------------------------------------------------------隔离级别 未提交读 不可重复读 丢失更新 幻读 检查更新冲突 使用行版本控制----------------------------原创 2012-09-04 19:25:41 · 359 阅读 · 0 评论 -
第10章 可编程对象(2)
--10.3 流程控制元素--10.3.1 if...else...if YEAR(CURRENT_TIMESTAMP) <> YEAR(DATEADD(day, 1, CURRENT_TIMESTAMP))print 'today is the last day of the year.'else print 'today is not the last day of the year原创 2012-09-05 14:09:34 · 394 阅读 · 0 评论 -
第八章 数据修改(4)
use tempdb;goselect * into dbo.orderdetails from TSQLFundamentals2008.Sales.OrderDetails;select * into dbo.orders from TSQLFundamentals2008.Sales.Orders;update odset discount=discount+0.5from原创 2012-08-28 10:25:06 · 341 阅读 · 0 评论 -
第八章 数据修改(5)
use tempdb;go--1-1 在tempdb中创建Customers表if OBJECT_ID('dbo.customers','u') is not null drop table dbo.customers;create table dbo.customers(custid int not null primary key,companyname nvarchar(40)原创 2012-08-28 13:47:24 · 684 阅读 · 2 评论 -
第10章 可编程对象(3)
--10.3 游标--可以用游标来处理查询返回的结果集中的各行,以指定的顺序一次只处理一行.--游标的缺陷:--使用游标严重违背了关系模型,关系模型要求按照集合来考虑问题.--游标逐行对记录进行操作会带来一定的开销.--使用游标需要为解决方案的物理操作编写很多代码,换句话说,得写很多代码来描述如何处理数据.set nocount on;use TSQLFundamentals200原创 2012-09-06 16:41:11 · 408 阅读 · 0 评论 -
第10章 可编程对象(5)
--10.7 例程--10.7.1 用户定义函数--用户定义函数(UDF,user-defined function)的目的是要封装计算的逻辑处理,有可能需要基于输入的参数,并返回结果。--SQL Server支持两种用户定义函数:标量UDF和表值UDF。标量UDF只返回单个数据值,而表值UDF则返回一个表。--UDF不允许有任何副作用.这一规定明显的含义是UDF不能对数据库中的任何架构或原创 2012-09-07 11:04:57 · 363 阅读 · 0 评论 -
第10章 可编程对象(4)
--10.6 动态SQL--SQL Server提供了两种执行动态SQL的方法:使用EXEC命令和使用sp_executesql存储过程。--当把用户的输入拼接为代码中的一部分时,要特别小心。黑客们经常会试图注入(inject)你--不想运行的代码。要防止SQL注入,最好的方法就是避免将用户的输入拼接为代码的一部分。--但是如果你确实需要将用户的输入拼接为代码的一部分,务必要对用户的输入进原创 2012-09-06 18:00:43 · 397 阅读 · 0 评论 -
第二章 单表查询(3)
use TSQLFundamentals2008;go--Datetime, SmallDatetime, Date, Time, DateTime2, DateTimeOffsetselect orderid, custid, empid, orderdatefrom Sales.Orderswhere orderdate = CAST('20070212' as datetime)原创 2012-08-01 14:57:20 · 611 阅读 · 1 评论 -
第二章 单表查询(2)
--2.2 谓词和运算符use TSQLFundamentals2008;goselect orderid, custid, empid, orderdatefrom Sales.Orderswhere (custid=1 and empid in(1,3,5))or(custid=85and empid in (2,4,6))--2.3 Case表达式select pr原创 2011-07-06 21:01:24 · 313 阅读 · 0 评论 -
第一章 T-SQL 查询和编程基础
1.1 理论背景SQL即Structured Query Language,它是为查询和管理关系型数据库管理系统中的数据而专门设计的一种标准语言。SQL有几种类型不同的语句,包括数据定义语言(DDL, Data Definition Language),数据处原创 2011-07-05 21:05:51 · 329 阅读 · 0 评论 -
第三章 联接查询(1)
use TSQLFundamentals2008;go--3.1 ½»²æÁ¬½Ó--cross joinselect c.custid, e.empidfrom Sales.Customers as ccross join HR.Employees as e;select c.custid, e.empidfrom Sales.Customers as c,HR.Emplo原创 2011-07-07 14:26:07 · 341 阅读 · 0 评论 -
第四章 子查询(1)
--4.1 独立子查询use TSQLFundamentals2008godeclare @maxid as int = (select MAX(orderid) from Sales.Orders)select orderid, orderdate, empid, custidfrom Sales.Orderswhere orderid = @maxid--4.1.1 独立标原创 2011-07-11 13:11:20 · 277 阅读 · 0 评论 -
第三章 联接查询(2)
--1-1 创建辅助表dbo.numsset nocount on;use TSQLFundamentals2008;goif OBJECT_ID('dbo.nums','u') is not nulldrop table dbo.numscreate table dbo.nums(n int not null, constraint PK_N primary key(n))de原创 2012-08-02 14:12:08 · 488 阅读 · 0 评论 -
第四章 子查询(2)
use TSQLFundamentals2008;--1返回Orders表中活动的最后一天生成的所有订单select orderid, orderdate, custid, empidfrom Sales.Orders as o1where orderdate = (select MAX(o2.orderdate) from Sales.Orders as o2)--2返回拥有订单原创 2012-08-02 18:30:55 · 720 阅读 · 0 评论 -
第五章 表表达式(1)
--表表达式--5.1 派生表--5.1.1 分配列别名--满足三个要求 --不能定义order by--所有的列必须有名称--所有的列必须是唯一的use TSQLFundamentals2008;select * from (select custid, companynamefrom Sales.Customerswhere country = N'USA') as us原创 2011-07-11 21:38:09 · 229 阅读 · 0 评论 -
第五章 表表达式(2)
use TSQLFundamentals2008;declare @name as nvarchar(max) = 'Anders Fan'--5.4 内联表值函数--除了支持输入参数之外,内联表值函数在其他方面与视图类似if OBJECT_ID('dbo.fn_getcustorders') is not nulldrop function dbo.FN_GetCustOrders原创 2012-08-06 12:27:38 · 391 阅读 · 0 评论 -
第五章 表表达式(3)
use TSQLFundamentals2008;GO--1-1 返回每个雇员处理过的订单的最近日期select e.empid, o.orderdate as maxorderdatefrom HR.Employees as e cross apply(select top(1) orderdate from Sales.Orderswhere e.empid = empidord原创 2012-08-06 19:11:02 · 666 阅读 · 0 评论 -
第一章 T-SQL 查询和编程基础
--如果testdb不存在,创建testdb数据库if DB_ID('testdb') is nullcreate database testdb;use testdb--如果表dbo.orders已经存在了,则删除该表if OBJECT_ID('dbo.orders','U') is not nulldrop table dbo.orders;--如果表dbo.employe原创 2011-07-05 18:13:01 · 324 阅读 · 0 评论 -
第六章 集合运算
use TSQLFundamentals2008;go;--6.1 UNION(并集)集合运算--UNION ALL不会删除重复行select country, region, city from HR.Employeesunion allselect country, region, city from Sales.Customers--UNION DISTINCT删除重复记录原创 2011-07-12 16:29:10 · 426 阅读 · 0 评论 -
第7章 透视、逆透视及分组集
use tempdb;go--第7章 透视、逆透视及分组集--7.1 透视转换--透视转换(pivoting)是一种把数据从行的状态转换为列的状态的处理if OBJECT_ID('dbo.orders', 'U') is not null drop table dbo.orders;create table dbo.orders(orderid int not null,ord原创 2012-08-14 19:06:13 · 606 阅读 · 0 评论 -
第八章 数据修改(1)
--第8章 数据修改--8.1 插入数据--8.1.1 INSERT VALUES 语句use tempdb;if OBJECT_ID('dbo.Orders', 'U') is not nulldrop table dbo.Orders;create table dbo.Orders(orderid int not nullconstraint PK_Orders prima原创 2011-07-15 14:48:10 · 280 阅读 · 0 评论 -
第二章 单表查询(1)
use TSQLFundamentals2008;select empid, YEAR(orderdate) as orderyear, COUNT(*) as numordersfrom Sales.Orderswhere custid=71group by empid, YEAR(orderdate)having COUNT(*)>1order by empid, orderye原创 2011-07-06 15:58:24 · 324 阅读 · 0 评论 -
第10章 可编程对象(6)
--10.7.3 触发器--触发器是一种特殊的存储过程,一种不能被显式执行,而必须依附于一个事件的过程。--触发器有很多用途,包括审核数据,实施不能通过约束而实现的完整性规则,实施一--定的策略,等等。--在触发器的代码中执行rollback tran将会导致触发器内发生的所有更改,以及和触发器--关联的事务中进行的所有更改都发生回滚。--10.7.4 DML触发器--两种DML触发原创 2012-09-07 13:45:35 · 380 阅读 · 0 评论