SELECT 语句不详解

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 性别

结果:

  

原文地址:https://www.cnblogs.com/TangPro/p/3250791.html