SQL集合运算符以及数据定义

集合运算符

1、Union(并集)

两个数据进行Union操作时需注意以下的查询要求:

  • 两个查询中列的数量必须相同

  • 相应列的数据类型必须相同或兼容

Union自带去重效果,Union all则不会去重,Union all指查询并集所有

 

2、Intersect(交集)

SELECT
    city 
FROM   sales.customers
INTERSECT
SELECT
    city
FROM
    sales.stores
ORDER BY
    city;

查询的是两组数据中相同的数据

 

3、差积

Except比较两个查询的结果集,并返回第一个查询中不是由第二个查询输出的不同行。换句话说,Except从一个查询结果中减去另一个查询的结果集。

查询的结果集的规则:

  • 两个查询中列的数量和顺序必然相同

  • 相应列的数据类型必须相同或兼容

 

修改数据

1、Insert语句,新增

Insert语句中向表中添加新行

Insert into 需要添加的表名(需要添加的字段)
values (需要添加的数据)

例子:

insert into sales.promotions(promotion_name,discount,start_date,expired_date)
values(‘zhangsan’,0.22,’2022-01-01,‘2022-12-12’)

创建新表

create table 类型.表明(
    xxxxxx int(数据类型) primary key(主键) identity(1,1),
    xxxxxx varchar(255)(数据类型为varchar类型拥有255个字符) not null(不为空),
    xxxxxx numeric(3,2) default 0,
    xxxxxx date(日期类型) not null(不为空),
    xxxxxx date(日期类型) not null(不为空)
)

Insert,新增多行数据

要一次向表中添加多行,请使用以下形式的 INSERT 语句:
 

INSERT INTO table_name (column_list)
VALUES
    (value_list_1),
    (value_list_2),
   ...
    (value_list_n);

INSERT INTO 表名(column_list)
VALUES
    (数据行1),
    (数据行2),
   ...
    (数据行n);

在此语法中,不使用单个值列表,而是使用多个以逗号分隔的值列表进行插入。
使用此形式的 INSERT 语句,一次可以插入的行数为 1000 行 

Insert Into select语句

将其他表中的数据插入另一个表中,就可以使用Insert Into select语句

INSERT  [ TOP ( expression ) [ PERCENT ] ] 
INTO target_table (column_list)
select_query

INSERT [TOP(expression)[PERCENT]]
INTO 被插入的表名(返回column_list中指定对应的数据)
select_query

update语句,更新

update 表名
set 需要更新的行的名称 = 需要更新的行的名称+1,
    需要更新的行的名称 = 需要更新的行的名称+1

dalete语句,删除

  • 首先,指定要从中删除数据的表的名称

  • 其次,在where子句中指定条件以选择删除的行,where子句是可选的。如果不指定where子句,则表中所有行都将被删除

delete from sales.taxes where state='Alabama'
delete from 需要删除的表名 where 删除的条件

merge语句

一个语句干完三件事情,它可以完成更新、插入、删除

merge

merge sales.category t using sales.category_staging s
on s.category_id = t.category_id
when not matched(不匹配情况下) /*匹配到的数据,按照新表的数据进行更新*/
    then update set t.category_name=s.category_name,t.amount=s.amount
when not matched by target  /*目标表中匹配不到的数据,在这插入*/
    then insert(category_id,category_name,amount) /*插入时没有写向那个表插入,默认向目标表插入*/
        values(s.category_id,s.category_name,s.amount)
when not matched by source /*源表中找不到的数据,在这里删除*/
    then delete;

数据定义

SQL server数据类型

Character字符串:

数据类型描述存储
char(n)固定长度的字符串。最多8000个字符
varchar(n)可变长度的字符串。最多8000个字符
varchar(max)可表长度的字符串。最多1073,741,824个字符
text可表长度的字符串。最多2GB字符数据

Unicode字符串:

数据类型描述
nchar(n)固定长度的Unicode数据。最多4000个字符
nvarchar(n)可变长度的Unicode数据。最多4000个字符
nvarchar(max)可表长度的Unicode数据。最多536,870,912个字符。
ntext可表长度的Unicode数据。最多2GB字符数据

varchar与nvarchar比较

比较项varcharnvarchar
字符数据类型可变长度的非Unciode字符可变长度,Unicode和非Unicode字符,比如:中文,日语和韩语
最大长度最多8000个字符最多4000个字符
字符大小每个字符占用1个字节每个Unicode/非Unciode字符占用2个字节
使用当数据长度为可变长度列且,实际数据始终小于容量时使用仅限存储,仅在需要Unciode支持时使用,例如:汉字,日语或韩文字符

Binary类型:

数据类型描述
bit允许0、1或NULL
binary(n)固定长度的二进制数据,最多8000字节
varbingary(n)可变长度的二进制数据,最多8000字节
varbinary(max)可变长度的二进制数据,最多2GB
image可变长度的二进制数据,最多2GB

Number数字类型:

数据类型描述存储
tinyint允许从0到255的所有数字1字节
smallint允许从-32,768到32,767的所有数字2字节
int允许从-2,147,483,648到2,147,483,647的所有数字4字节
bigint允许介于-9,223,372,036,854,775,808和9,223,372,036,854,775,807之间的所有数字8字节
decimal(p,s)固定精度和比例的数字。允许从-10^38+1到10^38-1之间的数字。p参数指示可以存储的最大位数(小数点左侧和右侧)。p必须是1到38之间的值。默认是18。s参数指示小数点右侧存储的最大位数。s必须是0到p之间的值,默认是08字节
numeric(p,s)固定精度和比例的数字。允许从-10^38+1到10^38-1之间的数字。p参数指示可以存储的最大位数(小数点左侧和右侧)。p必须是1到38之间的值。默认是18.s参数指示小数点右侧存储的最大位数。s必须是0到p之间。默认是05-17字节
smallmoney介于-214,748.3648和214,748.3647之间的货币数据4字节
money介于-922,337,203,685,477.5808和922,337,203,685,477.5807之间的货币数据8字节
float(n)从-1.79E+308到1.79E+308的浮动精度数字数据。参数n指示该字段保存4字节还是8字节。float(24)保存4字节,而float(53)保存8字节。n的默认值是534或8字节
real从-3.40E+38到3.40E+38的浮动精度数字数据·4字节

Date类型

数据类型描述存储
datetime从1753年1月1日到9999年12月31日,精度为3.33毫秒8bytes
datetime2从1753年1月1日到9999年12月31日,精度为100纳秒6-8bytes
smalldatetime从1900年1月1日到2079年6月6日,精度为1分钟4bytes
date仅存储日期,从0001年1月1日到9999年12月31日3bytes
time仅存储时间。精度为100纳秒3-5bytes
datetimeoffset与datetime2相同,外加时区偏移。8-10bytes
timestamp存储唯一的数字,每当创建或修改某行时,该数字会更新。timestamp基于内部时钟,不对应真实时间,每个表只能有一个timestamp变量
delete from sales.visits
用delete from删除的数据可以通过日志找回

truncate table sales.visits
用truncate tabl可以删除表内所有值并重置标识值,但是表内的数据将

其他数据类型(了解)

数据类型描述
sql_variant存储最多8000字节不同数据类型的数据,除了text、ntext以及timestamp
uniqueidentifier存储全局标识符
xml存储xml格式化数据。最多2GB
cursor存储对用于数据库操作的指针的引用
table存储结果集,供稍后处理
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值