记一些MySQL比较常用的SQL语句
记一些MySQL比较常用的SQL语句
在这里记录一些平时经常使用的一些SQL,方便以后直接拿来使用。大家也可以在评论里补充,然后我再加进来。
自增id的重置
下面的表名
填需要重置的表
-
使用truncate:
truncate 表名;
- 说明:使用
truncate
会删除表的数据释放空间,并且重置字自增id,但不会删除表的定义。 - 用处:需要清空表的时候才能使用。
- 说明:使用
-
使用修改表的方法:
alter table 表名 auto_increment = 1
- 说明:此方法和上面的二方法类似。也不会清空数据,有可能会出现重复key的可能,所以此方法也只适用于清空表之后重置自增id或者大量删除后修改自增id。
使外键暂时失效、有效
-
暂时失效
SET FOREIGN_KEY_CHECKS = 0;
-
外键有效
SET FOREIGN_KEY_CHECKS = 1;
设置步长
- 注意:全局,整个系统.
-- 设置步长为5 SET @@auto_increment_increment = 5;
数据库导出为数据字典
- 在工具里面执行下面的SQL,我使用的是
sqlyog
,指定要导出的数据库即可, 这里test为数据库,然后再用sqlyog
工具导出为Excel表格即可。-- 把MySQL数据库导出为数据字典 USE information_schema; SELECT -- T.TABLE_SCHEMA AS '数据库名称', T.TABLE_NAME AS '表名', T.TABLE_COMMENT AS '表说明', -- T.TABLE_TYPE AS '表类型', -- T. ENGINE AS '数据库引擎', C.ORDINAL_POSITION AS '字段编号', C.COLUMN_NAME AS '字段名', C.COLUMN_TYPE AS '数据类型', C.IS_NULLABLE AS '允许为空', C.COLUMN_KEY AS '键类型', C.EXTRA AS '自增属性', -- C.CHARACTER_SET_NAME AS '编码名称', C.COLUMN_COMMENT AS '字段说明' FROM COLUMNS C INNER JOIN TABLES T ON C.TABLE_SCHEMA = T.TABLE_SCHEMA AND C.TABLE_NAME = T.TABLE_NAME WHERE T.TABLE_SCHEMA = 'test' -- 指定要生成数据字典的数据库
解决MySQL不区分大小写
-
MySQL默认的字符检索策略:
utf8_general_ci
,表示不区分大小写;utf8_general_cs
表示区分大小写,utf8_bin
表示二进制比较,同样也区分大小写。-
建库、建表时区分
创建表时,直接设置表的
collate
属性为utf8_general_cs
或者utf8_bin
,像下面这样:CREATE TABLE 表名( id INT PRIMARY KEY, name VARCHAR(32) NOT NULL ) ENGINE = INNODB COLLATE = utf8_bin;
如果已经创建表,则直接修改字段的
Collation
属性为utf8_general_cs
或者utf8_bin
,像下面这样:ALTER TABLE 表名 MODIFY COLUMN 列名 VARCHAR(50) BINARY CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL;
-
查询时区分
直接修改sql语句,在要查询的字段前面加上
binary
关键字即可在每一个条件前加上binary关键字, 下面的
username
和password
均区分大小写。select * from user where binary username = 'admin' and binary password = 'admin';
将参数以
binary('')
包围select * from user where username like binary('admin') and password like binary('admin');
注意:如果你的项目中使用的是hibernate框架的话,使用
from User where binary username = ? and binary password = ?
会报错, 使用from User where username like binary(?) and password like binary(?;
才不会报错,hibernate使用的是hql,和原生sql有点区别。
-
作者:不敲代码的攻城狮
出处:https://www.cnblogs.com/leigq/
任何傻瓜都能写出计算机可以理解的代码。好的程序员能写出人能读懂的代码。