速查表
mysql -h <服务器IP> -P <端口号> -u <用户名> -p
修改密码
mysqladmin -uroot -p123 password 123456
命令行连接mysql
mysql -h <服务器IP> -P <端口号> -u <用户名> -p
参数说明:
-h <服务器IP>
:MySQL服务器的IP地址。-P <端口号>
:MySQL服务器的端口号,默认为3306。如果是默认端口,可以省略此参数。-u <用户名>
:用于连接MySQL的用户名。-p
:提示输入密码。将提示输入用户密码,但密码不会在命令行中显示。
SELECT @@sql_mode;
ONLY_FULL_GROUP_BY
- 作用:该模式要求在
GROUP BY
查询中,所有未被聚合的字段必须出现在GROUP BY
子句中,或者被聚合函数包裹。 - 默认状态:在 MySQL 5.7 及更高版本中,默认启用。
- 为什么使用:启用该模式可以防止因为非聚合列没有在
GROUP BY
子句中明确指定而导致的结果不确定性或错误。它确保 SQL 查询符合 SQL 标准,避免不一致的结果。 - 例子:
SELECT id, name, SUM(amount) FROM orders GROUP BY id; -- 错误:'name' 未出现在 GROUP BY 中
STRICT_TRANS_TABLES
NO_ZERO_IN_DATE
- 作用:在
STRICT
模式下,如果插入或更新操作中包含无效数据(例如,插入 NULL 到不允许为 NULL 的列),MySQL 会抛出错误而不是警告。此模式仅在事务表中生效(例如,InnoDB)。 - 默认状态:在 MySQL 5.7 及以上版本中,通常启用。
- 为什么使用:启用该模式可以确保数据的严格性,避免无效数据进入数据库。
- 例子:
INSERT INTO users (id, name) VALUES (NULL, 'John'); -- 错误:id 列不能为 NULL
- 作用:防止插入日期(
DATE
)或时间(DATETIME
)字段时包含零日期(例如0000-00-00
)。在该模式启用时,0000-00-00
被视为无效日期,会抛出错误。 - 默认状态:在 MySQL 5.7.4 之后,默认启用。
- 为什么使用:启用该模式可避免零日期的插入,确保日期字段始终包含有效日期。
- 例子:
INSERT INTO events (event_date) VALUES ('0000-00-00');
-- 错误:不允许插入零日期
NO_ZERO_DATE
ERROR_FOR_DIVISION_BY_ZERO
NO_ENGINE_SUBSTITUTION
- 作用:与
NO_ZERO_IN_DATE
类似,但仅针对DATE
类型字段。当日期字段为0000-00-00
时会引发错误。 - 默认状态:默认情况下是启用的(与
NO_ZERO_IN_DATE
一起启用)。 - 为什么使用:防止出现非法的零日期,确保日期字段有效。
- 例子:
INSERT INTO users (birthdate) VALUES ('0000-00-00'); -- 错误:不允许插入零日期
- 作用:在执行除法运算时,如果发生除以零的情况,会引发错误(而不是返回
NULL
或Inf
)。 - 默认状态:在 MySQL 5.7.5 及之后版本中,默认启用。
- 为什么使用:启用该模式可以防止在除法操作中出现除零错误而默默忽略,确保错误能够被发现并处理。
- 例子:
SELECT 1 / 0; -- 错误:除以零错误
- 作用:当创建表时,如果指定的存储引擎不可用(例如,
InnoDB
不可用),MySQL 会抛出错误而不是自动回退到默认引擎(例如MyISAM
)。如果禁用此模式,MySQL 会自动将存储引擎回退到默认的存储引擎。 - 默认状态:启用(通常是默认状态)。
- 为什么使用:启用该模式确保在创建表时,如果指定的引擎不可用,操作会失败并抛出错误,而不是默默地使用其他引擎。
- 例子:
CREATE TABLE test (id INT) ENGINE=InnoDB;