mysql數(shù)據(jù)庫手記(常用命令及使用相關(guān)tips)

一市咽、mysql服務(wù)的啟動和停止

在mac下啟動


系統(tǒng)偏好設(shè)置中開啟mysql.jpg

系統(tǒng)偏好設(shè)置中開啟mysql服務(wù).jpg

一般安裝mysql都會使用dmg安裝包進(jìn)行安裝,在系統(tǒng)偏好設(shè)置里的mysql直接啟動或者利用命令行:

啟動數(shù)據(jù)庫

sudo /usr/local/mysql/support-files/mysql.server start

如果報錯抵蚊,基本上問題出在權(quán)限上
找到文件 /usr/local/mysql/data 設(shè)置為讀寫讀寫模式即可

sudo chmod -R 777 /usr/local/mysql/data

終止數(shù)據(jù)庫

sudo /usr/local/mysql/support-files/mysql.server stop

重啟數(shù)據(jù)庫

sudo /usr/local/mysql/support-files/mysql.server restart

用Homebrew安裝mysql開啟關(guān)閉操作的備注:
查看brew安裝的mysql信息

brew info mysql

cmake如果未鏈接先執(zhí)行以下兩個命令取消鏈接cmake并安裝

brew unlink cmake 
brew install cmake 

開啟數(shù)據(jù)庫命令示范:

sudo brew services start mysql

二施绎、登陸mysql

語法如下:

mysql -u用戶名 -p用戶密碼

1、登陸本地數(shù)據(jù)庫

鍵入命令mysql -uroot -p贞绳, 回車后提示你輸入密碼谷醉,輸入12345,然后回車即可>進(jìn)入到mysql中了冈闭,mysql的提示符是:

mysql>

2俱尼、連接到遠(yuǎn)程主機(jī)上的MYSQL

假設(shè)遠(yuǎn)程主機(jī)的IP為:0.0.0.0,用戶名為admin,密碼為123拒秘。則鍵入以下命令:

mysql -h0.0.0.0 -uadmin -p123

三号显、增加新用戶

格式:
grant 權(quán)限 on 數(shù)據(jù)庫.* to 用戶名@登錄主機(jī) identified by "密碼"

如,增加一個用戶test密碼為12345躺酒,讓其可以在本機(jī)上登錄押蚤, 并對所有數(shù)據(jù)庫有查詢、插入羹应、修改揽碘、刪除的權(quán)限。首先用以root用戶連入mysql园匹,然后鍵入以下命令:

grant select,insert,update,delete on *.* to test@localhost Identified by "12345";

如果希望該用戶能夠在任何機(jī)器上登陸mysql雳刺,則將localhost改為"%"。

如果你不想test有密碼裸违,可以再打一個命令將密碼去掉掖桦。

grant select,insert,update,delete on mydb.* to test@localhost identified by "";

備注:
全局管理權(quán)限:
FILE: 在MySQL服務(wù)器上讀寫文件。
PROCESS: 顯示或殺死屬于其它用戶的服務(wù)線程供汛。
RELOAD: 重載訪問控制表枪汪,刷新日志等涌穆。
SHUTDOWN: 關(guān)閉MySQL服務(wù)。
數(shù)據(jù)庫/數(shù)據(jù)表/數(shù)據(jù)列權(quán)限:
ALTER: 修改已存在的數(shù)據(jù)表(例如增加/刪除列)和索引雀久。
CREATE: 建立新的數(shù)據(jù)庫或數(shù)據(jù)表宿稀。
DELETE: 刪除表的記錄。
DROP: 刪除數(shù)據(jù)表或數(shù)據(jù)庫赖捌。
INDEX: 建立或刪除索引祝沸。
INSERT: 增加表的記錄。
SELECT: 顯示/搜索表的記錄越庇。
UPDATE: 修改表中已存在的記錄罩锐。
特別的權(quán)限:
ALL: 允許做任何事(和root一樣)。
USAGE: 只允許登錄--其它什么也不允許做悦荒。

四: 操作數(shù)據(jù)庫

1唯欣、 顯示數(shù)據(jù)庫列表

show databases;

缺省有兩個數(shù)據(jù)庫:mysql和test嘹吨。 mysql庫存放著mysql的系統(tǒng)和用戶權(quán)限信息,我們改密碼和新增用戶,實際上就是對這個庫進(jìn)行操作枉氮。

2允粤、 顯示庫中的數(shù)據(jù)表:

use mysql;
show tables;

3、 顯示數(shù)據(jù)表的結(jié)構(gòu):

describe 表名;

4问芬、 建庫與刪庫:

create database 庫名;
drop database 庫名;

5悦析、 建表與刪表:

use 庫名;
create table 表名(字段列表);

創(chuàng)建臨時表

create temporary table 表名(字段列表); 

檢查是否存在建表

create table if not exists 表名(字段列表); 

從已經(jīng)有的表中復(fù)制表的結(jié)構(gòu)

create table 表名2 select * from 表名1 where 條件; 

復(fù)制表

create table 表名2 select * from 表名1; 
drop table 表名;

6、對表重新命名

alter table table1 rename as table2; 

7此衅、修改列的類型

alter table 表名1 modify id int unsigned;//修改列id的類型為int unsigned 
alter table 表名1 change id sid int unsigned;//修改列id的名字為sid强戴,而且把屬性修改為int unsigned 

8、創(chuàng)建索引

alter table 表名 add index ind_id (id); 
create index ind_id on 表名 (id); 

創(chuàng)建唯一索引

create unique index ind_id on 表名 (id);//建立唯一性索引

9挡鞍、刪除索引

drop index idx_id on 表名; 
alter table 表名 drop index ind_id; 

10骑歹、 清空表中記錄:

delete from 表名;

11、 顯示表中的記錄:

select * from 表名;

12墨微、聯(lián)合字符或者多個列(將列id與":"和列name和"="連接)

select concat(id,':',name,'=') from students; 

13道媚、limit(選出10到20條)<第一個記錄集的編號是0>

select * from students order by id limit 9,10; 

14、往表中加入記錄

insert into 表名 values ("參數(shù)1","參數(shù)2");

15翘县、更新表中數(shù)據(jù)

update 表名 set 參數(shù)1="值1" where 參數(shù)2='值2';

16最域、退出MYSQL

 exit

其它:

show processlist;列出每一筆聯(lián)機(jī)的信息。 
show varlables;列出mysql的系統(tǒng)設(shè)定锈麸。 
show tables from db_name;列出db_name中所有數(shù)據(jù)表; 
show [full] columns from table_name;列出table_name中完整信息镀脂,如欄名、類型,包括字符集編碼忘伞。 
show index from table_name; 列出table_name中所有的索引薄翅。 
show table status;钞馁;列出當(dāng)前數(shù)據(jù)庫中數(shù)據(jù)表的信息。 
show table status from db_name;匿刮;列出當(dāng)前db_name中數(shù)據(jù)表的信息僧凰。 
alter table table_name engine innodb|myisam|memory ;更改表類型 
explain table_name / describe table_name ; 列出table_name完整信息,如欄名熟丸、類型训措。 
show create table table_name 顯示當(dāng)前表的建表語句 
alter table table_name add primary key (picid) ; 向表中增加一個主鍵 
alter table table_name add column userid int after picid 修改表結(jié)構(gòu)增加一個新的字段 
alter table table_name character set gb2312 改變表的編碼 
select user(); 顯示當(dāng)前用戶。 
select password(’root’); 顯示當(dāng)前用戶密碼 
select now(); 顯示當(dāng)前日期 
flush privileges 在不重啟的情況下刷新用戶權(quán)限 
mysqld –default-character-set=gb2312 ;設(shè)置默認(rèn)字符集為gb2312 

五光羞、導(dǎo)出和導(dǎo)入數(shù)據(jù)

1绩鸣、 導(dǎo)出數(shù)據(jù):

mysqldump --opt test > mysql.test

即將數(shù)據(jù)庫test數(shù)據(jù)庫導(dǎo)出到mysql.test文件,后者是一個文本文件

如:mysqldump -u root -p123456 --databases dbname > mysql.dbname
就是把數(shù)據(jù)庫dbname導(dǎo)出到文件mysql.dbname中纱兑。

2呀闻、備份數(shù)據(jù)庫

mysqldump -u root 庫名>xxx.data

3、恢復(fù)數(shù)據(jù)庫

mysql -u root -p 庫名 < xxx.data

4潜慎、導(dǎo)入數(shù)據(jù):

mysqlimport -u root -p123456 < mysql.dbname

5捡多、 將文本數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫:

文本數(shù)據(jù)的字段數(shù)據(jù)之間用tab鍵隔開。

use test;
load data local infile "文件名" into table 表名;

6铐炫、用文本方式將數(shù)據(jù)裝入數(shù)據(jù)庫表中(例如~/Desktop/mysql.txt)

LOAD DATA LOCAL INFILE "~/Desktop/mysql.txt" INTO TABLE MYTABLE;

7垒手、導(dǎo)入.sql文件命令(例如~/Desktop/mysql.sql)

use database;
source ~/Desktop/mysql.sql;

六、注意點(diǎn)

1倒信、使用索引的缺點(diǎn)
  1)減慢增刪改數(shù)據(jù)的速度科贬;
  2)占用磁盤空間;
  3)增加查詢優(yōu)化器的負(fù)擔(dān)鳖悠;
  當(dāng)查詢優(yōu)化器生成執(zhí)行計劃時榜掌,會考慮索引,太多的索引會給查詢優(yōu)化器增加工作量乘综,導(dǎo)致無法選擇最優(yōu)的查詢方案憎账;
  
2、分析索引效率
  方法:在一般的SQL語句前加上explain瘾带;
  分析結(jié)果的含義:
  1)table:表名鼠哥;
  2)type:連接的類型,(ALL/Range/Ref)看政。其中ref是最理想的朴恳;
  3)possible_keys:查詢可以利用的索引名;
  4)key:實際使用的索引允蚣;
  5)key_len:索引中被使用部分的長度(字節(jié))于颖;
  6)ref:顯示列名字或者"const"(不明白什么意思);
  7)rows:顯示MySQL認(rèn)為在找到正確結(jié)果之前必須掃描的行數(shù)嚷兔;
  8)extra:MySQL的建議森渐;
  
3做入、使用較短的定長列
  1)盡可能使用較短的數(shù)據(jù)類型;
  2)盡可能使用定長數(shù)據(jù)類型同衣;
  a)用char代替varchar竟块,固定長度的數(shù)據(jù)處理比變長的快些耐齐;
  b)對于頻繁修改的表浪秘,磁盤容易形成碎片,從而影響數(shù)據(jù)庫的整體性能埠况;
  c)萬一出現(xiàn)數(shù)據(jù)表崩潰耸携,使用固定長度數(shù)據(jù)行的表更容易重新構(gòu)造。使用固定長度的數(shù)據(jù)行辕翰,每個記錄的開始位置都是固定記錄長度的倍數(shù)夺衍,可以很容易被檢測到,但是使用可變長度的數(shù)據(jù)行就不一定了喜命;
  d)對于MyISAM類型的數(shù)據(jù)表沟沙,雖然轉(zhuǎn)換成固定長度的數(shù)據(jù)列可以提高性能,但是占據(jù)的空間也大渊抄;
  
4尝胆、使用not null和enum
  盡量將列定義為not null丧裁,這樣可使數(shù)據(jù)的出來更快护桦,所需的空間更少,而且在查詢時煎娇,MySQL不需要檢查是否存在特例二庵,即null值,從而優(yōu)化查詢缓呛;
  如果一列只含有有限數(shù)目的特定值催享,如性別,是否有效或者入學(xué)年份等哟绊,在這種情況下應(yīng)該考慮將其轉(zhuǎn)換為enum列的值因妙,MySQL處理的更快,因為所有的enum值在系統(tǒng)內(nèi)都是以標(biāo)識數(shù)值來表示的票髓;
  
5攀涵、使用optimize table
  對于經(jīng)常修改的表,容易產(chǎn)生碎片洽沟,使在查詢數(shù)據(jù)庫時必須讀取更多的磁盤塊以故,降低查詢性能。具有可變長的表都存在磁盤碎片問題裆操,這個問題對blob數(shù)據(jù)類型更為突出怒详,因為其尺寸變化非常大炉媒。可以通過使用optimize table來整理碎片昆烁,保證數(shù)據(jù)庫性能不下降吊骤,優(yōu)化那些受碎片影響的數(shù)據(jù)表。 optimize table可以用于MyISAM和BDB類型的數(shù)據(jù)表静尼。實際上任何碎片整理方法都是用mysqldump來轉(zhuǎn)存數(shù)據(jù)表水援,然后使用轉(zhuǎn)存后的文件并重新建數(shù)據(jù)表;
  
6茅郎、使用procedure analyse()
  可以使用procedure analyse()顯示最佳類型的建議蜗元,使用很簡單,在select語句后面加上procedure analyse()就可以了系冗;例如:
  select * from students procedure analyse();
  select * from students procedure analyse(16,256);
  第二條語句要求procedure analyse()不要建議含有多于16個值奕扣,或者含有多于256字節(jié)的enum類型,如果沒有限制掌敬,輸出可能會很長惯豆;
  
7、使用查詢緩存
  1)查詢緩存的工作方式:
  第一次執(zhí)行某條select語句時奔害,服務(wù)器記住該查詢的文本內(nèi)容和查詢結(jié)果楷兽,存儲在緩存中,下次碰到這個語句時华临,直接從緩存中返回結(jié)果芯杀;當(dāng)更新數(shù)據(jù)表后,該數(shù)據(jù)表的任何緩存查詢都變成無效的雅潭,并且會被丟棄揭厚。
  2)配置緩存參數(shù):
  變量:query_cache _type,查詢緩存的操作模式扶供。有3中模式筛圆,0:不緩存;1:緩存查詢椿浓,除非與select sql_no_cache開頭太援;2:根據(jù)需要只緩存那些以select sql_cache開頭的查詢;query_cache_size:設(shè)置查詢緩存的最大結(jié)果集的大小扳碍,比這個值大的不會被緩存提岔。
  
8、調(diào)整硬件
  1)在機(jī)器上裝更多的內(nèi)存左腔;
  2)增加更快的硬盤以減少I/O等待時間唧垦;
  尋道時間是決定性能的主要因素,逐字地移動磁頭是最慢的液样,一旦磁頭定位振亮,從磁道讀則很快巧还;
  3)在不同的物理硬盤設(shè)備上重新分配磁盤活動;
  如果可能坊秸,應(yīng)將最繁忙的數(shù)據(jù)庫存放在不同的物理設(shè)備上麸祷,這跟使用同一物理設(shè)備的不同分區(qū)是不同的,因為它們將爭用相同的物理資源(磁頭)褒搔。

9阶牍、安全

剛安裝好的MySql包含一個含空密碼的root帳戶和一個匿名帳戶,這是很大的安全隱患星瘾,對于一些重要的應(yīng)用我們應(yīng)將安全性盡可能提高走孽,在這里應(yīng)把匿名帳戶刪除、 root帳戶設(shè)置密碼琳状,可用如下命令進(jìn)行:

use mysql; 
delete from User where User=”"; 
update User set Password=PASSWORD(’newpassword’) where User=’root’; 

改完重啟 mysql 才能生效.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末磕瓷,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子念逞,更是在濱河造成了極大的恐慌困食,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件翎承,死亡現(xiàn)場離奇詭異硕盹,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)叨咖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門瘩例,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人芒澜,你說我怎么就攤上這事仰剿。” “怎么了痴晦?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長琳彩。 經(jīng)常有香客問我誊酌,道長,這世上最難降的妖魔是什么露乏? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任碧浊,我火速辦了婚禮,結(jié)果婚禮上瘟仿,老公的妹妹穿的比我還像新娘箱锐。我一直安慰自己,他們只是感情好劳较,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布驹止。 她就那樣靜靜地躺著浩聋,像睡著了一般。 火紅的嫁衣襯著肌膚如雪臊恋。 梳的紋絲不亂的頭發(fā)上衣洁,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機(jī)與錄音抖仅,去河邊找鬼坊夫。 笑死撤卢,一個胖子當(dāng)著我的面吹牛环凿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拷邢,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼欣喧,長吁一口氣:“原來是場噩夢啊……” “哼益涧!你這毒婦竟也來了鸽捻?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體姆涩,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年嘶是,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蛛碌。...
    茶點(diǎn)故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡聂喇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情希太,我是刑警寧澤克饶,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站誊辉,受9級特大地震影響矾湃,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜堕澄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一邀跃、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蛙紫,春花似錦拍屑、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至唁毒,卻和暖如春蒜茴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背浆西。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工粉私, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人室谚。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓毡鉴,卻偏偏與公主長得像,于是被迫代替她去往敵國和親秒赤。 傳聞我的和親對象是個殘疾皇子猪瞬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容