在使用NULL值时应注意以下几点: 将NULL与其它值进行比较,不管该值是否为NULL,结果均为Unknown 应使用IS NULL或IS NOT NULL来判断值是否为NULL INSERT未给列指定值则插入...NULL GROUP BY和ORDER 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子句中只能使用标量或返回标量的表达式,这种形式称为简单格式。
子查询 在嵌套查询中,最外面查询结果集返回给调用方,称为外部查询。嵌套在外部查询内的查询称为子查询,子查询的结果集供外部查询使用。 根据是否依赖外部查询,可将子查询分为自包含子查询和相关子查询。...子查询可以返回单个值(标量)、多个值或者整个表结果。 在逻辑上,子查询代码仅在外部查询计算之前计算一次。...AS C ORDER BY C.custid ); 上述查询语句看起来可以正常运行,但当子查询的返回结果集中包含NULL值时,上述查询语句则不会返回任何数据。...:warning: 我们应时刻牢记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值的行。
文章目录 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、【选择查询】 --....>] 列名1> BETWEEN [] 列名2>AND[] 列名3> 由于连接多个表存在公共列,为了区分是哪个表中的列,引入表名前缀指定连接列。
[=default] 是参数的默认值. return_data_type 是一个标量的用户定义函数的返回值. function body 指定一系列T-SQL语句....Ø 创建标量函数 标量函数接受一个参数并且返回在RETURNS从句中指定的类型的一个数据值。标量函数可以返回除了文本、ntext、图片、光标和时间戳之外的任何数据类型。...创建表值函数 内联表值函数从一个SELECT语句的结果集返回一个表数据的变量。内联函数不再BEGIN和END语句中包含函数体。...多语句表值函数 多语句表值函数使用多个语句来创建表,它被返回给调用语句。函数体包含BEGIN.。。。END块,它保存一系列T-SQL语句以创建和插入行盗临时表。...3、存储过程如何返回值? 4、下面的哪个结构被使用,当你需要重复执行一系列T-SQL语句的时候?
] [数据类型] 标识列(标识种子,增长量) 设置主键列不能为空 [StuId] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL, -- [列名] [数据类型...] 非空 [StuName] [nvarchar](30) NOT NULL, [StuAddress] [nvarchar](100) NULL, -- [列名] [数据类型...] 可以为空默认值 [StuClass] [nvarchar](30) NULL DEFAULT('T0811'), [StuEmail] [nvarchar](30) NULL,...[WHERE ] [ORDER BY 列名> [ASC 或DESC]]] -- 1.查询所有的数据行和列 SELECT * FROM Students -- 2.查询部分行列—..., '上海') ORDER BY StuAddress -- SQL Server 中的聚合函数 -- 1.Sum 总和 -- 2.Avg 平均值 -- 3.Max和Min 最大值和最小值 -- 4.Count
函数声明为 public function encryptByKey($data, $inputKey, $info = null){} public function decryptByKey($data..., $inputKey, $info = null){} encryptByKey & decryptByKey 存在着第三个参数,比如我们可以传递会员的ID等,这样此信息将和$inputKey一起作为加密解密的钥匙...注意:hashData的第三个参数代表生成的哈希值是否为原始二进制格式....,否则会返回假。...validateData 函数的第三个参数应该与使用 hashData() 生成数据时的值相同. 它指示数据中的散列值是否是二进制格式. 如果为false, 则表示散列值仅由小写十六进制数字组成.
5.2 逆透视 所谓逆透视(Unpivoting)转换是一种把数据从列的状态旋转为行的状态的技术,它将来自单个记录中多个列的值扩展为单个列中具有相同值得多个记录。...换句话说,将透视表中的每个源行潜在地转换成多个行,每行代表源透视表的一个指定的列值。 ...对于INSERT操作不存在旧版本的值,因此所有deleted列的值都返回NULL。$action函数会告诉我们输出行是UPDATE还是由INSERT操作生成的。 ?...如果在运行时,标量子查询返回了多个值,则查询会失败。...如果条件取值可能为FALSE或UNKNOWN(例如,涉及到NULL值),而且对每种情况需要进行不同的处理时,必须用IS NULL谓词对NULL值进行显式地测试。
集合的列 用于集合运算符的两个查询必须返回相同列数且对应列数据类型相互兼容的结果集。在进行比较运算时,集合运算符会认为两个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)主键 58 表中有一列或几列组合的值能用来唯一地标识表中的每一行,这样的一列或者多列组合叫做表的主键。...(1)常量:表示单个指定数据值的符合(如:字符,数字、字) 97 (2)列名(表当中列的名称,表达式中仅允许使用列的名称) 98 (3){一元运算符}:仅有一个操作数的运算符...使用T-SQL插入数据 113 a.语法:insert [into] [列名] values 值列表> 114 b.一次性插入多行数据 115 (1)通过Insert...[where ] 170 [order by 列名> [ASC或DESC]] 171 (1)查询所有的数据行和列 172 select...1,列名2) values (值1,值2)) 783 存储过程中不允许创建视图 784 参数列表建议:输入-输出-含默认值 查询赋值(只有一条)
集合运算符和开窗函数 那些年我们写过的T-SQL(下篇):下篇介绍数据修改、事务&并发和可编程对象 ?...视图和内嵌表值函数(参数化视图) 视图 IF OBJECT_ID('sale.ChinaCusts') IS NOT NULL DROP VIEW sale.ChinaCusts GO...需要注意的一点是,集合操作符默认认为两个NULL值是相等的,而不是之前逻辑操作符中提到的UNKNOWN。...集合操作符涉及的查询应该有相同列数,并对应列具有兼容类型(即低级别数据可以隐式的转化为高级别数据,如int->bigint),查询的列名称由第一次查询决定(在其中设置列别名)。...,表示当前记录的前一个记录和后一个记录,记得在上篇的子查询有写过一种"小于该值的最大值"的方式,这儿使用函数更加的简单。
在应用时直接调用即可 /// public abstract class SqlHelper { //获取数据库连接字符串,其属于静态变量且只读,项目中所有文档可以直接使用,但不能修改...private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable()); /// ///执行一个不需要返回值的...return rdr; } catch { conn.Close(); throw; } } /// /// 执行一条返回第一条记录第一列的...cmd.ExecuteScalar(); cmd.Parameters.Clear(); return val; } } /// /// 执行一条返回第一条记录第一列的...commandParameters; } /// /// 获取被缓存的参数 /// /// 用于查找参数的KEY值<
-- 二.使用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表中有哪些职务
这张表的每一行提供:国家名称、所属大陆、面积、人口和 GDP 值。...返回值1,否则返回值为0 IFNULL(expr1,expr2) 如果expr1值为null返回expr2的值,否则返回expr1的值 /* Write your T-SQL query statement...sex 这一列的值是 ENUM 类型,只能从 ('m', 'f') 中取。 本表包含公司雇员的信息。...匹配前面的模式至少n次,但不超过m次。 第4天 组合查询 & 指定选取 1965....需求 编写一个 SQL 查询,获取并返回 Employee 表中第二高的薪水 。 如果不存在第二高的薪水,查询应该返回 null 。 查询结果如下例所示。
例如,将 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。 这意味着该列不是确定性列,也不是精确列。
例如,Oracle 把自己扩展的 SQL 称为 PL/SQL,Microsoft 把自己扩展的 SQL 称为 T-SQL。...SELECT 子句 我们可以使用 * 返回全部列,或者单独指定希望返回的列名列表。 我们还可以对列进行算数运算,使用 AS 对某列指定别名。...-- 返回全部列 SELECT * FROM customers; -- 返回某些列 SELECT first_name, age FROM customers; -- 对列进行算数运算 SELECT...包括指定的开始值和结束值。.../ IS NOT NULL IS NULL 用于缺失属性值的记录搜索: SELECT * FROM customers WHERE phone IS NULL; ORDER BY 子句 可以使用 ORDER
(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集合运算实现的。
目录 前言 一、通过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
// 如果存在和参数名称相同的列,则将列值赋给当前名称的参数..... /// /// /// 此方法不提供访问存储过程输出参数和返回值 /// 示例:...DataSet. /// /// /// 此方法不提供访问存储过程输出参数和返回值. /...DataSet. /// /// /// 此方法不提供访问存储过程输入参数和返回值. /...DataSet. /// /// /// 此方法不提供访问存储过程输入参数和返回值. /
概述: 本系列【T-SQL基础】主要是针对T-SQL基础的总结。 本篇主要是对多表查询基础的总结。...(3)对于来自联接的非保留表的那些列,追加的外部行中的这些列则用NULL作为占位符。 集合A包含两个集合,集合A1和集合A2,集合B包含两个集合,集合B1和集合B2。...1.他们的ID分别为22和57。查询结果中这两个客户在Order表中的列都为NULL。...2.对于任何外联接(左外联接欸、右外联接、和全外联接),如果后面紧跟着一个内联接或右外联接,都会抵消外联接的外部行。前提是,联接条件对来自联接左边的NULL值和联接右边的某些值进行了比较。...(2)订单的日期的过滤条件只是用于决定是否匹配,但不是决定客户行的最终条件。
领取专属 10元无门槛券
手把手带您无忧上云