程序员必备——SQL语法速成手册( 二 )


删除表中的指定数据
DELETE FROM userWHERE username = 'robot';清空表中的数据
TRUNCATE TABLE user;查询数据

SELECT 语句用于从数据库中查询数据 。
DISTINCT 用于返回唯一不同的值 。它作用于所有列,也就是说所有列的值都相同才算相同 。
LIMIT 限制返回的行数 。可以有两个参数,第一个参数为起始行,从 0 开始;第二个参数为返回的总行数 。
ASC :升序(默认)
DESC :降序
查询单列
SELECT prod_nameFROM products;查询多列
SELECT prod_id, prod_name, prod_priceFROM products;查询所有列
ELECT *FROM products;查询不同的值
SELECT DISTINCTvend_id FROM products;限制查询结果
-- 返回前 5 行SELECT * FROM mytable LIMIT 5;SELECT * FROM mytable LIMIT 0, 5;-- 返回第 3 ~ 5 行SELECT * FROM mytable LIMIT 2, 3;三、子查询
子查询是嵌套在较大查询中的 SQL 查询 。子查询也称为内部查询或内部选择,而包含子查询的语句也称为外部查询或外部选择 。
  • 子查询可以嵌套在 SELECT,INSERT,UPDATE 或 DELETE 语句内或另一个子查询中 。
  • 子查询通常会在另一个 SELECT 语句的 WHERE 子句中添加 。
  • 您可以使用比较运算符,如 >,<,或 = 。比较运算符也可以是多行运算符,如 IN,ANY 或 ALL 。
  • 子查询必须被圆括号 () 括起来 。
  • 内部查询首先在其父查询之前执行,以便可以将内部查询的结果传递给外部查询 。执行过程可以参考下图:

程序员必备——SQL语法速成手册

文章插图
 
子查询的子查询
SELECT cust_name, cust_contactFROM customersWHERE cust_id IN (SELECT cust_idFROM ordersWHERE order_num IN (SELECT order_numFROM orderitemsWHERE prod_id = 'RGAN01'));WHERE
  • WHERE 子句用于过滤记录,即缩小访问数据的范围 。
  • WHERE 后跟一个返回 true 或 false 的条件 。
  • WHERE 可以与 SELECT,UPDATE 和 DELETE 一起使用 。
  • 可以在 WHERE 子句中使用的操作符

程序员必备——SQL语法速成手册

文章插图
 
SELECT 语句中的 WHERE 子句
SELECT * FROM CustomersWHERE cust_name = 'Kids Place';UPDATE 语句中的 WHERE 子句
UPDATE CustomersSET cust_name = 'Jack Jones'WHERE cust_name = 'Kids Place';DELETE 语句中的 WHERE 子句
DELETE FROM CustomersWHERE cust_name = 'Kids Place';IN 和 BETWEEN
  • IN 操作符在 WHERE 子句中使用,作用是在指定的几个特定值中任选一个值 。
  • BETWEEN 操作符在 WHERE 子句中使用,作用是选取介于某个范围内的值 。
IN 示例
SELECT *FROM productsWHERE vend_id IN ('DLL01', 'BRS01');BETWEEN 示例
SELECT *FROM productsWHERE prod_price BETWEEN 3 AND 5;AND、OR、NOT
  • AND、OR、NOT 是用于对过滤条件的逻辑处理指令 。
  • AND 优先级高于 OR,为了明确处理顺序,可以使用 () 。
  • AND 操作符表示左右条件都要满足 。
  • OR 操作符表示左右条件满足任意一个即可 。
  • NOT 操作符用于否定一个条件 。
AND 示例
SELECT prod_id, prod_name, prod_priceFROM productsWHERE vend_id = 'DLL01' AND prod_price <= 4;OR 示例
SELECT prod_id, prod_name, prod_priceFROM productsWHERE vend_id = 'DLL01' OR vend_id = 'BRS01';NOT 示例
SELECT *FROM productsWHERE prod_price NOT BETWEEN 3 AND 5;LIKE
  • LIKE 操作符在 WHERE 子句中使用,作用是确定字符串是否匹配模式 。
  • 只有字段是文本值时才使用 LIKE 。
  • LIKE 支持两个通配符匹配选项:% 和 _ 。
  • 不要滥用通配符,通配符位于开头处匹配会非常慢 。
  • % 表示任何字符出现任意次数 。
  • _ 表示任何字符出现一次 。
% 示例
SELECT prod_id, prod_name, prod_priceFROM productsWHERE prod_name LIKE '%bean bag%';_ 示例
SELECT prod_id, prod_name, prod_priceFROM productsWHERE prod_name LIKE '__ inch teddy bear';四、连接和组合连接(JOIN)
如果一个 JOIN 至少有一个公共字段并且它们之间存在关系,则该 JOIN 可以在两个或多个表上工作 。
连接用于连接多个表,使用 JOIN 关键字,并且条件语句使用 ON 而不是 WHERE 。
JOIN 保持基表(结构和数据)不变 。


推荐阅读