数据库学习纪要(十二):SQL Sever介绍-4
十四、组合查询
SQL允许执行多个查询(多条SELECT语句),并将结果作为单个查询结果集返回。这些组合查询通常称为并(union)或复合查询(compound query)。
任何具有多个WHERE子句的SELECT语句都可以作为一个组合查询给出。
1、使用UNION
给出每条SELECT语句,在各条语句之间放上关键之UNION。
举例:假如需要位于Illinois、Indiana和Michigan的所有客户的一个报表,而且还想包括所有Fun4All单位而不管位于哪个州。
单条语句
SELECT cust_name, cust_contact, cust_email
FROM Customers
WHERE cust_state IN ('IL', 'IN', 'MI');
SELECT cust_name, cust_contact, cust_email
FROM Customers
WHERE cust_name = 'Fun4All';
组合语句
SELECT cust_name, cust_contact, cust_email
FROM Customers
WHERE cust_state IN ('IL', 'IN', 'MI')
UNION
SELECT cust_name, cust_contact, cust_email
FROM Customers
WHERE cust_name = 'Fun4All';
或者可以用WHERE语句
SELECT cust_name, cust_contact, cust_email
FROM Customers
WHERE cust_state IN ('IL', 'IN', 'MI')
OR cust_name = 'Fun4All';
UNION规则:
1)UNION必须由两条或两条以上的SELECT语句组成,语句之间用关键字UNION分隔。
2)UNION中的每个查询必须包含相同的列、表达式或聚集函数
3)列数据类型必须兼容:类型不必完全相同,但必须是DBMS可以隐含地转换的类型
2、对组合查询结果排序
在用UNION组合查询时,只能使用一条ORDER BY子句,它必须出现在最后一条SELECT语句之后。
SELECT cust_name, cust_contact, cust_email
FROM Customers
WHERE cust_state IN ('IL', 'IN', 'MI')
UNION
SELECT cust_name, cust_contact, cust_email
FROM Customers
WHERE cust_name = 'Fun4All'
ORDER BY cust_name, cust_contact;
十五、插入数据
INSERT是用来插入(或添加)行到数据库表的,通常以下列几种方式使用:
1)插入完整的行
2)插入行的一部分
3)插入某些查询的结果
1、插入行
INSERT INTO Custmoers(cust_id,
cust_contact,
cust_email)
VALUES('1000000006',
NULL,
NULL)
注:如果某个列没有值,应该使用NULL值。
2、插入检索出的数据
INSERT INTO Customers(cust_id,
cust_contact,
cust_email)
SELECT cust_id,
cust_contact,
cust_email
FROM CustNew;
十六、更新和删除数据
1、更新数据
可采用两种方式使用UPDATE:
1)更新表中特定行
2)更新表中所有行
UPDATE Customers
SET cust_email = 'kim@thetoystore.com',
cust_contact = 'Sam Roberts',
cust_name = NULL (注:等价于删除某个值)
WHERE cust_id = '10000000006';
2、删除数据
可采用两种方式使用DELETE:
1)从表中删除特定的行
2)从表中删除所有行
SELECT FORM Customers
WHERE cust_id = '100000006';
SQL允许执行多个查询(多条SELECT语句),并将结果作为单个查询结果集返回。这些组合查询通常称为并(union)或复合查询(compound query)。
任何具有多个WHERE子句的SELECT语句都可以作为一个组合查询给出。
1、使用UNION
给出每条SELECT语句,在各条语句之间放上关键之UNION。
举例:假如需要位于Illinois、Indiana和Michigan的所有客户的一个报表,而且还想包括所有Fun4All单位而不管位于哪个州。
单条语句
SELECT cust_name, cust_contact, cust_email
FROM Customers
WHERE cust_state IN ('IL', 'IN', 'MI');
SELECT cust_name, cust_contact, cust_email
FROM Customers
WHERE cust_name = 'Fun4All';
组合语句
SELECT cust_name, cust_contact, cust_email
FROM Customers
WHERE cust_state IN ('IL', 'IN', 'MI')
UNION
SELECT cust_name, cust_contact, cust_email
FROM Customers
WHERE cust_name = 'Fun4All';
或者可以用WHERE语句
SELECT cust_name, cust_contact, cust_email
FROM Customers
WHERE cust_state IN ('IL', 'IN', 'MI')
OR cust_name = 'Fun4All';
UNION规则:
1)UNION必须由两条或两条以上的SELECT语句组成,语句之间用关键字UNION分隔。
2)UNION中的每个查询必须包含相同的列、表达式或聚集函数
3)列数据类型必须兼容:类型不必完全相同,但必须是DBMS可以隐含地转换的类型
2、对组合查询结果排序
在用UNION组合查询时,只能使用一条ORDER BY子句,它必须出现在最后一条SELECT语句之后。
SELECT cust_name, cust_contact, cust_email
FROM Customers
WHERE cust_state IN ('IL', 'IN', 'MI')
UNION
SELECT cust_name, cust_contact, cust_email
FROM Customers
WHERE cust_name = 'Fun4All'
ORDER BY cust_name, cust_contact;
十五、插入数据
INSERT是用来插入(或添加)行到数据库表的,通常以下列几种方式使用:
1)插入完整的行
2)插入行的一部分
3)插入某些查询的结果
1、插入行
INSERT INTO Custmoers(cust_id,
cust_contact,
cust_email)
VALUES('1000000006',
NULL,
NULL)
注:如果某个列没有值,应该使用NULL值。
2、插入检索出的数据
INSERT INTO Customers(cust_id,
cust_contact,
cust_email)
SELECT cust_id,
cust_contact,
cust_email
FROM CustNew;
十六、更新和删除数据
1、更新数据
可采用两种方式使用UPDATE:
1)更新表中特定行
2)更新表中所有行
UPDATE Customers
SET cust_email = 'kim@thetoystore.com',
cust_contact = 'Sam Roberts',
cust_name = NULL (注:等价于删除某个值)
WHERE cust_id = '10000000006';
2、删除数据
可采用两种方式使用DELETE:
1)从表中删除特定的行
2)从表中删除所有行
SELECT FORM Customers
WHERE cust_id = '100000006';