sql 常见语句记录

Posted by CodingWithAlice on July 11, 2022

sql 常见语句记录

SQL 对大小写不敏感

# SELECT 列名称 FROM 表名称
SELECT LastName FROM Persons
SELECT LastName,FirstName FROM Persons
SELECT * FROM 表名称

WHERE 子句用于规定选择的标准

# SELECT 列名称 FROM 表名称 WHERE  运算符 
SELECT * FROM Persons WHERE City='Beijing'

IN 操作符允许我们在 WHERE 子句中规定多个值

# 选取姓氏为 Adams  Carter 的人
SELECT * FROM Persons
WHERE LastName IN ('Adams','Carter')

操作符 BETWEEN … AND 会选取介于两个值之间的数据范围

# 以字母顺序显示介于 "Adams"(包括)和 "Carter"(不包括)之间的人
SELECT * FROM Persons
WHERE LastName
BETWEEN 'Adams' AND 'Carter'

AND 和 OR 运算符用于基于一个以上的条件对记录进行过滤

SELECT * FROM Persons WHERE FirstName='Thomas' AND LastName='Carter'
SELECT * FROM Persons WHERE (FirstName='Thomas' OR FirstName='William') AND LastName='Carter'

ORDER BY 语句用于对结果集进行排序

# 以字母顺序显示公司名称
SELECT Company, OrderNumber FROM Orders ORDER BY Company
# 以逆字母顺序显示公司名称
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC

**NSERT INTO **语句用于向表格中插入新的行

# 插入新的行
INSERT INTO Persons VALUES ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing')
# 在指定的列中插入数据
INSERT INTO Persons (LastName, Address) VALUES ('Wilson', 'Champs-Elysees')

Update 语句用于修改表中的数据

# UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
# lastname  "Wilson" 的人添加 firstname
UPDATE Person SET FirstName = 'Fred' WHERE LastName = Wilson
# 修改地址(address),并添加城市名称(city
UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing' WHERE LastName = 'Wilson'

DELETE 语句用于删除表中的行

# DELETE FROM 表名称 WHERE 列名称 = 
DELETE FROM Person WHERE LastName = 'Wilson'
# 在不删除表的情况下删除所有的行
DELETE FROM table_name
DELETE * FROM table_name

AS 为列名称和表名称指定别名(Alias)-别名使查询程序更易阅读和书写

# 列出 "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'

JOIN 用于根据两个或多个表中的列之间的关系,从这些表中查询数据

# 谁订购了产品,并且他们订购了什么产品? -- 两张相关联的表
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

join的种类

  • JOIN/INNER JOIN: 在表中存在至少一个匹配时,则返回行

  • LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行

  • RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行

  • FULL JOIN: 只要其中一个表中存在匹配,就返回行

**UNION **操作符用于合并两个或多个 SELECT 语句的结果集

# 默认地,UNION 操作符选取不同的值;如果允许重复的值,请使用 UNION ALL - 列出所有的值
SELECT E_Name FROM Employees_China
UNION
SELECT E_Name FROM Employees_USA

SQL中常见数据类型

9A7D61DA-27DD-48B5-A2A5-B4B86D8995E4

SQL函数

SELECT function() FROM 

AVG 函数返回数值列的平均值。NULL 值不包括在计算中

# 计算 "OrderPrice" 字段的平均值
SELECT AVG(OrderPrice) AS OrderAverage FROM Orders
# 结果拿到 OrderAverage: 12
# 找到 OrderPrice 值高于 OrderPrice 平均值的客户
SELECT Customer FROM Orders
WHERE OrderPrice>(SELECT AVG(OrderPrice) FROM Orders)
# 结果拿到满足条件的 Customer 列表

COUNT() 函数返回匹配指定条件的行数

# 计算客户 "Carter" 的订单数
SELECT COUNT(Customer) AS CustomerNilsen FROM Orders
WHERE Customer='Carter'
# 结果拿到 CustomerNilsen: 21

COUNT(*) 函数返回表中的记录数

# 表中的总行数
SELECT COUNT(*) AS NumberOfOrders FROM Orders
# 结果拿到 NumberOfOrders: 6

COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目

# 计算 "Orders" 表中不同客户的数目
SELECT COUNT(DISTINCT Customer) AS NumberOfCustomers FROM Orders
# 拿到结果 NumberOfCustomers4 

MAX/MIN 函数返回一列中的最大值。NULL 值不包括在计算

# 查找 "OrderPrice" 列的最大值
SELECT MAX(OrderPrice) AS LargestOrderPrice FROM Orders
# 拿到结果 LargestOrderPrice: 428

SUM 函数返回数值列的总数(总额)

# 查找 "OrderPrice" 字段的总数
SELECT SUM(OrderPrice) AS OrderTotal FROM Orders
# 拿到结果 OrderTotal: 900

GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组

# 查找每个客户的总金额(总订单)
SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer