SQL的增删改
增
insert into语句
INSERT INTO 语句用于向表格中插入新的行。
语法
INSERT INTO 表名称 VALUES (值1, 值2,….)
也可以指定所要插入数据的列:
INSERT INTO table_name (列1, 列2,…) VALUES (值1, 值2,….)
e.g.1、插入新的行
INSERT INTO Persons VALUES (‘Gates’, ‘Bill’, ‘Xuanwumen 10’, ‘Beijing’)
2、在指定的列中插入数据
INSERT INTO Persons (LastName, Address) VALUES (‘Wilson’, ‘Champs-Elysees’)
改
UPDATE
Update 语句用于修改表中的数据
语法:
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
e.g.1、为 lastname 是 “Wilson” 的人添加 firstname:
UPDATE Person SET FirstName = ‘Fred’ WHERE LastName = ‘Wilson’
2、更新某一行中的若干列
UPDATE Person SET Address = ‘Zshan 23’, City = ‘Nj’ WHERE LastName = ‘Wilson’
删
DELETE
DELETE 语句用于删除表中的行。
语法
DELETE FROM 表名称 WHERE 列名称 = 值
e.g.1、删除某行
“Fred Wilson” 会被删除
DELETE FROM Person WHERE LastName = ‘Wilson’
2、删除所有行
可以在不删除表的情况下删除所有的行。这意味着表的结构、属性和索引都是完整的:
DELETE FROM table_name
或者:
DELETE * FROM table_name
SQL进阶
表跟列
Alias
列名称和表名称指定别
表的 SQL Alias 语法
SELECT column_name(s) FROM table_name AS alias_name
列的 SQL Alias 语法
SELECT column_name AS alias_name FROM table_name
e.g.
1、假设我们有两个表分别是:”Persons” 和 “Product_Orders”。我们分别为它们指定别名 “p” 和 “po”。现在,列出 “John Adams” 的所有订单。
SELECT po.OrderID, p.LastName, p.FirstName
FROM Persons As p, Product_Orders AS po
WHERE p.LastName=’Adams’ AND p.FirstName=’John’
2、使用一个列名别名
SELECT LastName AS Family, FirstName AS Name FROM Persons
SELECT INTO
SELECT INTO 语句可用于创建表的备份复件。
SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。
SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档。
SQL SELECT INTO 语法
您可以把所有的列插入新表:
SELECT *
INTO new_table_name [IN externaldatabase]
FROM old_tablename
或者只把希望的列插入新表:
SELECT column_name(s)
INTO new_table_name [IN externaldatabase]
FROM old_tablename
e.g.
1、IN 子句可用于向另一个数据库中拷贝表:
SELECT * INTO Persons IN ‘Backup.mdb’ FROM Persons
2、通过从 “Persons” 表中提取居住在 “Beijing” 的人的信息,创建了一个带有两个列的名为”Persons_backup” 的表:
SELECT LastName,Firstname INTO Persons_backup FROM Persons WHERE City=’Beijing’
合并查找
UNION
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
UNION 语法
SELECT column_name(s) FROM table_name1
UNION SELECT column_name(s) FROM table_name2
UNION ALL 语法
SELECT column_name(s) FROM table_name1 UNION ALL SELECT column_name(s) FROM table_name2
列出所有在中国和美国的不同的雇员名:
SELECT E_Name FROM Employees_China UNION SELECT E_Name FROM Employees_USA
列出在中国和美国的所有的雇员:
SELECT E_Name FROM Employees_China UNION ALL SELECT E_Name FROM Employees_USA
JOIN
join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据
有时为了得到完整的结果,需要从两个或更多的表中获取结果。执行 join。
INNER JOIN 关键字语法
SELECT column_name(s) FROM table_name1 INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name
Persons
Orders
“Id_P” 列是 Persons 表中的的主键,”Id_O” 列是 Orders 表中的的主键,同时,”Orders” 表中的 “Id_P” 列用于引用 “Persons” 表中的人
e.g.
通过引用两个表的方式,从两个表中获取数据:谁订购了产品,并且他们订购了什么产品?
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons, Orders
WHERE Persons.Id_P = Orders.Id_P
除了上面的方法,我们也可以使用关键词 JOIN 来从两个表中获取数据。如果我们希望列出所有人的订购:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons INNER JOIN Orders ON Persons.Id_P = Orders.Id_P ORDER BY Persons.LastName
LEFT JOIN
LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。
LEFT JOIN 关键字语法
SELECT column_name(s) FROM table_name1 LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
适用于这样的问题:列出所有的人,以及他们的定购 - 如果有的话。(希望列出左表的全部内容,及可能存在的右表关联数据)
RIGHT JOIN
RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。
RIGHT JOIN 关键字语法
SELECT column_name(s) FROM table_name1 RIGHT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
适用于这样的问题:望列出所有的定单,以及定购它们的人 - 如果有的话。(希望列出右表的全部内容,及可能存在的左表关联数据)
FULL JOIN
只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。
FULL JOIN 关键字语法
SELECT column_name(s) FROM table_name1 FULL JOIN table_name2
ON table_name1.column_name=table_name2.column_name
适用于这样的问题:希望列出所有的人,以及他们的定单,以及所有的定单,以及定购它们的人。(两张表的内容全部列出,并指明两张表的相同之处)