首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SQL Server 数据库学习「建议收藏」

主键:建立一列或多列组合以唯一标识表中每一,主键可以保证实体完整性,一个表只能有一个主键。 (3)保存新建表,并给起一个名字。 (4)修改数据表。选择要修改数据表,右击——设计。...通过将保存表中主键值一列或多列添加到另一个表中,可以创建两个表之间连接。这个列为第二个表外键。...(1)创建视图 选择指定数据库——视图——新建视图——添加表——保存 (2)查看视图内容(记录) 选择要查看视图——编辑前200 (3)视图中删除数据记录 设计——删除 三、T-SQL 3.1分类...(1)简单基本连接 (2)内连接 内联接使用比较运算符根据每个表共有的列值匹配两个表中。 如: (3)外连接 外连不但返回符合连接和查询条件数据,还返回不符合条件一些。...左外链接: 右外连接: 完全连接:返回两个表中所有匹配和不匹配 3.3.2 insert 插入语句 3.3.3 update语句修改指定数据 3.3.4 delete 语句删除指定数据

1.6K10
您找到你想要的搜索结果了吗?
是的
没有找到

T-SQL查询》读书笔记Part 1.逻辑查询处理知多少

一、关于T-SQL   T-SQL是ANSI和ISO SQL标准MS SQL扩展,其正式名称为Transact-SQL,但一般程序员都称其为T-SQL。...(1-J1)笛卡尔积:对涉及到两个表执行笛卡尔积(交叉联接),生成虚拟表VT1-J1。 (1-J2)ON筛选器:对VT1-J1中根据ON子句中出现谓词进行筛选。...(5-1)计算表达式:计算SELECT列表中表达式,生成VT5-1。 (5-2)DISTINCT:删除VT5-1中重复,生成VT5-2。...ON和WHERE区别:WHERE对删除是最终,而ON对删除并不是,因此步骤1-J3添加外部行时会再添加回来。此外,只有当使用外连接时,ON和WHERE才存在这种逻辑区别。    ...这里没有使用COUNT(*)是因为在外联接中,COUNT(*)会把外部也统计在内,比如会将FISSA订单数统计为1,这明显是错误

1.1K40

那些年我们写过T-SQL(下篇)

DELETE是用完全日志模式,TRANCATE使用最小日志模式 基于联接DELETE 场景:从Orders表中删除所有与Customers表中美国客户相关 标准方式:DELETE FROM dbo.Orders...TOP关键字哦 OUTPUT字句 场景:从Orders表中删除所有与Customers表中美国客户相关 标准方式:DELETE FROM dbo.Orders WHERE EXISTS ( SELECT...隔离性(Isolation): 其实一种控制访问数据机制,在T-SQL中,支持锁和版本控制两种模式来处理隔离。...READ COMMITTED SNAPSHOT: 它与SNAPSHOT区别是,获取"语句"启动时可用最后提交版本,也就是在查询发起时最后提交可用版本,最后通过一个表格综述之前介绍6种不同隔离级别...那些年我们写过T-SQL(上篇):上篇介绍查询基础,包括基本查询逻辑顺序、联接和子查询 那些年我们写过T-SQL(中篇):中篇介绍表表达式、集合运算符和开窗函数 那些年我们写过T-SQL(下篇

2K50

那些年我们写过T-SQL(上篇)

本系列包含上中下三篇,内容比较驳杂,望大家耐心阅读: 那些年我们写过T-SQL(上篇):上篇介绍查询基础,包括基本查询逻辑顺序、联接和子查询 那些年我们写过T-SQL(中篇):中篇介绍表表达式、...补充一点关系代数知识,我们知道在关系模型中,所有操作均基于关系代数,并且操作结果是一个关系集合,但实际上我们返回结果集还是会出现重复情况,不过可以通过DISTINCT关键字删除重复。...关键字 解释与示例 TOP T-SQL特有功能,用于限制查询返回行数或百分比 获取前5记录:SELECT TOP 5 userid FROM HR.Employee ORDER BY userid...其中JOIN操作符对两个输入表进行操作,类型包括交叉联接、内部联接和外部联接,它们之间差别在于其逻辑查询处理阶段,这是本节最需要理解概念,是真正理解联接操作基础,通过一个表格来做一个初步了解(...这儿保留表也就是我们常说基准表,即其中每一条记录实际上都会在最终结果中显示出来,之后会通过一个内部、外部概念对其进行阐述。

3.1K100

T-SQL基础(二)之关联查询

在上篇博文中介绍了T-SQL查询基础知识,本篇主要介绍稍微复杂查询形式。 表运算符 表运算符作用是把为其提供表作为输入,经过逻辑查询处理,返回一个表结果。...SQL Server支持四个表运算符:JOIN、APPLY、PIVOT、UNPIVOT,其中JOIN是标准SQL中运算符,APPLY、PIVOT和UNPIVOT是T-SQL扩展。...,添加外部; 内部 & 外部 内部指的是基于谓词ON与另一侧匹配,外部则是未匹配,外部用NULL进行填充。...内联接结果集仅保留内部,外联接结果集返回内部和外部。...StackOverflow中扣出一张图片,可以概述外联接和内联接查询: [1240] 推荐阅读 T-SQL基础(一)之简单查询 What is the difference between “INNER

2.2K10

那些年我们写过T-SQL(中篇)

本系列包含上中下三篇,内容比较驳杂,望大家耐心阅读: 那些年我们写过T-SQL(上篇):上篇介绍查询基础,包括基本查询逻辑顺序、联接和子查询 那些年我们写过T-SQL(中篇):中篇介绍表表达式、...可能你会说使用外联接或者EXISTS运算符也可以达到相似效果,并在存在NULL比较情况下必须添加相应处理代码,使用集合操作符可以简化SQL代码。...开窗函数 其根据基础查询子集计算,为子集中每行计算一个标量结果值,子集被称为"窗口",通过OVER字句进行相关操作,简单来说以前对分组查询操作GROUP BY粒度仅限于一个聚合函数(子查询操作也类似...'), ('C'), ('D')) AS Custs(custid) ) SELECT * FROM CTE WHERE qty IS NOT NULL 逆透视包括也包括三个逻辑阶段:第一阶段需要通过交叉联接生成每一列对应一个副本...;第二阶段通过CASE运算符生成列(qty);最后一个阶段通过去qty IS NOT NULL删除不相关交叉点,这一点一定不能忘了。

3.7K70

《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(下)

相信很多人在笔试或面试时候被问到如何通过SQL实现行转列或列转行问题,可能很多人当时懵逼了,没关系,下面我们通过例子来理解。   ...(3)标准SQL进行逆透视转换   Step1.生成副本:CROSS JOIN 交叉联接生成多个副本   Step2.提取元素:通过CASE语句生成qty数据列   Step3.删除不相关交叉:过滤掉...③ 基于联接DELETE:也不是标准SQL语句,可以根据另一个表中相关属性定义过滤器来删除表中数据。   ...UPDATE dbo.T1 SET col1 = col2, col2 = col1;   ② 基于联接UPDATE语句:同样不是SQL标准语法,联接在此与基于联接DELETE一样是起到过滤作用...6.3 高级数据更新方法   ① 通过表表达式修改数据 -- 基于联接UPDATE UPDATE OD SET discount = discount + 0.05 FROM dbo.OrderDetails

8.9K20

《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(上)

(3)外联结:笛卡尔积→对结果过滤→添加外部   通过例子来理解外联结:根据客户客户ID和订单客户ID来对Customers表和Orders表进行联接,并返回客户和他们订单信息。...T-SQL支持以下两种选项:   (1)UNION ALL:不会删除重复 -- union all select country, region, city from hr.Employees union...在T-SQL中,INTERSECT集合运算对两个输入查询结果取其交集,只返回在两个查询结果集中都出现。   ...INTERSECT集合运算在逻辑上会首先删除两个输入集中重复,然后返回只在两个集合中中都出现。换句话说:如果一个行在两个输入集中都至少出现一次,那么交集返回结果中将包含这一。   ...EXCEPT结合运算在逻辑上首先删除两个输入集中重复,然后返回只在第一个集合中出现,在第二个结果集中不出现所有

1.9K51

详解SQL集合运算

以前总是追求新东西,发现基础才是最重要,今年主要目标是精通SQL查询和SQL性能优化。 本系列【T-SQL基础】主要是针对T-SQL基础总结。...2.UNION ALL集合运算 (1)假设Query1返回m,Query2返回n,则Query1 UNION ALL Query2返回(m+n); (2)UNION ALL 不会删除重复,所以它结果就是多集...2)UNION 会删除重复,所以它结果就是集合; (3)相同行在结果中只出现一次。...返回 h ; (2)INTERSECT集合运算在逻辑上首先删除两个输入多集中重复(把多集变为集合),然后返回只在两个集合中都出现; (3)INTERSECT 会删除重复,所以它结果就是集合...(3)EXCEPT 会删除重复,所以它结果就是集合; (4)EXCEPT是不对称,差集结果取决于两个查询前后关系。 (5)相同行在结果中只出现一次。

2.2K80

T-SQL基础】02.联接查询

概述: 本系列【T-SQL基础】主要是针对T-SQL基础总结。 本篇主要是对多表查询基础总结。...另外一种更正式方法是在关系代数基础上来考虑内联接联接运算首先对两个表求笛卡尔积(4A记录*5C记录=20记录),然后根据条件C.id=A.id对行进行过滤,最终返回16。...我们可以通过下面的查询,查询出没有订单客户 SELECT Cus.custid , O.orderid , O.custid , O.orderdate...2.从逻辑上说,这两个客户相关数据行在联接第二步(基于ON谓词条件过滤)就被过滤了,而在第三部又把这些作为外部添加了进来。 3.如果使用内联接,结果将不会返回这两。...添加这两后,就可以在结果中保留左边表所有。 4.外联接结果可以看作两种,内不行和外部,内部是ON字句条件能在另一边找到匹配那些;外部则是找不到那些

2.9K90

T-SQL基础(二)之关联查询

在上篇博文中介绍了T-SQL查询基础知识,本篇主要介绍稍微复杂查询形式。 表运算符 表运算符作用是把为其提供表作为输入,经过逻辑查询处理,返回一个表结果。...SQL Server支持四个表运算符:JOIN、APPLY、PIVOT、UNPIVOT,其中JOIN是标准SQL中运算符,APPLY、PIVOT和UNPIVOT是T-SQL扩展。...,添加外部; 内部 & 外部 内部指的是基于谓词ON与另一侧匹配,外部则是未匹配,外部用NULL进行填充。...内联接结果集仅保留内部,外联接结果集返回内部和外部。...笛卡尔乘积 将一个输入表每一与另一个表所有匹配,即,如果一张表有ma列,另一张表nb列,笛卡尔乘积后得到表有mn,a+b列*。

2K40

SQLServer中CTE通用表表达式

这些聚合数据可能会将 Customers、Orders 和 Order Details 表联接在一起,以计算订单总和以及平均值。此外,您可能想要查询聚合集。...例如,一个视图可以表示一个 SELECT 语句,该语句会将 10 个表联接起来,选择许多列,然后根据涉及一组逻辑来过滤。接着,可以通过其他 SELECT 语句在整个数据库中查询该视图。...要创建派生表,在由括号包围 FROM 子句中移动 SELECT 语句即可。接着就能像表或视图一样查询或者联接它。图 2 中代码解决查询与图 1 所解决相同,但使用是派生表而不是视图。...递归成员查询收集向其各自上级汇报员工列表。这通过联接 Employees 表和 EmpCTE 来实现。...结束语   比起那些在查询中使用复杂派生表或引用那些在 T-SQL 批处理外部定义视图方案,CTE 使得编写 T-SQL 更具可读性。

3.8K10

T-SQL基础】03.子查询

以前总是追求新东西,发现基础才是最重要,今年主要目标是精通SQL查询和SQL性能优化。 本系列【T-SQL基础】主要是针对T-SQL基础总结。...可以分两步: a.定义一个变量maxid ,通过独立标量子查询查询出empid最大员工empid,然后将这个empid保存到变量@maxid中 b.在WHERE条件中过滤出empid = @maxid...数据库引擎对两种查询解释有时候是一样,而在另外一些情况下,对二者解释则是不同。可以先用一种查询解决问题,如果性能不行,再尝试用联接替代子查询,或用子查询替代联接。...3.子查询之distinct关键字 当我们想要剔除掉子查询中重复值时,会想到在子查询中不必指定distinct关键字,其实是没有必要,因为数据库引擎会帮助我们删除重复值,而不用我们显示指定distinct...本题考察独立子查询用法,和第一题类似,分两个步骤: (1)先用子查询查询出订单数量最多客户id (2)然后将id返回给外部查询,外部查询通过客户id过滤出客户下过所有订单 方案一:独立标量子查询

1.8K60
领券