tulip notes
首页
  • 学习笔记

    • 《Vue》
  • 踩坑日记

    • JavaScript
  • MQ
  • Nginx
  • IdentityServer
  • Redis
  • Linux
  • Java
  • SpringBoot
  • SpringCloud
  • MySql
  • docker
  • 算法与设计模式
  • 踩坑与提升
  • Git
  • GitHub技巧
  • Mac
  • 网络
  • 项目构建合集
  • 一些技巧
  • 面试
  • 一些杂货
  • 友情链接
  • 项目发布
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Star-Lord

希望一天成为大师的学徒
首页
  • 学习笔记

    • 《Vue》
  • 踩坑日记

    • JavaScript
  • MQ
  • Nginx
  • IdentityServer
  • Redis
  • Linux
  • Java
  • SpringBoot
  • SpringCloud
  • MySql
  • docker
  • 算法与设计模式
  • 踩坑与提升
  • Git
  • GitHub技巧
  • Mac
  • 网络
  • 项目构建合集
  • 一些技巧
  • 面试
  • 一些杂货
  • 友情链接
  • 项目发布
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 设计相关

  • 运行相关

    • 常用命令跟重要命令
      • 查看各种信息
        • 查看mysql版本
      • 增删查改
        • 增加
        • 查找
        • 删除或更新
        • TRUNCATE 与 DELETE 的区别
      • count(1)跟count(*)
        • COUNT(*)
        • COUNT(1)
    • MySql中的各种锁
    • 数据库出现死锁如何排查解决
    • MySql中的MVCC和当前读、快照读
    • 几种count的性能比较
  • 事务相关

  • 表设计实战系列

  • 分库分表

  • 框架使用

  • 常用sql跟关键字

  • 安装与卸载相关

  • 《MySql》笔记
  • 运行相关
EffectTang
2024-10-28
目录

常用命令跟重要命令

# 常用命令跟重要命令

# 查看各种信息

# 查看mysql版本

SELECT VERSION();
1

预期的结果:

+-----------+
| @@version |
+-----------+
| 8.0.26    |
+-----------+
1
2
3
4
5

# 增删查改

以下是crud的模版:

# 增加

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
1
2
  • table_name:要插入数据的表的名称。
  • column1, column2, ...:指定要插入数据的列名(可以省略,但需要确保值的顺序与表结构一致)。
  • value1, value2, ...:对应列的值。

# 查找

-- 查询每个部门的平均薪水
SELECT department_id, AVG(salary) AS average_salary
FROM employees
GROUP BY department_id;
1
2
3
4

以上sql,还使用了分组和聚合函数

# 删除或更新

-- 执行更新或删除操作
UPDATE employees SET salary = 55000.00 WHERE id = 1;
DELETE FROM employees WHERE department_id = 101;
1
2
3

如果你想删除整张表:

DELETE FROM employees;
1

当然,删除还有另一个关键字:TRUNCATE

TRUNCATE TABLE table_name;
1

TRUNCATE 语句用于快速删除表中的所有记录,但它与 DELETE 语句有一些重要的区别。

# TRUNCATE 与 DELETE 的区别

  1. 功能:

    • DELETE:可以删除表中的部分或全部记录,并且可以通过 WHERE 子句指定条件。
    • TRUNCATE:只能删除表中的所有记录,不能指定条件。
  2. 性能:

    • DELETE:逐行删除记录,会产生大量的日志记录,尤其是在 InnoDB 存储引擎中,因为每一条记录的删除都会被记录到事务日志中。
    • TRUNCATE:直接删除整个表的数据和索引,然后重新创建表结构,因此速度更快,产生的日志更少。
  3. 事务处理:

    • DELETE:可以回滚,如果在一个事务中执行 DELETE 操作,可以在事务提交之前通过 ROLLBACK 回滚操作。
    • TRUNCATE:在某些存储引擎(如 InnoDB)中也可以回滚,但在其他存储引擎(如 MyISAM)中通常不可回滚。
  4. 自动递增列:

  • DELETE:删除记录后,自动递增列的值不会重置。
  • TRUNCATE:删除记录后,自动递增列的值会被重置为初始值(通常是 1)。

# count(1)跟count(*)

Count()函数,返回语句检索到的行中非NULL值 的数量 。

SELECT COUNT(*) FROM tableA; 和 SELECT COUNT(1) FROM tableA; 是 SQL 中用于统计表中记录数的两种常见方式。它们在大多数情况下表现相同,但在某些特定场景下可能有细微差异。

# COUNT(*)

Select count(*) from tableA 这条语句返回 tableA 表中的所有行数,包括那些包含 NULL 值的列。COUNT(*) 会计算表中的每一行,而不论这些行是否包含 NULL 值。

在mysql的官网中,已进行说明,count(*)与count(1)无任何差异。

官网:

InnoDB handles SELECT COUNT(*) and SELECT COUNT(1) operations in the same way. There is no performance difference.

count函数说明-5.7 (opens new window)

  • https://dev.mysql.com/doc/refman/5.7/en/aggregate-functions.html#function_count

count函数说明-8.0 (opens new window)

  • https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html

# COUNT(1)

select count(1) from tableA ,这条语句返回 tableA 表中的所有行数。这里使用了常量 1 作为参数传递给 COUNT 函数。COUNT(1) 实际上与 COUNT(*) 的效果相同,因为 COUNT 函数只统计非 NULL 的表达式,而 1 永远不会是 NULL。因为 1 永远不是 NULL,所以它会统计每一行。

#MySql
上次更新: 2025/04/23, 16:23:16
跟Redis的数据一致性保证
MySql中的各种锁

← 跟Redis的数据一致性保证 MySql中的各种锁→

最近更新
01
面向切面跟自定义注解的结合
05-22
02
时间跟其他数据的序列化
05-19
03
数据加密与安全
05-17
更多文章>
Theme by Vdoing | Copyright © 2023-2025 EffectTang
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式