MySQL基础命令
查看数据库字符集
1
SHOW VARIABLES LIKE 'character%';
查看某个表已有的约束
1
2
3
4
5
6
7SELECT @a := DATABASE();
SELECT * FROM information_schema.table_constraints
WHERE table_schema = @a AND table_name = '表名称';
-- information_schema 数据库名(系统库)
-- table_constraints 表名称(专门存储各个表的约束)
-- @a 用户自定义变量(获取当前使用的数据库名称)查看字符集比较规则
1
2
3
4
5-- 查看GBK字符集的比较规则
SHOW COLLATION LIKE 'GBK%'; -- 两个结果
-- 查看UTF8字符集的比较规则
SHOW COLLATION LIKE 'utf8%'; -- 很多..查看服务使用的字符集和比较规则
1
2
3
4
5
6
7
8
9
10
11-- 查看服务器的字符集和比较规则
SHOW VARIABLES LIKE '%_server';
-- 查看数据库的字符集和比较规则
SHOW VARIABLES LIKE '%_database';
-- 查看具体数据库的字符集
SHOW CREATE DATABASE dbtest1;
-- 修改数据库的字符集
ALTER DATABASE dbtest1 DETUALT CHARACTER SET 'utf8' COLLCTE 'utf8_general_ci';查看数据库的字符集和比较规则
1
2
3
4
5
6
7
8-- 查看表的字符集
SHOW CREATER TABLE table_test1;
-- 查看表的比较规则
SHOW TABLE STATUS FROM dbtest1 LIKE 'table-test1';
-- 修改表的字符集和比较规则
ALTER TABLE table_test1 DEFAULT CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';sql_mode设置
查看当前的
sql_mode1
2
3
4
5
6
7-- 全局
SELECT @@global.sql_mode;
-- 会话
SELECT @@session.sql_model;
或者
SHOW VARIABLES LIKE 'sql_mode';临时设置: 设置当前窗口
sql_mode1
2
3
4-- 全局
SET GLOBAL sql_mode = 'modes ...';
-- 当前会话
SET SESSION sql_mode = 'modes ...';永久设置: 在
/etc/my.cnf中配置sql_mode1
2
3
4
5
6-- 在 my.cnf(windows系统文件叫 my.ini) 文件中新增配置
[mysqld]
sql_mode = ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
-- 然后重启MySQL服务
-- 注意;在生产环境上是禁止重启MySQL服务的,所以采用 "临时设置方式 + 永久设置方式' 来解决线上的问题;那么即使有天重启了MySQL服务,也会永久生效sql脚本文件执行
执行 xxx.sql文件
1
2
3
4
5-- 登录MySQL服务器
mysql -uroot -p 'xxx'
-- 执行sql文件
source /文件存储路径/xxx.sql; -- 不要加引号