zoukankan      html  css  js  c++  java
  • 记一些MySQL比较常用的SQL语句

    记一些MySQL比较常用的SQL语句

    在这里记录一些平时经常使用的一些SQL,方便以后直接拿来使用。大家也可以在评论里补充,然后我再加进来。

    自增id的重置

    下面的表名填需要重置的表

    1. 使用truncate:

      truncate 表名;
      
      • 说明:使用truncate会删除表的数据释放空间,并且重置字自增id,但不会删除表的定义。
      • 用处:需要清空表的时候才能使用。
    2. 使用修改表的方法:

      alter table 表名 auto_increment = 1
      
      • 说明:此方法和上面的二方法类似。也不会清空数据,有可能会出现重复key的可能,所以此方法也只适用于清空表之后重置自增id或者大量删除后修改自增id。

    使外键暂时失效、有效

    1. 暂时失效

      SET FOREIGN_KEY_CHECKS = 0;
      
    2. 外键有效

      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关键字, 下面的usernamepassword均区分大小写。

        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/
    任何傻瓜都能写出计算机可以理解的代码。好的程序员能写出人能读懂的代码。

     
  • 相关阅读:
    Rafy 框架
    巧用拦截器:高效的扩展点设计
    Rafy 框架
    Rafy 框架
    Rafy 框架
    Rafy 框架-发布网页版用户手册
    Rafy 领域实体框架
    基金投资方法札记
    股票、基金投资方案总结
    BaaS API 设计规范
  • 原文地址:https://www.cnblogs.com/leigq/p/13406596.html
Copyright © 2011-2022 走看看