SQL Server 语句
修改数据
Marge语句,
假设有表一表二两个表,需要根据表一中匹配的值更新表二.
有三种情况
1.表一有一些表二中不存在的行,需要将表一的行插入到表二中.
2.表二中有一些表一中不存在的行,需要从表二中删除行.
3.表一的一些行具有与表二中行相同的键,但是,这些行在非键列中具有不同的值,
这种情况下,需要使用来自表一的值更新表二的行.
如果单独使用insert,update,和delete语句,则必须构造三个单独的语句.
但SQL Server提供Merge语句用于同时执行三个操作.
首先,在Merge子句中指定sales.category 和 sales.category_staging 表.
其次s.category_id = t.category_id 确定sales.category 表中的行如何与sales.category_staging表中的行匹配.它类型join子句中的join条件.通常,使用主键或唯一键的键列进行匹配.
第三 ,Matched , Not Matched 和 Not Matched By Source.
1.Matched:执行是与合并条件匹配的行,对于匹配的行,需要使用sales.category_staging 表中的值跟新sales.category 表中的行列.
2.Not Matched:这些是sales.category_staging 表中的行,sales.category表中没有任何匹配的行,
这种情况下,需要将sales.category_staging 表中的行添加到sales.category表.
Not Matched By Target也称为目标不匹配.
3.No Matched by Source: 这些是sales.category 表中与sales.category_staging表中的任何行都不匹配的行,如果要将sales.category表和sales.category_staging表中的数据同步,则需要使用次匹配条件从sales.category表中删除行.
十.数据定义
SQL Server 数据类型
Character字符串 :
Char(n)固定长度的字符串。最多 8,000 个字符。
, varchar(n)可变长度的字符串。最多 8,000 个字符。
, varchar(max)可变长度的字符串。最多 1,073,741,824 个字符。
, text .可变长度的字符串。最多 2GB 字符数据。
Unicode 字符串 :
nchar(n)固定长度的 Unicode 数据。最多 4,000 个字符。
, nvachar(n)可变长度的 Unicode 数据。最多 4,000 个字符。
, nvachar(n)可变长度的 Unicode 数据。最多 536,870,912 个字符。
, ntext .可变长度的 Unicode 数据。最多 2GB 字符数据。
Varchar: 字符数据类型:可变长度的非Unicode字符,最大长度:最多8000字符.
字符大小:每个字符占用1个字节
使用:当数据长度为可变或可变长度列且 实 际数据始终小于容量时使用
Nvarchar:字符数据类型:可变长度,Unicode和非Unicode字符,最大长度:最多4000字符.
字符大小:每个Unicode/非Unicode字符占用 2 个字节
使用:限存储,仅在需要Unicode支持时使用,
–varchar(1)代表一字节 a 1字节 中 2字节
–nvarchar(1)代表两字节 a 1字节 中 2字节