SQL语法复习

SQL语法复习

SQL讲解

基础语法

    数据操作语言(DML)
# SELECT 列名称 FROM 表名称 WHERE 列 运算符(=,!=,>等) 值 
- 从数据库表中获取数据
# UPDATE 表名称 SET 列名称 = 新值,列名称2 = 新值2 WHERE 列名称 = 某值
- 更新数据库表中的数据
# DELETE 
- 从数据库表中删除数据
# INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
- 向数据库表中插入数据
    数据定义语言(DDL)
# CREATE DATABASE 
- 创建新数据库
# ALTER DATABASE 
- 修改数据库
# CREATE TABLE 
- 创建新表
# ALTER TABLE 表名 MODIFY/ADD COLUMN 字段名 字段类型 
- 变更(新增)数据库表字段
# DROP TABLE 表名 
- 删除表
# ALTER TABLE
- 表名 
# ADD INDEX 索引名称(对应的字段)
- 创建索引(搜索键)
# ALTER TABLE 表名 DROP INDEX 索引名称 
- 删除索引

select 精讲

完整结构

查询中用到的关键词主要包含六个,并且他们的顺序依次为 select--from--where--groupby--having--orderby
其中select和from是必须的,其他关键词是可选的,这六个关键词的执行顺序 与sql语句的书写顺序并不是一样的,而是按照下面的顺序来执行

- from:需要从哪个数据表检索数据
  • where:过滤表中数据的条件
  • group by:如何将上面过滤出的数据分组
  • having:对上面已经分组的数据进行过滤的条件
  • select:查看结果集中的哪个列,或列的计算结果
  • order by :按照什么样的顺序来查看返回的数据

高级语句

  • LIKE操作符

    SELECT column_name(s)
    FROM table_name
    WHERE column_name (NOT) LIKE pattern
    -- patten格式:%替换一个或者多个字符,例如City LIKE 'N%'或者City LIKE '%N%'
    
  • IN操作符

    SELECT column_name(s)
    FROM table_name
    WHERE column_name IN (value1,value2,...)
    
  • BETWEEN操作符

    SELECT column_name(s)
    FROM table_name
    WHERE create_time
        BETWEEN '2020-01-01 12:00:00'
            AND '2020-12-31 23:59:59' 
    -- 等价于
    SELECT column_name(s)
    FROM table_name
    WHERE create_time >= '2020-01-01 12:00:00'
            AND create_time <= '2020-12-31 23:59:59'
    
  • SQL ALIAS 别名

    -- 表别名(其中as可以省略)
    SELECT column_name(s)  from table_name as alias_name;
    -- 列别名(其中as可以省略)
    select column_name as alias_name  from table_name;
    
  • SQL JOHN

    -- JOIN: 如果表中有至少一个匹配,则返回行
    -- LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
    -- RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
    -- FULL JOIN: 只要其中一个表中存在匹配,就返回行例如:SELECT column_name(s)
    
    FROM table_name1
    INNER JOIN table_name2
        ON table_name1.column_name=table_name2.column_name
    -- mysql中table_name1,table_name2相当于inner join,两边都得有匹配才返回常用的是inner join(两边匹配)和left join(单边匹配,同来优化not in)
    
  • SQL UNION

    UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。

    -- UNION 会对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序
    -- UNION ALL 对两个结果集进行并集操作,包括重复行,不会对结果进行排序。
    
    SELECT column_name(s)
    FROM table_name1
    UNION
    SELECT column_name(s)
    FROM table_name2;
    
  • SQL SELECT INTO

    -- SQL SELECT INTO 语句可用于创建表的备份复件。
    
    SELECT * INTO new_table_name [IN externaldatabase]
    FROM old_tablename
    -- 等价于
    SELECT * INTO new_table_name [IN externaldatabase]SELECT 对应的字段
    FROM old_tablename
    
  • SQL约束

    判断某个字段是否为NULL的写法:无法使用比较运算符来测试 NULL 值,比如 =, <, 或者 <>。我们必须使用 IS NULL 和 IS NOT NULL 操作符

        NOT NULL  
        -- 约束强制列不接受 NULL 值。NOT NULL 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。
        UNIQUE  
        -- 约束唯一标识数据库表中的每条记录。UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。PRIMARY KEY 拥有自动定义的 UNIQUE 约束。请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。
        PRIMARY KEY  
        -- 约束唯一标识数据库表中的每条记录。主键必须包含唯一的值。主键列不能包含 NULL 值。每个表都应该有一个主键,并且每个表只能有一个主键。
        FOREIGN KEY  
        -- 一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY,实际项目禁止这种写法,具体可以参见SQL规范
        CHECK  CHECK 
        -- 约束用于限制列中的值的范围。如果对单个列定义 CHECK 约束,那么该列只允许特定的值。如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。
        DEFAULT  约束用于向
        -- 列中插入默认值。如果没有规定其他的值,那么会将默认值添加到所有的新记录。
    
  • 括号

    -- 有时候有多个表join,为了表达清晰,可以使用括号,但是这个可能导致索引不生效:
        
    SELECT k.相应字段,
             m.字段
    FROM 
        (SELECT 相应字段
        FROM 表1,表2
        WHERE 表1.字段1=表2.字段2
        GROUP BY  某个字段 limit 0,100 ) k , 表3 m
    WHERE k.某个字段=m.某个字段
    

相关函数

SELECT DISTINCT 列名称 FROM 表名称
-- 返回唯一不同的值
LENGTH(某个字段)
MAX(某个字段)
MIN(某个字段)
COUNT(某个字段)
SUM(某个字段)
DATE_FORMAT(date字段, 对应的格式) 
CONACT(字段1,字段2)
-- 连接字符串
posted @ 2022-06-16 09:18  Faetbwac  阅读(22)  评论(0编辑  收藏  举报