常用命令跟重要命令
# 常用命令跟重要命令
# 查看各种信息
# 查看mysql版本
SELECT VERSION();
预期的结果:
+-----------+
| @@version |
+-----------+
| 8.0.26 |
+-----------+
2
3
4
5
# 增删查改
以下是crud的模版:
# 增加
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
2
table_name:要插入数据的表的名称。column1, column2, ...:指定要插入数据的列名(可以省略,但需要确保值的顺序与表结构一致)。value1, value2, ...:对应列的值。
# 查找
-- 查询每个部门的平均薪水
SELECT department_id, AVG(salary) AS average_salary
FROM employees
GROUP BY department_id;
2
3
4
以上sql,还使用了分组和聚合函数
# 删除或更新
-- 执行更新或删除操作
UPDATE employees SET salary = 55000.00 WHERE id = 1;
DELETE FROM employees WHERE department_id = 101;
2
3
如果你想删除整张表:
DELETE FROM employees;
当然,删除还有另一个关键字:TRUNCATE
TRUNCATE TABLE table_name;
TRUNCATE 语句用于快速删除表中的所有记录,但它与 DELETE 语句有一些重要的区别。
# TRUNCATE 与 DELETE 的区别
功能:
DELETE:可以删除表中的部分或全部记录,并且可以通过WHERE子句指定条件。TRUNCATE:只能删除表中的所有记录,不能指定条件。
性能:
DELETE:逐行删除记录,会产生大量的日志记录,尤其是在 InnoDB 存储引擎中,因为每一条记录的删除都会被记录到事务日志中。TRUNCATE:直接删除整个表的数据和索引,然后重新创建表结构,因此速度更快,产生的日志更少。
事务处理:
DELETE:可以回滚,如果在一个事务中执行DELETE操作,可以在事务提交之前通过ROLLBACK回滚操作。TRUNCATE:在某些存储引擎(如 InnoDB)中也可以回滚,但在其他存储引擎(如 MyISAM)中通常不可回滚。
自动递增列:
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)无任何差异。
官网:
InnoDBhandlesSELECT COUNT(*)andSELECT 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,所以它会统计每一行。