【Mysql】增删查改操作

creat 新增


INSERT 新增语句

复制代码
  INSERT [INTO] table_name
  [(column [, column] ...)]
  VALUES
  (value_list) [, (value_list)] ...
  -- value_list: value [, value] ...

INTO 可以省略,写上可读性更好

  • 表

    复制代码
    create table users (
        id bigint,
        name varchar(20) comment '用户名'
    );

三种插入方式
  • 单行全列插入

    复制代码
    insert into users values (1, '张三');
    insert into users values (2, '李四');

    不写列名,值的数量、顺序必须和表定义的列完全一致

  • 单行指定列插入

    复制代码
    insert into users(id, name) values (3, '王五');

    括号里写明要插入哪些列,值和指定的列一一对应、顺序匹配

  • 多行指定列插入

    复制代码
    insert into users(id, name) values (4, '赵六'), (5, '钱七');

    一条 SQL 写多组 (值),逗号隔开,一次性插入多条

  • 查询验证:

    复制代码
    select * from users;

总结

  • 全列插入:省略列列表,值要和表所有列对齐
  • 指定列插入:只给部分字段赋值,值和写出来的列对齐
  • 多行插入:一条 INSERT 多个 (value_list),减少数据库交互,
    性能优于多次单行insert
  • 字符串类型的值,要用单引号包裹;数字不需要引号

复制代码
  -- 创建users表
  create table users
  (
      id   bigint,
      name varchar(20) comment '姓名'
  );

  -- 单行全列插入
  insert into users
  values (1, '张三');
  insert into users
  values (2, '李四');

  select *
  from users;


  -- 单行指定列插入  , 写id name, 值跟指定列匹配
  insert into users(id, name)
  values (3, '王五');

  -- 多行指定列插入
  insert into users(id, name)
  values (4, '赵六'),
         (5, '钱七');


Retrieve检索

SELECT 检索语句


语法
复制代码
  SELECT
      [DISTINCT]
      select_expr [, select_expr ...]
  [FROM table_references]
  [WHERE where_condition]
  [GROUP BY {col_name | expr}, ...]
  [HAVING where_condition]
  [ORDER BY {col_name | expr} [ASC | DESC], ... ]
  [LIMIT {[offset,] row_count | row_count OFFSET offset}]
  • 执行顺序:
    FROM → WHERE → GROUP BY → HAVING → SELECT(DISTINCT) → ORDER BY → LIMIT

  • 常用 Select 查询示例

    复制代码
    -- 创建学生成绩表
    CREATE TABLE exam (
        id BIGINT,
        name VARCHAR(20) COMMENT '同学姓名',
        chinese FLOAT COMMENT '语文成绩',
        math FLOAT COMMENT '数学成绩',
        english FLOAT COMMENT '英语成绩'
    );
    
    -- 插入测试数据
    INSERT INTO exam (id, name, chinese, math, english)
    VALUES
    (1, '唐三藏', 67, 98, 56),
    (2, '孙悟空', 87, 78, 77),
    (3, '猪悟能', 88, 98, 90),
    (4, '曹孟德', 82, 84, 67),
    (5, '刘玄德', 55, 85, 45),
    (6, '孙权', 70, 73, 78),
    (7, '宋公明', 75, 65, 30);

    (1)查询全部列

    复制代码
    SELECT * FROM exam;

    (2)查询指定列(姓名、语文、数学)

    复制代码
    SELECT name, chinese, math FROM exam;

    (3)DISTINCT 去重(示例:查询不重复的数学分数)

    复制代码
    SELECT DISTINCT math FROM exam;

    (4)WHERE 条件过滤

    复制代码
    -- 查询语文大于80分的学生
    SELECT * FROM exam WHERE chinese > 80;

    (5)计算总分、别名 AS

    复制代码
    SELECT name, chinese + math + english AS total_score FROM exam;

    (6)ORDER BY 排序

    复制代码
    -- 按总分降序排序
    SELECT name, chinese + math + english AS total_score
    FROM exam
    ORDER BY total_score DESC;

    (7)LIMIT 分页

    复制代码
    -- 从第0条开始,取3条(前3条数据)
    SELECT * FROM exam LIMIT 0,3;

    (8)GROUP BY + HAVING 分组过滤

    复制代码
    -- 按数学成绩分组,只展示分组后平均分大于85的组
    SELECT math, AVG(chinese) avg_chinese
    FROM exam
    GROUP BY math
    HAVING avg_chinese > 85;
  • WHERE 和 HAVING 核心区别
    (1)WHERE:分组之前 筛原始行,不能写 AVG、SUM、COUNT 这类聚合函数
    (2)HAVING:分组统计完之后筛分组结果,可以使用聚合函数

相关推荐
SelectDB5 小时前
让变更流出 Doris:Apache Doris 5.0 基于增量计算的 CDC 技术解析
数据库
这个DBA有点耶5 小时前
MCP隔离层+行级语义审计+输出校验:AI访问数据库的安全边界拆解
数据库·人工智能·ai编程
这个DBA有点耶6 小时前
从反向扫描O(n)到正向扫描O(1):降序索引的物理机制与混合排序匹配规则
数据库
2501_933923257 小时前
解读Redis:单线程模型
数据库·redis·缓存
Tapdata8 小时前
被忽略的第三类上下文:Agent 进入真实业务后,还缺什么?
数据库·人工智能·架构
小科先生9 小时前
Java springboot调用数据库的基本流程
java·数据库·spring boot
星恒随风9 小时前
MySQL 从零入门(四):表的增删改查与基础查询详解
linux·服务器·数据库·笔记·mysql
Pniubi11 小时前
MySQL靠什么实现事务的?事务隔离级别有哪些?
java·数据库·mysql
数据库小学妹12 小时前
pgbouncer 事务池:prepared statement、临时表与会话状态
数据库·后端·postgresql
aiks_yuan12 小时前
MySQL 死锁怎么排查:看懂 INNODB STATUS 死锁日志,先查后插为什么必死锁(MySQL 8.2 实测)
mysql