一起来学SQL(二)

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

适用于这样的问题:希望列出所有的人,以及他们的定单,以及所有的定单,以及定购它们的人。(两张表的内容全部列出,并指明两张表的相同之处)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值