Mysql 数据库的查询操作

组合两张或更多表

您可以使用 JOIN 语句,根据它们之间的相关列组合两个或多个表中的行。

假设您有 "users" 表和 "products" 表:

users表
{ id: 1, name: 'John', fav: 154},
{ id: 2, name: 'Peter', fav: 154},
{ id: 3, name: 'Amy', fav: 155},
{ id: 4, name: 'Hannah', fav:},
{ id: 5, name: 'Michael', fav:}
products 表
{ id: 154, name: 'Chocolate Heaven' },
{ id: 155, name: 'Tasty Lemons' },
{ id: 156, name: 'Vanilla Dreams' }

可以使用 users 的 fav 字段和 products 的 id 字段来组合这两个表。
组合用户和产品,查看用户最喜欢的产品名称:

sql = "SELECT users.name AS user, products.name AS favorite FROM users INNER JOIN products ON users.fav = products.id"
结果
('John', 'Chocolate Heaven')
('Peter', 'Chocolate Heaven')
('Amy', 'Tasty Lemon')

注释:您可以使用 JOIN 而不是 INNER JOIN。您都会得到相同的结果。

LEFT JOIN
sql = "SELECT users.name AS user, products.name AS favorite FROM users LEFT JOIN products ON users.fav = products.id"
结果
('John', 'Chocolate Heaven')
('Peter', 'Chocolate Heaven')
('Amy', 'Tasty Lemon')
('Hannah', None)
('Michael', None)
RIGHT JOIN
sql = "SELECT users.name AS user, products.name AS favorite FROM users RIGHT JOIN products ON users.fav = products.id"
结果
('John', 'Chocolate Heaven')
('Peter', 'Chocolate Heaven')
('Amy', 'Tasty Lemon')
(None, 'Vanilla Dreams')
mysql如何更新一个表中的某个字段值等于另一个表的某个字段值
update a inner join b on a.id=b.id set a.x=b.x,a.y=b.y;
SQL SELECT DISTINCT 语句

在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。
关键词 DISTINCT 用于返回唯一不同的值。

语法:

SELECT DISTINCT 列名称 FROM 表名称
WHERE 子句

SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
下面的运算符可在 WHERE 子句中使用:

操作符 描述

= 等于 header
<> 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于

BETWEEN 在某个范围内
LIKE 搜索某种模式
注释:在某些版本的 SQL 中,操作符 <> 可以写为 !=。

AND 和 OR 运算符
  • AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。
  • 如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
  • 如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
SELECT * FROM Persons WHERE FirstName='Thomas' AND LastName='Carter'
SELECT * FROM Persons WHERE firstname='Thomas' OR lastname='Carter'
SELECT * FROM Persons WHERE (FirstName='Thomas' OR FirstName='William') AND LastName='Carter'
ORDER BY 语句
  • ORDER BY 语句用于根据指定的列对结果集进行排序。
  • ORDER BY 语句默认按照升序对记录进行排序。
  • 如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC
posted @ 2021-01-18 22:03  愺様  阅读(242)  评论(0编辑  收藏  举报