MySQL 基礎命令

做爲前端雖然數據庫接觸的很少,但當使用時總記不住命令確實有點尷尬,遂作此筆記,以方便查閱。html

登陸登出

mysql -h localhost -u root -p  //登陸
QUIT  // 登出

基本操做

ps: 又一次儲存emoji表情時,出現了一次報錯,由於UTF-8編碼有多是兩個、三個、四個字節,其中Emoji表情是4個字節,而Mysql的utf8編碼最多3個字節,因此致使了數據插不進去。
當時的解決方式是更改了某個表的字符集前端

ALTER TABLE tab-name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

註釋:utf8mb4的最低mysql版本支持版本爲5.5.3+mysql

  • 數據庫查看sql

    • 查看全部數據庫數據庫

      • SHOW DATABASES;
    • 查看數據庫變量服務器

      • SHOW VARIABLES;
      • 因爲變量超多,因此使用過濾查看須要的字段:
      • 查看端口:SHOW VARIABLES LIKE 'PORT';
      • 查看可選字符: SHOW VARIABLES LIKE 'CHARACTER%';ide

        character_set_client      爲客戶端編碼方式;
        
        character_set_connection  爲創建鏈接使用的編碼;
        
        character_set_database    爲數據庫的編碼;
        
        character_set_results     爲結果集的編碼;
        
        character_set_server      爲數據庫服務器的編碼;
      • 查看數據庫數據存放路徑編碼

        • SHOW VARIABLES LIKE '%DATADIR%';
  • 數據庫操做code

    • 建立數據庫server

      • CREATE DATABASE name [CHARACTER SET utf8 COLLATE utf8_general_ci];
    • 修改數據庫

      • ALTER DATABASE name CHARACTER SET utf8;
    • 查看建立數據庫語句

      • SHOW CREATE DATABASE name
    • 刪除數據庫

      • DROP DATABASE name;
    • 使用數據庫

      • USE database-name
    • 顯示當前選擇

      • SELECT DATABASE();
  • 數據表操做

    • 建立數據表:

      CREATE TABLE name (
        column-name data_type,
        ...
        )
    • 查看次數據表建立語句:

      • SHOW CREATE TABLE tab-name
    • 查看次數據庫中的數據表:

      • SHOW TABLES;
    • 查看次數據庫中的數據表:

      • DESC tab-name;
    • 查看數據列:

      • SHOW COLUMS FROM tab-name;
    • 插入數據:

      • INSERT tab-name [(column1,column2...)] VALUES (val1,val2...)
    • 更新數據:

      • UPDATE tab-name SET column1 = val1 , column2 = val2 [WHERE expr = val]
    • 外鍵添加:

      • FOREING KEY (column) REFERENCES tab-name (column)
    • 查看數據:

      • SELECT * FROM tab-name;
      • 查看約束 SHOW INDEXES FROM tab-name
      • 過濾&排序 [WHERE,GROUP BY(分組),HAVING,ORDER BY,LIMIT]()
    • 修改數據表:

      1. 添加列:ALTER TABLE tab-name ADD column data-type [FIRST | AFTER column-name](添加多列-add後跟小括號,但無位置關係)
      • 刪除列:ALTER TABLE tab-name DROP column-name
      • 添加約束: ALTER TABLE tab-name PRIMARY KEY (column-name)
      • 刪除主鍵約束:ALTER TABLE tab-name DROP PRIMARY KEY
      • 刪除惟一約束:ALTER TABLE tab-name DROP {INDEX | KEY} index-name
      • 添加刪除默認約束:ALTER TABLE tab-name ALTER column-name {SET DEFAULT default | DROP DEFAULT}
      • 數據表變動1:ALTER TABLE tab-name MODIFY column-name data-type [FIRST | AFTER column-name]
      • 數據表變動2:ALTER TABLE tab-name CHANGE old-name new-name data-type [FIRST | AFTER column-name]
    • 清空數據表:

      • DELETE FROM tab-name;
      • TRUNCATE TABLE tab-name
    • 刪除數據表:

      • DROP tab-name

數據表均用到了的爲sql語句查詢,語句參考

帳戶權限管理

查看帳戶權限:

SHOW GRANTS; # 當前用戶權限
SHOW PRIVILEGES;  # mysql 所支持的權限列表
SHOW GRANTS FOR user;  # 查看某用戶

grant 權限名稱[字段列表] on [數據庫資源類型]數據庫資源 to MySQL帳戶1,[MySQL帳戶2] [with grant option]

*.* 表示全部數據庫,全部數據表

'user'@'%' user 帳號能夠在任意的主機上進行登陸。

建立服務實例級帳號

grant all privileges on *.* to 'supperuser'@'%' identified by 'password' with grant option;

將建立一個名字爲supperuser的帳號,擁有全部的數據庫權限,而且具備grant 權限,能夠建立其餘擁有服務實例權限的其餘用戶。
建立數據庫實例帳號

建立數據庫實例帳號

grant all privileges on database_name.* to 'user'@'%' identified by 'userpass' with grant option;

將建立一個名字爲user的帳號。擁有database_name 數據庫的全部權限,能夠隨該庫中的表進行全部操做。

建立數據表級別的帳號

grant all privileges on table tab_name.test to 'user'@'%' identified by 'userpass' with grant option;

將建立一個名字爲user 的用戶,對tab_name數據庫中test擁有全部的權限。

權限更改

想要增長update, delete,alter 權限能夠以下操做:

grant update,delete,alter on database_name.* to 'user'@'%' identified by 'userpass' with grant option;

想要移除insert 權限:

revoke insert on database_name.* from  'user'@'%';

用戶管理

刪除用戶:

drop user user_name

參考文章roverliang

相關文章
相關標籤/搜索