1. 程式人生 > >記一些MySQL比較常用的SQL語句

記一些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有點區別。