1.1.1 命令鏈接數據庫php
# 基礎格式
mysql [OPTIONS] [database_name]
# 經常使用參數格式
mysql [-h<ip>] [-u<username>] [-p<password>] [-P<port>] [-e<command>] [database_name]
說明:選項及其參數間能夠有空格也能夠沒空格;-p可直接接密碼也能夠後邊要求輸入時再輸入;密碼有$等元字符時要用單引號括起來防止被解析掉;-e後的的命令通常都有空格因此通常都用引號括起來。html
1.1.2 斷開數據庫鏈接mysql
-- 方式一 exit -- 方式二 quit
1.1.3 經常使用圖形界面客戶端web
Navicat:暫時見到最好用的mysql客戶端;原來有免費版本Navicat Lite如今已經不提供了。sql
Workbench:MySQL官方客戶端,各方面都還能夠;最大的糟點大概是界面有點醜。shell
HeidiSQL:暫時見到的開源免費還算能用的mysql客戶端;最讓人難受的是數據庫列表和打開後的數據庫屬兩個窗口。數據庫
phpMyAdmin:web形式的客戶端比較受歡迎,但php寫的也有就語言侷限性。session
1.2.1 建立數據庫ide
-- 基礎用法 create database <database_name>; -- 指定utf8編碼格式 create database <database_name> character set utf8 collate utf8_general_ci;
1.2.2 刪除數據庫ui
drop database <database_name>;
1.2.3 修改數據庫
應該來說,修改數據庫咱們最但願的是修改數據庫名,但mysql並無提供直接的修改數據庫名的操做(如今的修改本質上都是新建一個數據庫而後把表導過去),只能改改默認編碼之類的。
alter database <database_name> character set = 'utf8' ;
1.2.4 查看現有數據庫
-- 查看全部數據庫 show databases; -- 查看當前使用的數據庫 select database(); -- 查看數據庫建立信息 show create database database_name;
1.2.5 使用數據庫
use <database_name>;
1.3.1 建立數據表
-- 基礎建立格式 create table table_name(column_1_name_1 column_1_type, column_2_name_2 column_1_type) -- 建立示例;習慣在每一個字段後回車換行 create table if not exists test_table( id int unsigned auto_increment, username varchar(100) not null, password varchar(100) not null, primary key(id) )default charset=utf8;
1.3.2 刪除數據表
drop table <table_name>;
1.3.3 修改數據表
-- 重命令數據表 rename table <old_table_name> to <new_table_name>;
1.3.4 查看數據表
show tables [ from database_name ];
1.4.1 增長字段
alter table <table_name> add [column] <column_name> <column_type> [first | after ready_column];
1.4.2 刪除字段
alter table <table_name> drop [column] <column_name>;
1.4.3 修改字段
-- 修改字段名 alter table <table_name> rename column <old_column_name> to <new_column_name>; -- 修改字段類型 alter table <table_name> modify [column] <column_name> <new_column_type> [first | after ready_column]; -- 同時修改字段名和字段類型 alter table <table_name> change [column] <old_column_name> <new_column_name> <new_column_type> [first | after ready_column];
1.4.4 查看字段
show columns from <table_name>; desc <table_name>;
1.5.1 插入記錄
insert [into] <table_name> [column_name_1,column_name_2] values (value_10,value_20) [,(value_11,value_21)];
1.5.2 刪除記錄
delete from <table_name> [ where column_name = 'value' ];
1.5.3 修改記錄
update <table_name> set <column_name> = <value> [ where column_name = "value" ];
1.5.4 查看記錄
select * from <table_name> [ where column_name = "value" ];
-- 方法一:使用into outfile導出數據 -- 導出默認格式:文件本件,字段以\t分隔,行以\n分隔 -- 只指定文件名不具體給出目錄時,文件會保存到mysql配置的導出目錄下 select * from table_name into outfile "<file_path>"; -- 方法二:使用mysqldump導出數據 -- 導出默認格式:.sql文件 -- 不指定數據庫名時默認導出全部數據庫 mysqldump -u<username> -p<password> [--databases <database_names>] > <file_path> mysqldump -u<username> -p<password> [--databases <database_names>] --result-file <file_path>
-- 方法一:使用mysql命令導入sql語句(.sql)文件 mysql -u<username> -p<password> < <file_path> -- 方法二:登陸數據庫後使用source入sql語句(.sql)文件 -- 固然也可使用mysql -u<username> -p<password> -e <command>轉成shell命令形式 source <file_path> -- 方法三:登陸數據庫後使用load data導入.cvs等格式文件 -- 固然也可使用mysql -u<username> -p<password> -e <command>轉成shell命令形式 -- local是指文件在登陸mysql的那臺機器上 -- 默認.cvs格式,即字段分隔符爲,行分隔符爲換行符(具體是\r\n仍是\n仍是\r看你係統) -- 對於數據格式,導入時mysql會盡最大可能將導入的數據轉成字段的格式 -- 若是導入的字段值中包含分隔符,此種狀況導入前應處理,否則會誤導mysql的分隔判斷 load data local infile <file_path> into table <table_name>; -- 自定義字段分隔符和行分隔符 load data local infile <file_path> into table <table_name>[(column_names)] fields terminated by ':' lines terminated by '\n'; -- 若是導入的文件中某個字段沒有值(或者想讓自增加字段自增加),則將該字段留空便可(如,,) -- 若是導入的文件中某個字段對應的位置是有值的但並不想導入數據庫,則在column_names位置使用@column_name形式指示導入時跳過該字段便可 -- 方法四:使用mysqlimport導入.cvs等格式文件 -- mysqlimport從功能上來講只是load data的一個shell命令形式 mysqlimport -u<username> -p<password> --local <database_name> <file_path> mysqlimport -u<username> -p<password> --local --fields-terminated-by "," --lines-terminated-by "\n" <database_name> <file_path>
-- create只建立用戶,該用戶沒有任何如增刪改查的權限 create user <username>@<ip> [identified by <password>]; -- grant先建立用戶,後又可給用戶賦權 -- with grant option表示容許該用戶將其所擁有的權限,賦給其餘人 grant <all|create|drop|alter|show|insert|delete|update|select> on <database_name>.<table_name> to <username|rolename>@<ip> [identified by <password>] [with grant option]; -- 給角色增長權限 grant <all|create|drop|alter|show|insert|delete|update|select> on <database_name>.<table_name> to <rolename>; -- 給用戶增長角色 grant <rolename> to <username>@<ip>;
-- 從用戶回收權限 revoke <all|create|drop|alter|show|insert|delete|update|select> on <database_name>.<table_name> from <username|rolename>@<ip>; -- 從角色回收權限 revoke <all|create|drop|alter|show|insert|delete|update|select> on <database_name>.<table_name> from <rolename>; -- 從用戶回收角色 revoke <rolename> from <username>@<ip>;
-- 查看當前登陸用戶 select user(); -- 查看全部用戶 select user,host from mysql.user; -- 修改當前用戶密碼 set password = <password>; -- 修改指定用戶密碼 set password for <username>@<ip> = <password>; -- 修改當前用戶密碼 alter user user() identified by <password>; -- 修改指定用戶密碼 alter user <username>@<ip> identified by <password>; -- 5.7以前版本 update mysql.user set password=PASSWORD(<password>) where user=<username>; -- 5.7及以後版本 update mysql.user set authentication_string=PASSWORD(<password>) where user=<username>;
-- 查看數據庫版本 select version(); -- 查看鏈接數 show status where variable_name = 'Threads_connected'; show global status like "Threads_connected"; -- 查看具體鏈接 show processlist; -- 查看在本機客戶端中執行過的mysql命令 cat ~/.mysql_history -- 大多變量可在my.cnf文件中配置默認值,但下劃線要改爲槓 -- mysql配置文件中,既容許不一樣文件間有相同節區,也容許一個文件有重複的節區,最後彙總去重使用 -- 查看變量 show [global|session] variables [like <pattern>]; -- 設置變量值,但set並不寫入文件即重啓後失效 set <variable_name> = <value>; -- 查看支持的編碼 show character set [ likt <pattern> ]; -- 服務端使用什麼編碼存並不那麼重要,只要客戶端使用正確的編碼便可正確顯示 -- 將character_set_client, character_set_connection及character_set_results三個變量設爲給定編碼 set names 'utf8';
參考: