zoukankan      html  css  js  c++  java
  • MySQL SQL DML (数据操作语言)

    包括 SELECT, UPDATE, DELETE, INSERT


    SELECT

    从数据库表中获取数据

    用法

    SELECT name FROM students;
    SELECT name,age FROM students;
    SELECT * FROM students;
    

    DISTINCT

    使用 DISTINCT 可以对搜索结果进行去重

    SELECT DISTINCT name FROM students;
    

    ORDER BY

    ORDER BY 根据指定的列对结果集进行排序
    DESC 倒序、ASC 正序

    SELECT * FROM students ORDER BY age DESC, name ASC;
    

    LIMIT

    LIMIT 用于规定要返回的记录的数目

    SELECT * FROM students LIMIT 10;
    

    UNION & UNION ALL

    UNION 操作符用于合并两个或多个 SELECT 语句的结果集
    UNION 自动去重,如果不希望去重可以使用 UNION
    注意:UNION 内部的 SELECT 语句必须拥有相同数量的列,列也必须拥有相似的数据类型,并且每条 SELECT 语句中的列的顺序必须相同

    SELECT * FROM students WHERE age < 18
    UNION
    SELECT * FROM students WHERE age > 100;
    SELECT * FROM students WHERE age < 18
    UNION ALL
    SELECT * FROM students WHERE name LIKE 'A%';
    

    WHERE

    使用 WHERE 可以增加搜索条件

    SELECT name FROM students WHERE age BETWEEN 0 AND 18;
    SELECT name FROM students WHERE age < 18;
    

    支持的操作符:><=<=>=<>(!=)、BETWEENLIKE

    BETWEEN

    BETWEEN ... AND 在 WHERE 子句中使用,作用是选取介于两个值之间的数据范围,可以是数值、文本或者日期
    同时也可以通过 NOT 来选取这两个值之外的范围
    注意: BETWEEN 的范围是同时包含左右两个值的

    SELECT name FROM students WHERE age BETWEEN 0 AND 18;
    SELECT name FROM students WHERE age NOT BETWEEN 0 AND 18;
    

    IN

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

    SELECT * FROM students WHERE name IN ('Tom', 'Jerry');
    

    LIKE & RLIKE & REGEXP

    LIKE

    LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式
    LIKE 通常与 %_一起使用,如果不使用通配符 LIKE 就相当于 =
    MySQL 中 LIKE 不支持 [charlist][^charlist] 通配符,需要使用正则进行匹配

    SELECT * FROM students WHERE name LIKE 'A%';
    SELECT * FROM students WHERE name NOT LIKE 'A%';
    SELECT * FROM students WHERE name LIKE 'T_m';
    
    RLIKE & REGEXP

    MySQL中使用 RLIKE & REGEXP 操作符来进行正则表达式匹配,相比 LIKE 更加灵活

    SELECT * FROM students WHERE name RLIKE '^[^a-c]';
    SELECT * FROM students WHERE name REGEXP '^[^a-c].m';
    
    ^ 匹配字符串的开始
    $ 匹配字符串的结束
    . 匹配除了' '之外的任意单个字符
    [charlist] 匹配列表所包含的任意一个字符
    [^charlist] 匹配列表不包含的任意一个字符
    | 匹配符号左边或右边的字符
    * 匹配前面的表达式 0 次或多次,等价于{0,}
    + 匹配前面的表达式 1 次或多次,等价于{1,}
    {n} 匹配前面的表达式至少 n 次
    {n,m} 匹配前面的表达式至少 n 次,至多 m 次
    通配符

    % 替代一个或多个字符
    _ 仅替代一个字符
    [charlist] 字符列中的任何单一字符
    [^charlist] 不在字符列中的任何单一字符

    AND & OR

    ANDOR 可在 WHERE 子语句中把两个或多个条件结合起来
    AND 要求两个条件同时成立
    OR 只用其中一条成立即可
    ANDOR 形成复杂的表达式时,可以使用 () 将条件括起来

    SELECT * FROM students WHERE (name LIKE 'A%' OR name LIKE 'B%') AND age>18;
    

    UPDATE

    更新数据库表中的数据

    UPDATE students SET name = 'Jerry' WHERE name = 'Tom';
    UPDATE students SET age = 18, gender = 'F' WHERE name = 'Alice';
    

    DELETE

    从数据库表中删除数据

    DELETE FROM students WHERE name = 'Tom';
    

    删除表中所有数据,但是表还保留

    DELETE FROM students;
    

    INSERT INTO

    向数据库表中插入数据

    INSERT INTO students VALUES ('Tom', 10, 'M'), ('Jerry', 9, 'M');
    INSERT INTO students (name, gender) VALUES ('Tom', 'M');
    

  • 相关阅读:
    mysql的数据结构
    mysql 如何在虚拟机中创建多个实例并启动
    mysql的查询语句原理
    mysql 之如何修复删除用户表
    docker之卷管理 与 卷挂载
    mysql的高可用
    python全栈脱产第35天------IPC机制、生产者消费者模型、线程、
    python全栈脱产第33天------基于udp协议的套接字、socketserver模块的使用、进程理论
    python全栈脱产第34天------开启进程的两种方式、join方法、进程对象其他相关的属性和方法、僵尸进程、孤儿进程、守护进程、互斥锁
    python全栈脱产第32天------基于tcp协议通信的套接字、模拟ssh实现远程执行命令、粘包问题
  • 原文地址:https://www.cnblogs.com/dbf-/p/11399402.html
Copyright © 2011-2022 走看看