SQL常见语句及用法

SQL常见语句及用法

SQL基础

  • SELECT - 从数据库表中获取数据
  • UPDATE - 更新数据库表中的数据
  • DELETE - 从数据库表中删除数据
  • INSERT INTO - 向数据库表中插入数据
  • CREATE DATABASE - 创建新数据库
  • ALTER DATABASE - 修改数据库
  • CREATE TABLE - 创建新表
  • ALTER TABLE - 变更(改变)数据库表
  • DROP TABLE - 删除表
  • CREATE INDEX - 创建索引(搜索键)
  • DROP INDEX - 删除索引
  • SELECT DISTINCT 列名称 FROM 表名称 关键词 DISTINCT 用于返回唯一不同的值。

  • SELECT 列名称 FROM 表名称 WHERE 列 运算符 值 有条件地从表中选取数据

    AND 和OR运算符
    • AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。

      如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。

      如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。

    • 使用 AND 来显示所有姓为 “Carter” 并且名为 “Thomas” 的人:

      • SELECT * FROM Persons WHERE FirstName='Thomas' AND LastName='Carter'
        
        
    • 使用 OR 来显示所有姓为 “Carter” 或者名为 “Thomas” 的人:

      • SELECT * FROM Persons WHERE firstname='Thomas' OR lastname='Carter'
        
    • 我们也可以把 AND 和 OR 结合起来(使用圆括号来组成复杂的表达式):

      • 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
      
  • 以字母顺序显示公司名称(Company),并以数字顺序显示顺序号(OrderNumber):

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

    • SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC
      
  • 以逆字母顺序显示公司名称,并以数字顺序显示顺序号:

    • SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC
      
INSERT INTO 语句

INSERT INTO 语句用于向表格中插入新的行。

  • INSERT INTO 表名称 VALUES (值1, 值2,....)
    
  • 指定所要插入数据的列:

    • INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
      
Update 语句

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

  • UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
    

在这里插入图片描述

  • 我们会修改地址(address),并添加城市名称(city):

    • UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing'
      WHERE LastName = 'Wilson'
      
DELETE 语句

DELETE 语句用于删除表中的行。

  • DELETE FROM 表名称 WHERE 列名称 = 值
    
  • 可以在不删除表的情况下删除所有的行。这意味着表的结构、属性和索引都是完整的:

    • DELETE FROM table_name
      
    • DELETE * FROM table_name
      

SQL高级

TOP 子句

TOP 子句用于规定要返回的记录的数目。

对于拥有数千条记录的大型表来说,TOP 子句是非常有用的。

**注释:**并非所有的数据库系统都支持 TOP 子句。

  • SELECT TOP number|percent column_name(s)
    FROM table_name
    

在这里插入图片描述

  • 从上面的 “Persons” 表中选取头两条记录。

    我们可以使用下面的 SELECT 语句:

    • SELECT TOP 2 * FROM Persons
      
  • 从上面的 “Persons” 表中选取 50% 的记录。

    我们可以使用下面的 SELECT 语句:

    • SELECT TOP 50 PERCENT * FROM Persons
      
LIKE 操作符

LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。

  • SQL LIKE 操作符语法

    • SELECT column_name(s)
      FROM table_name
      WHERE column_name LIKE pattern
      

在这里插入图片描述

  • 从上面的 “Persons” 表中选取居住在以 “N” 开始的城市里的人:

    我们可以使用下面的 SELECT 语句:

    • SELECT * FROM Persons
      WHERE City LIKE 'N%'
      

提示:"%" 可用于定义通配符(模式中缺少的字母)。

  • 从 “Persons” 表中选取居住在以 “g” 结尾的城市里的人:

    我们可以使用下面的 SELECT 语句

    • SELECT * FROM Persons
      WHERE City LIKE '%g'	
      
  • 从 “Persons” 表中选取居住在包含 “lon” 的城市里的人:

    我们可以使用下面的 SELECT 语句:

    • SELECT * FROM Persons
      WHERE City LIKE '%lon%'
      
  • 通过使用 NOT 关键字,我们可以从 “Persons” 表中选取居住在不包含 “lon” 的城市里的人:

    我们可以使用下面的 SELECT 语句:

    • SELECT * FROM Persons
      WHERE City NOT LIKE '%lon%'
      

SQL 通配符

在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符。

SQL 通配符必须与 LIKE 运算符一起使用。

在 SQL 中,可使用以下通配符:

在这里插入图片描述

使用 _ 通配符

在这里插入图片描述

  • 从上面的 “Persons” 表中选取名字的第一个字符之后是 “eorge” 的人:

我们可以使用下面的 SELECT 语句:

SELECT * FROM Persons
WHERE FirstName LIKE '_eorge'
  • 从 “Persons” 表中选取的这条记录的姓氏以 “C” 开头,然后是一个任意字符,然后是 “r”,然后是一个任意字符,然后是 “er”:

我们可以使用下面的 SELECT 语句:

SELECT * FROM Persons
WHERE LastName LIKE 'C_r_er'
使用 [charlist] 通配符
  • 从上面的 “Persons” 表中选取居住的城市以 “A” 或 “L” 或 “N” 开头的人:

    我们可以使用下面的 SELECT 语句:

    SELECT * FROM Persons
    WHERE City LIKE '[ALN]%'
    
  • 从上面的 “Persons” 表中选取居住的城市不以 “A” 或 “L” 或 “N” 开头的人:

    我们可以使用下面的 SELECT 语句:

    • SELECT * FROM Persons
      WHERE City LIKE '[!ALN]%'
      
IN 操作符

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

在这里插入图片描述

  • 从上表中选取姓氏为 Adams 和 Carter 的人:

    我们可以使用下面的 SELECT 语句:

    • SELECT * FROM Persons
      WHERE LastName IN ('Adams','Carter')
      
BETWEEN 操作符
  • BETWEEN 操作符在 WHERE 子句中使用,作用是选取介于两个值之间的数据范围。

  • 操作符 BETWEEN … AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。

    • SELECT column_name(s)
      FROM table_name
      WHERE column_name
      BETWEEN value1 AND value2
      

在这里插入图片描述

  • 以字母顺序显示介于 “Adams”(包括)和 “Carter”(不包括)之间的人:

    • SELECT * FROM Persons
      WHERE LastName
      BETWEEN 'Adams' AND 'Carter'
      
  • 使用上面的例子显示范围之外的人,请使用 NOT 操作符:

    • SELECT * FROM Persons
      WHERE LastName
      NOT BETWEEN 'Adams' AND 'Carter'
      
SQL Alias 别名

通过使用 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
      
  • 有两个表分别是:“Persons” 和 “Product_Orders”。我们分别为它们指定别名 “p” 和 “po”。

    现在,我们希望列出 “John Adams” 的所有定单。

    我们可以使用下面的 SELECT 语句:

    • SELECT po.OrderID, p.LastName, p.FirstName
      FROM Persons AS p, Product_Orders AS po
      WHERE p.LastName='Adams' AND p.FirstName='John'
      
Join 和 Key

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

  • JOIN: 如果表中有至少一个匹配,则返回行
  • LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
  • RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
  • FULL JOIN: 只要其中一个表中存在匹配,就返回行
INNER JOIN 关键字语法
SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2 
ON table_name1.column_name=table_name2.column_name

注释:INNER JOIN 与 JOIN 是相同的。

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

注释:在某些数据库中, LEFT JOIN 称为 LEFT OUTER JOIN。

RIGHT JOIN 关键字语法

RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。

SELECT column_name(s)
FROM table_name1
RIGHT JOIN table_name2 
ON table_name1.column_name=table_name2.column_name

注释:在某些数据库中, RIGHT JOIN 称为 RIGHT OUTER 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

注释:在某些数据库中, FULL JOIN 称为 FULL OUTER JOIN。

SQL函数

HAVING 子句

在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。

  • HAVING 语法
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value

在这里插入图片描述

  • 查找订单总金额少于 2000 的客户

    • SELECT Customer,SUM(OrderPrice) FROM Orders
      GROUP BY Customer
      HAVING SUM(OrderPrice)<2000
      
  • 查找客户 “Bush” 或 “Adams” 拥有超过 1500 的订单总金额。

    • SELECT Customer,SUM(OrderPrice) FROM Orders
      WHERE Customer='Bush' OR Customer='Adams'
      GROUP BY Customer
      HAVING SUM(OrderPrice)>1500
      

GROUP BY 语句

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

  • SQL GROUP BY 语法

    SELECT column_name, aggregate_function(column_name)
    FROM table_name
    WHERE column_name operator value
    GROUP BY column_name
    

在这里插入图片描述

  • 查找每个客户的总金额(总订单)

    • SELECT Customer,SUM(OrderPrice) FROM Orders
      GROUP BY Customer
      

注:笔记源于https://www.w3school.com.cn/sql/sql_func_avg.asp

如有需要请到以上地址查看。

  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值