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

T-SQL基础(一)之简单查询

在使用NULL时应注意以下几点: 将NULL与其它进行比较,不管该是否为NULL,结果均为Unknown 应使用IS NULL或IS NOT NULL来判断是否为NULL INSERT未给指定则插入...NULL GROUP BYORDER BY子句会将多个NULL视为相等 标准SQL的UNIQUE约束认为NULL是为彼此不同 T-SQL中的UNIQUE约束认为多个NULL是相等的 COUNT(*)...的特殊性 若列名为tag的例中存在a,NULL,c,d几行数据,那么COUNT(*)返回4而COUNT(tag)则返回3 NULL参与的逻辑运算结果很可能是Unknown(三逻辑也是引发应用错误的重要原因...SELECT语句用于指定返回到查询结果集中的,生成查询结果表。注意,在SELECT子句之前执行的子句无法使用SELECT子句中的的别名,否则会返回Invalid column name错误。...CASE表达式有两种使用方式: CASE后面带有列名 这种情况下,WHEN子句中只能使用标量或返回标量的表达式,这种形式称为简单格式。

4.1K20

详解SQL集合运算

以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询SQL性能优化。 本系列【T-SQL基础】主要是针对T-SQL基础的总结。...如果输入的查询1的第一为char类型,输入的查询2的第一为datetime类型,则会提示转换失败:从字符串转换日期/或时间时,转换失败; (6)集合运算结果中列名由输入的查询1决定,如果要为结果分配结果...,才能用NOT EXISTS进行查询,如果custid或empid其中有null存在,则不能用NOT EXISTS进行查询,因为比较NULL的结果是UNKNOWN,这样的行用NOT EXISTS查询返回的子查询的行会被过滤掉...,才能用EXISTS进行查询,如果custid或empid其中有null存在,则不能用EXISTS进行查询,因为比较NULL的结果是UNKNOWN,这样的行用EXISTS查询返回的子查询的行会被过滤掉...,所以最后的外查询会少NULL的行,最后查询结果中会少NULL的行。

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

T-SQL基础(三)之子查询与表表达式

子查询 在嵌套查询中,最外面查询结果集返回给调用方,称为外部查询。嵌套在外部查询内的查询称为子查询,子查询的结果集供外部查询使用。 根据是否依赖外部查询,可将子查询分为自包含子查询相关子查询。...子查询可以返回单个(标量)、多个或者整个表结果。 在逻辑上,子查询代码仅在外部查询计算之前计算一次。...AS C ORDER BY C.custid ); 上述查询语句看起来可以正常运行,但当子查询的返回结果集中包含NULL时,上述查询语句则不会返回任何数据。...:warning: 我们应时刻牢记SQL是三逻辑,这点很容易引发错误 列名处理不当 子查询中的列名首先从当前查询中进行解析,若未找到则到外部查询中查找。...所有必须显式指定名称 所有列名必须唯一 表表达式分为:派生表、公用表表达式、视图三种类型。其中,派生表与公用表表达式只适用于单语句范围,即,只存在于当前查询语句中。视图则可以被多条查询语句复用。

1.6K40

T-SQL教程_sql server 2008使用

文章目录 T-SQL基础技术 基本语法格式 代码准备:(可以按照我的实例自行建立数据库) 1、投影查询 a、投影指定的 b、投影全部 c、修改查询结果的标题 d、去掉重复行 2、选择查询 a.表达式比较...T-SQL语言中最重要的部分是它的查询功能,查询语言用来对已经存在于数据库中的数据按 照特定的行、、条件表达式或者一定次序进行检索。...T-SQL对数据库的查询使用SELECT语句,SELECT语句具有灵活的使用方式强大的功能, SELECT语句的基本语法格式如下: 基本语法格式 SELECT select_list /* 指定要选择的...d.空使用 空是未知的,判定一个表达式的是否为空时,使用IS NULL关键字,语法格式如下: expression IS [ NOT ] NULL 代码示例: -- 2、【选择查询】 --....>] BETWEEN [] AND[] 由于连接多个表存在公共,为了区分是哪个表中的,引入表名前缀指定连接

1.6K30

T-SQL基础(四)之集合运算

集合的 用于集合运算符的两个查询必须返回相同数且对应列数据类型相互兼容的结果集。在进行比较运算时,集合运算符会认为两个NULL是相等的。...集合运算符返回结果集中的列名是第一个查询中的列名: USE WJChi; ​ SELECT Name AS 姓名,Age FROM dbo.UserInfo AS U1 UNION SELECT Name...INTERSECT 可以使用内联接或者EXSITS谓词来替代INTERSECT,但在比较运算时,INTERSECT将两个NULL视为相等,而替代方案不会。...可以使用外联接或者NOT EXISTS来替代EXCEPT,但在比较运算时,EXCEPT将两个NULL视为相等,而替代方案不会。...T-SQL未提供对INTERSECT ALL与EXCEPT ALL的支持,我们可以通过开窗函数ROW_NUMBER()来实现。 另外需要注意一点,集合运算符认为两个NULL是相等的。

1.4K40

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

5.2 逆透视   所谓逆透视(Unpivoting)转换是一种把数据从的状态旋转为行的状态的技术,它将来自单个记录中多个扩展为单个中具有相同值得多个记录。...换句话说,将透视表中的每个源行潜在地转换成多个行,每行代表源透视表的一个指定的。   ...对于INSERT操作不存在旧版本的,因此所有deleted返回NULL。$action函数会告诉我们输出行是UPDATE还是由INSERT操作生成的。 ?...如果在运行时,标量子查询返回了多个,则查询会失败。...如果条件取值可能为FALSE或UNKNOWN(例如,涉及到NULL),而且对每种情况需要进行不同的处理时,必须用IS NULL谓词对NULL进行显式地测试。

8.9K20

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

集合运算符开窗函数 那些年我们写过的T-SQL(下篇):下篇介绍数据修改、事务&并发可编程对象 ?...视图内嵌表函数(参数化视图) 视图 IF OBJECT_ID('sale.ChinaCusts') IS NOT NULL DROP VIEW sale.ChinaCusts GO...需要注意的一点是,集合操作符默认认为两个NULL是相等的,而不是之前逻辑操作符中提到的UNKNOWN。...集合操作符涉及的查询应该有相同数,并对应列具有兼容类型(即低级别数据可以隐式的转化为高级别数据,如int->bigint),查询的列名称由第一次查询决定(在其中设置别名)。...,表示当前记录的前一个记录后一个记录,记得在上篇的子查询有写过一种"小于该的最大"的方式,这儿使用函数更加的简单。

3.7K70

Windows server 2016——SQL server T-SQL查询语句

-- 二.使用T-SQL语句操作数据表 1.插入数据 insert [INTO] [列名] values # 可选 必须 可选 如果省略[列名],与表中字段的顺序保持一致...多个列名多个列表用逗号分隔 例: 向employee表中插入一行数据 insert into employee (姓名, 身份证号, 职务, 出生日期, 基本工资) VALUES ('郭靖...= 不等于 BETWEEN 指定的包含范围(包含边界),使用 And 分隔开始结束 IS [Not] NULL 指定是否搜索空或非空 LIKE 模糊查询,与指定字符串进行模式匹配 IN 是否在数据范围里面...FROM table_name # 改变结果集的列名: 查询employee表中姓名身份证号两数据 SELECT 姓名 AS name, 身份证号 as idcard...”两数据,查询结果“姓名”列名称显示为“name”,“身份证号”列名称显示为“idcard” 14、查询employee表中所有员工信息,按照基本工资从高到低显示查询结果 15、查询employee表中有哪些职务

17920

sqlserver创建视图索引「建议收藏」

例如,将 SET 选项 CONCAT_NULL_YIELDS_NULL 设置为 ON 后,表达式 ‘ abc ‘ + NULL返回 NULL。...但将 CONCAT_NULL_YIEDS_NULL 设置为 OFF 后,同一表达式会生成 ‘ abc ‘。 为了确保能够正确维护视图并返回一致结果,索引视图需要多个 SET 选项具有固定。...SET 选项 必需的 默认服务器 ,则“默认” OLE DB ODBC ,则“默认” DB-Library ANSI_NULLS ON ON ON OFF ANSI_PADDING...如果选择列表中的所有表达式、WHERE GROUP BY 子句都具有确定性,则视图也具有确定性。 在使用特定的输入集对确定性表达式求值时,它们始终返回相同的结果。...如果为 TRUE,则 COLUMNPROPERTY 返回 1;如果为 FALSE,则返回 0;如果输入无效,则返回 NULL。 这意味着该不是确定性,也不是精确

3.3K20

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

(4)关于OVER子句:为行定义一个窗口以便进行特定的运算   OVER子句的优点在于能够在返回基本的同时,在同一行对它们进行聚合;也可以在表达式中混合使用基本聚合。   ...WHERE region N'WA' OR region IS NULL;   另外,T-SQL对于NULL值得处理是先输出NULL再输出非NULL值得顺序,如果想要先输出非NULL,则需要改变一下排序条件...非NULL值得表达式返回为0,因此,它们会排在NULL(表达式返回1)的前面。如上所示的将CASE表达式作为第一个拍序列,并把region指定为第二个拍序列。...③ 使用NOT EXISTS谓词取代NOT IN隐式排除NULL:当对至少返回一个NULL的子查询使用NOT IN谓词时,外部查询总会返回一个空集。...这里需要说的是,集合运算对行进行比较时,认为两个NULL相等,所以就返回该行记录。 4.3 EXCEPT 差集运算 ?   在T-SQL中,集合之差使用EXCEPT集合运算实现的。

1.9K51

sql serve数据库基础入门(2)

目录 前言 一、通过sql语句管理表的结构 2.1 "添加" "删除" (1) 添加: (2) 删除: 2.2 "添加"约束 "删除"约束 (1) 添加约束 (2) 删除约束: 二、通过...----传送门 如果不了解数据库中的数据类型–传送门 一、通过sql语句管理表的结构 2.1 "添加" "删除" (1) 添加: 添加的格式: alter table 表名 --alter表示修改...add 列名 数据类型 示例1: 给student表添加Stature(身高),类型为numeric(4,2),允许为空,且身高需小于3.0米....删除的格式: alter table 要修改的表名 drop column 要删除的列名 示例1:删除student表身高stature....答:不能成功执行,上面在添加’sdept’时设置了不允许为空,所以不能将NULL插入列’sdept’中 (2)执行如下语句: insert into sc values('20110103

73530

如何修改自增列以及相应的解决方法

SQL Server 平台修改自增列 由于之前处理过sql server数据库的迁移工作,尝试过其自增列的变更,但是通过SQL 语句修改自增列,是严格不允许的,直接报错(无法更新标识 ’自增列名称...sql server我测试是2008、20122014,都不允许变更自增列,我相信SQL Server 2005+的环境均不允许变更字段。...如果非要在SQL Server 平台修改自增列的,那就手动需要自增列属性,然后修改该,修改成功后再手动添加自增列属性。...数据量大且多表关联的,那就通过T-SQL来变更。该方法最大的缺点就是要通过手工辅助取消添加自增属性的。...mysql中存在自增列,如果其引擎是myisam,则该可以为独立主键,也可以为复合主键,即该必须为主键的关联;如果其引擎是innodb,则该必须是独立主键

3.5K80

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

概述: 本系列【T-SQL基础】主要是针对T-SQL基础的总结。 本篇主要是对多表查询基础的总结。...(3)对于来自联接的非保留表的那些,追加的外部行中的这些则用NULL作为占位符。 集合A包含两个集合,集合A1集合A2,集合B包含两个集合,集合B1集合B2。...1.他们的ID分别为2257。查询结果中这两个客户在Order表中的都为NULL。...2.对于任何外联接(左外联接欸、右外联接、全外联接),如果后面紧跟着一个内联接或右外联接,都会抵消外联接的外部行。前提是,联接条件对来自联接左边的NULL联接右边的某些进行了比较。...(2)订单的日期的过滤条件只是用于决定是否匹配,但不是决定客户行的最终条件。

2.9K90
领券