INSERT INTO ... SELECT 语句, 将查询的结果插入到一张新表中(可为临时表)
DECLARE @MyTable Table ( SalesOrderID int, CustomerId char(5) ) INSERT INTO @MyTable SELECT SalesOrderID,CustomerID FROM AdventureWorks.Sales.SalesOrderHeader WHERE SalesOrderID BETWEEN 44000 AND 44010 SELECT * FROM @MyTable
联合查询:
假设有两张表如下:
Person表 和 Student表:
注意对比ID的值。 Person表为: 12347, Student表为 12356
inner join查询(inner通常可以省略):
select p.Id, p.Name,s.ID,s.StuName
from Person p inner join Student s on p.Id = s.ID
结果:返回的是两张表共有的数据
left outer jion查询,左外连接查询 (outer通常可以省略):
select p.Id, p.Name,s.ID,s.StuName
from Person p left join Student s on p.Id = s.ID
结果: 返回的是 左边表的所有数据,右边表没有匹配项的用 NULL 表示
right outer join查询, 右外连接查询(outer通常可以省略)
select p.Id, p.Name,s.ID,s.StuName
from Person p right join Student s on p.Id = s.ID
结果:返回的是 右边表的所有数据,左边表没有匹配项的数据用 NULL 表示
full outer join ,全连接查询 ,(outer通常可以省略)
select p.Id, p.Name,s.ID,s.StuName
from Person p full outer join Student s on p.Id = s.ID
结果:返回两张表中的所有的数据,若没有匹配的使用NULL 表示
对XML 数据的处理
设计一张表如图:
插入数据:
insert into XMLtest(S_ID,S_Data)
VALUES(1,'<学生信息><姓名>刘德华</姓名><性别>男</性别><班级>网络工程</班级><职位>班长</职位></学生信息>')
查询可知:
select * from XMLtest
结果:
双击后可查看:
选择特定的列,返回特定的行进行查询:
declare @data xml
set @data = (select S_Data from XMLtest where S_ID = 1)
SELECT @data.query('学生信息/姓名') 姓名, @data.query('学生信息/性别') AS 性别
结果: