1.desc '表名' -- 查看表结构
2.show create table '表名' -- 查看建表语句
3.grant select, insert on '数据库名.表名' to '用户名'@'数据库地址' identified by '密码' -- 创建新用户并授权
4.revoke insert on '数据库名.表名' from '用户名'@'数据库地址' -- 回收权限
5.? contents -- 获取MySQL自带帮助文档目录
6.? '关键字' -- 获取关于此关键字的用法
7.unsigned属性可以指定为无符号int,可以增加一倍的容量
8.BIT数据类型在select的时候只能用bin()或者hex()函数查询
9.show engines -- 查询当前数据库支持的引擎
10.alter table '表名' engine = innodb -- 修改表的引擎
11.alter table '表名' AUTO_INCREMENT=n -- 强制设置自增长列的初始值为n,但只保留在内存中,使用前数据库如果重启则失效
12.创建外键约束时的RESTRICT、CASCADE和SET NULL
RESTRICT表示如果在子表存在关联记录时,父表不能更新或删除用于关联的记录。
CASCADE表示父表更新或删除用于关联的记录时,子表同时更新或删除。
SET NULL表示父表更新或删除用于关联的记录时,子表的外键会设置为null。
KEY `fk_employee_company` (`employee_company_id`), CONSTRAINT `fk_employee_company` FOREIGN KEY (`employee_company_id`) REFERENCES `company` (`company_id`) ON UPDATE CASCADE ON DELETE RESTRICT
13. set foreign_key_checks = 0 -- 关闭外键检查,可以让我们先插入子表数据,再插入父表数据
14. show character set -- 显示MySQL可用的字符集
15. optimize table '表名' -- 对表进行碎片整理
InnoDB引擎的删除默认是标记删除,也就是说运行delete命令时不会从硬盘上直接删除。所以数据库文件会越变越大。特别是当我们使用了blog、text等格式时尤为明显。
create table optimize_test( id int, content text );#创建数据库 insert into optimize_test values(1, repeat('A' ,1000)); insert into optimize_test values(2, repeat('A' ,1000)); insert into optimize_test values(3, repeat('A' ,1000)); insert into optimize_test select * from optimize_test;#运行几次生成多条数据
我们先看看数据库大小
然后我们删除表中id=1的数据,发现数据库的大小并没有改变
optimize table optimize_test;
运行optimize table后,数据库大小减少了1/3
16. show collation like 'UTF8%' -- 获取字符集的校验规则
Default='Yes'表示utf8编码默认使用该校验规则,'%_ci'表示大小写不敏感,'%_cs'表示大小写敏感,'%_bin'表示将字符串每个字符串用二进制数据编译存储。区分大小写,而且可以存二进制的内容。
17. show variables like 'character_set_server' -- 查询服务器的字符集
18. show variables like 'collation_server' -- 查询服务器的字符集校对规则
19. show variables like 'character_set_database' -- 查询当前数据库的字符集
20. show variables like 'collation_database' -- 查询当前数据库的字符集校对规则