常用的SQL语法

前置知识

  • 数据库(database):保存有组织的数据的容器(通常是一个文件或一组文件)

  • 数据表(table):某种特定类型数据的结构化清单

  • 模式(schema):关于数据库和表的布局及特性的信息。模式定义了数据在表中如何存储,包含存储什么样的数据,数据如何分解,各部分信息如何命名等信息。数据库和表都有模式

  • 列(column):表中的一个字段。所有表都是由一个或多个列组成的

  • 行(row):表中的一个记录

  • 主键(primary key):一列(或一组列),其值能够唯一标识表中每一行

  • CREATE DATABASE:创建新数据库。
CREATE DATABASE database_name;
  • CREATE TABLE:创建新表

    CREATE TABLE table_name (
    column1 datatype,
    column2 datatype,
    ...
    );
    
  • CREATE INDEX:创建索引

    CREATE INDEX index_name
    ON table_name (column_name);
    
  •  INSERT INTO:向数据库中插入新数据。

    INSERT INTO table_name (column1, column2, ...)
    VALUES (value1, value2, ...);
    

  • DROP DATABASE:删除数据库。

    DROP DATABASE database_name;
    
  • DROP TABLE:删除表。

    DROP TABLE table_name;
    
  • DROP INDEX:删除索引。

    DROP INDEX table_name.index_name;
    
  • DELETE:从数据库中删除数据。

    DELETE FROM table_name
    WHERE condition;
    

  • UPDATE:更新数据库中的数据。

    UPDATE table_name
    SET column1 = value1, column2 = value2, ...
    WHERE condition;
    
  • ALTER TABLE:修改表。

    ALTER TABLE table_name
    ADD column_name datatype;
    
  • INSERT INTO:向数据库中插入新数据。

    INSERT INTO table_name (column1, column2, ...)
    VALUES (value1, value2, ...);
    

  • SELECT:从数据库中获取数据。

    SELECT column1, column2, ...
    FROM table_name;
    
  • SELECT DISTINCT:从数据库中获取唯一的数据。

    SELECT DISTINCT column1, column2, ...
    FROM table_name;
    
  • WHERE:用于提取满足指定条件的记录。

    SELECT column1, column2, ...
    FROM table_name
    WHERE condition;
    
  • AND, OR, NOT:用于创建复杂的条件语句。

    SELECT column1, column2, ...
    FROM table_name
    WHERE condition1 AND condition2;
    
  • BETWEEN:用于选择介于两个值之间的数据。

    SELECT column1, column2
    FROM table_name
    WHERE column1 BETWEEN value1 AND value2;
    
  •  LIMIT:限制查询结果

-- 返回前 5 行
SELECT * FROM mytable LIMIT 5;SELECT * FROM mytable LIMIT 0, 5;
-- 返回第 3 ~ 5 行
SELECT * FROM mytable LIMIT 2, 3;

子查询:

IN:用于在 WHERE 子句中规定多个值。

SELECT column1, column2
FROM table_name
WHERE column1 IN (value1, value2, ...);

子查询的子查询:

SELECT cust_name, cust_contactFROM customersWHERE cust_id IN 
(SELECT cust_id FROM orders  WHERE order_num IN 
(SELECT order_num FROM orderitems WHERE prod_id = 'RGAN01'));

模糊查询:

  • LIKE:用于在 WHERE 子句中搜索列中的指定模式。

    SELECT column1, column2
    FROM table_name
    WHERE column1 LIKE pattern;
    
  • LIKE 操作符在 WHERE 子句中使用,作用是确定字符串是否匹配模式

  • 只有字段是文本值时才使用 LIKE

  • LIKE 支持两个通配符匹配选项:% 和 _

  • 不要滥用通配符,通配符位于开头处匹配会非常慢

  • % 表示任何字符出现任意次数

  • _ 表示任何字符出现一次

 其他

对结果进行限制

  • ORDER BY:用于对结果集进行排序。

    SELECT column1, column2, ...
    FROM table_name
    ORDER BY column1, column2, ... ASC|DESC;
    
  • GROUP BY:用于对结果集进行分组。

    SELECT column1, column2
    FROM table_name
    GROUP BY column1, column2;
    
  • HAVING:用于过滤分组后的结果。

    SELECT column1, column2
    FROM table_name
    GROUP BY column1, column2
    HAVING condition;
    
  • IN:用于在 WHERE 子句中规定多个值。

    SELECT column1, column2
    FROM table_name
    WHERE column1 IN (value1, value2, ...);
    

连接和组合

  • SELECT column1, column2
    FROM table1
    UNION
    SELECT column1, column2
    FROM table2;
    
  • JOIN:用于根据两个或多个表中的列之间的关系,从这些表中查询数据。

JOIN 有两种连接类型:内连接和外连接

  • 内连接又称等值连接,使用 INNER JOIN 关键字。在没有条件语句的情况下返回笛卡尔积

  • 自连接可以看成内连接的一种,只是连接的表是自身而已

  • 自然连接是把同名列通过 = 测试连接起来的,同名列可以有多个

内连接 vs 自然连接

  • 内连接提供连接的列,而自然连接自动连接所有同名列

  • 外连接返回一个表中的所有行,并且仅返回来自次表中满足连接条件的那些行,即两个表中的列是相等的。外连接分为左外连接、右外连接、全外连接(Mysql 不支持)

  • 左外连接就是保留左表没有关联的行

  • 右外连接就是保留右表没有关联的行

自然连接(NATURAL JOIN)

SELECT *FROM ProductsNATURAL JOIN Customers;

左连接(LEFT JOIN)

SELECT customers.cust_id, orders.order_numFROM customers LEFT JOIN ordersON customers.cust_id = orders.cust_id;

右连接(RIGHT JOIN)

SELECT customers.cust_id, orders.order_numFROM customers RIGHT JOIN ordersON customers.cust_id = orders.cust_id;

  • UNION:用于合并两个或多个 SELECT 语句的结果集。

SELECT column1, column2
FROM table1
JOIN table2
ON table1.column_name = table2.column_name;
  • UNION ALL:用于合并两个或多个 SELECT 语句的结果集,包括重复行。

SELECT * FROM table1
UNION ALL
SELECT * FROM table2;

参考资料:

https://mp.weixin.qq.com/s?__biz=MzU4OTc0OTg2MA==&mid=2247498408&idx=1&sn=599c370c17772b5e8a12a25ad080cd12&chksm=fdca71a3cabdf8b5981a564e82fec888d37020161832363d76f42b1fc8e72cee7a42f788000f&scene=27

http://it028.com/sql-syntax-1.html 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值