2021年mysql總結(jié)_第1頁
2021年mysql總結(jié)_第2頁
2021年mysql總結(jié)_第3頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、精選word文檔 下載可編輯mysql總結(jié)mysql命令201*年06月10日星期三上午11:44常見的mysql命令201*-06-0917:59一、連接mysql格式mysql-h主機地址-u用戶名p用戶密碼1、例1連接到本機上的mysql。首先在打開dos窗口,然后進(jìn)入目錄mysqlbin,再鍵入命令mysql-uroot-p,回車后提示你輸密碼,如果剛安裝好mysql,超級用戶root是沒有密碼的,故直接回車即可進(jìn)入到mysql中了,mysql的提示符是mysql。2、例2連接到遠(yuǎn)程主機上的mysql。假設(shè)遠(yuǎn)程主機的ip為10,用戶名為root,密碼為abcd

2、123。則鍵入以下命令mysql-h10-uroot-pabcd123(注:u與root可以不用加空格,其它也一樣)3、退出mysql命令exit(回車)。二、修改密碼格式mysqladmin-u用戶名-p舊密碼password新密碼1、例1給root加個密碼ab12。首先在dos下進(jìn)入目錄mysqlbin,然后鍵入以下命令mysqladmin-uroot-passwordab12注因為開始時root沒有密碼,所以-p舊密碼一項就可以省略了。2、例2再將root的密碼改為djg345。mysqladmin-uroot-pab12passworddjg345三、增加新用

3、戶。(注意和上面不同,下面的因為是mysql環(huán)境中的命令,所以后面都帶一個分號作為命令結(jié)束符)格式grantselecton數(shù)據(jù)庫.*to用戶名登錄主機identifiedby密碼例1、增加一個用戶test1密碼為abc,讓他可以在任何主機上登錄,并對所有數(shù)據(jù)庫有查詢、插入、修改、刪除的權(quán)限。首先用以root用戶連入mysql,然后鍵入以下命令grantselect,insert,update,deleteon*.*totest2localhostidentifiedbyabc;如果你不想test2有密碼,可以再打一個命令將密碼消掉。grantselect,insert,update,dele

4、teonmydb.*totest2localhostidentifiedby;在上面講了登錄、增加用戶、密碼更改等問題。下面我們來看看mysql中有關(guān)數(shù)據(jù)庫方面的操作。注意你必須首先登錄到mysql中,以下操作都是在mysql的提示符下進(jìn)行的,而且每個命令以分號結(jié)束。1、mysql常用命令createdatabasename;創(chuàng)建數(shù)據(jù)庫usedatabasename;選擇數(shù)據(jù)庫dropdatabasename直接刪除數(shù)據(jù)庫,不提醒showtables;顯示表describetablename;表的詳細(xì)描述select中加上distinct去除重復(fù)字段mysqladmindropdatabase

5、name刪除數(shù)據(jù)庫前,有提示。顯示當(dāng)前mysql版本和當(dāng)前日期selectversion(),current_date;2、修改mysql中root的密碼shellmysql-uroot-pmysqlupdateusersetpassword=password(”xueok654123)whereuser=root;mysqlflushprivileges/刷新數(shù)據(jù)庫mysqlusedbname;打開數(shù)據(jù)庫mysqlshowdatabases;顯示所有數(shù)據(jù)庫mysqlshowtables;顯示數(shù)據(jù)庫mysql中所有的表先usemysql;然后mysqldescribeuser;顯示表mysql

6、數(shù)據(jù)庫中user表的列信息);3、grant創(chuàng)建一個可以從任何地方連接服務(wù)器的一個完全的超級用戶,但是必須使用一個口令something做這個mysqlgrantallprivilegeson*.*touserlocalhostidentifiedbysomethingwith增加新用戶格式grantselecton數(shù)據(jù)庫.*to用戶名登錄主機identifiedby“密碼”grantallprivilegeson*.*tomontylocalhostidentifiedbysomethingwithgrantoption;grantallprivilegeson*.*tomonty”%”id

7、entifiedbysomethingwithgrantoption;刪除授權(quán)mysqlrevokeallprivilegeson*.*fromroot”%”;mysqldeletefromuserwhereuser=”root”andhost=”%”;mysqlflushprivileges;創(chuàng)建一個用戶custom在特定客戶端it36com登錄,可訪問特定數(shù)據(jù)庫fangchandbmysqlgrantselect,insert,update,delete,create,droponfangchandb.*tocustomit36comidentifiedbypasswd重命名表:mysql

8、altertablet1renamet2;4、mysqldump備份數(shù)據(jù)庫shellmysqldump-hhost-uroot-pdbnamedbname_backup.sql恢復(fù)數(shù)據(jù)庫shellmysqladmin-hmyhost-uroot-pcreatedbnameshellmysqldump-hhost-uroot-pdbnamemysqladmin-uroot-p-ddatabasenamea.sql如果只想卸出插入數(shù)據(jù)的sql命令,而不需要建表命令,則命令如下shellmysqladmin-uroot-p-tdatabasenamea.sql那么如果我只想要數(shù)據(jù),而不想要什么sql

9、命令時,應(yīng)該如何操作呢?mysqldump-其中,只有指定了-t參數(shù)才可以卸出純文本文件,表示卸出數(shù)據(jù)的目錄,表示當(dāng)前目錄,即與mysqldump同一目錄。如果不指定driver表,則將卸出整個數(shù)據(jù)庫的數(shù)據(jù)。每個表會生成兩個文件,一個為.sql文件,包含建表執(zhí)行。另一個為.txt文件,只包含數(shù)據(jù),且沒有sql指令。5、可將查詢存儲在一個文件中并告訴mysql從文件中讀取查詢而不是等待鍵盤輸入。可利用外殼程序鍵入重定向?qū)嵱贸绦騺硗瓿蛇@項工作。例如,如果在文件my_file.sql中存放有查詢,可如下執(zhí)行這些查詢例如,如果您想將建表語句提前寫在sql.txt中:mysqlmysql-hmyhost

10、-uroot-pdatabasecreatedatabasestaffer2)創(chuàng)建表staffer,department,position,depart_poscreatetables_position(idintnotnullauto_increment,namevarchar(20)notnulldefault經(jīng)理,#設(shè)定默認(rèn)值descriptionvarchar(100),primarykeypk_positon(id)#設(shè)定主鍵);createtabledepartment(idintnotnullauto_increment,namevarchar(20)notnulldefault

11、系統(tǒng)部,#設(shè)定默認(rèn)值descriptionvarchar(100),primarykeypk_department(id)#設(shè)定主鍵);createtabledepart_pos(department_idintnotnull,position_idintnotnull,primarykeypk_depart_pos(department_id,position_id)#設(shè)定復(fù)和主鍵);createtablestaffer(idintnotnullauto_incrementprimarykey,#設(shè)定主鍵namevarchar(20)notnulldefault無名氏,#設(shè)定默認(rèn)值depar

12、tment_idintnotnull,position_idintnotnull,unique(department_id,position_id)#設(shè)定唯一值);3)刪除mysqldroptabledepart_pos;droptabledepartment;droptables_position;droptablestaffer;dropdatabasestaffer;9、修改結(jié)構(gòu)mysql#表position增加列testaltertablepositionadd(testchar(10);#表position修改列testaltertablepositionmodifytestchar

13、(20)notnull;#表position修改列test默認(rèn)值altertablepositionaltertestsetdefaultsystem;#表position去掉test默認(rèn)值altertablepositionaltertestdropdefault;#表position去掉列testaltertablepositiondropcolumntest;#表depart_pos刪除主鍵altertabledepart_posdropprimarykey;#表depart_pos增加主鍵altertabledepart_posaddprimarykeypk_depart_pos(de

14、partment_id,position_id);10、操作數(shù)據(jù)#插入表departmentinsertintodepartment(name,description)values(系統(tǒng)部,系統(tǒng)部);insertintodepartment(name,description)values(公關(guān)部,公關(guān)部);insertintodepartment(name,description)values(客服部,客服部);insertintodepartment(name,description)values(財務(wù)部,財務(wù)部);insertintodepartment(name,description)

15、values(測試部,測試部);#插入表s_positioninsertintos_position(name,description)values(總監(jiān),總監(jiān));insertintos_position(name,description)values(經(jīng)理,經(jīng)理);insertintos_position(name,description)values(普通員工,普通員工);#插入表depart_posinsertintodepart_pos(department_id,position_id)selecta.iddepartment_id,b.idpostion_idfromdepartm

16、enta,s_positionb;#插入表stafferinsertintostaffer(name,department_id,position_id)values(陳達(dá)治,1,1);insertintostaffer(name,department_id,position_id)values(李文賓,1,2);insertintostaffer(name,department_id,position_id)values(馬佳,1,3);insertintostaffer(name,department_id,position_id)values(亢志強,5,1);insertintosta

17、ffer(name,department_id,position_id)values(楊玉茹,4,1);11、查詢及刪除操作#顯示系統(tǒng)部的人員和職位,department_name,position_namefromstaffera,departmentb,s_positioncwherea.department_id=b.idanda.position_id==系統(tǒng)部;#顯示系統(tǒng)部的人數(shù)selectcount(*)fromstaffera,departmentbwherea.department_id=b.idandb

18、.name=系統(tǒng)部#顯示各部門的人數(shù)selectcount(*)cou,fromstaffera,departmentbwherea.department_id=;#刪除客服部deletefromdepartmentwherename=客服部;#將財務(wù)部修改為財務(wù)一部updatedepartmentsetname=財務(wù)一部wherename=財務(wù)部;12、備份和恢復(fù)備份數(shù)據(jù)庫stafferc:mysqlbinmysqldump-uroot-prootstaffere:staffer.sql得到的staffer.sql是一個sql腳本,不包括建庫的語

19、句,所以你需要手工創(chuàng)建數(shù)據(jù)庫才可以導(dǎo)入恢復(fù)數(shù)據(jù)庫staffer,需要創(chuàng)建一個空庫stafferc:mysqlbinmysql-uroot-prootstaffere:staffer.sqlmysql-uroot-proote:staffer.sql但這樣的話系統(tǒng)種就不能存在staffer庫,且無法導(dǎo)入其他名字的數(shù)據(jù)庫,當(dāng)然你可以手工修改staffer.sql文件13、從文本向數(shù)據(jù)庫導(dǎo)入數(shù)據(jù)1)使用工具c:mysqlbinmysqlimport這個工具的作用是將文件導(dǎo)入到和去掉文件擴展名名字相同的表里,如staffer.txt,staffer都是導(dǎo)入到staffer表中常用選項及功能如下-dor

20、-delete新數(shù)據(jù)導(dǎo)入數(shù)據(jù)表中之前刪除數(shù)據(jù)數(shù)據(jù)表中的所有信息-for-force不管是否遇到錯誤,mysqlimport將強制繼續(xù)插入數(shù)據(jù)-ior-ignoremysqlimport跳過或者忽略那些有相同唯一關(guān)鍵字的行,導(dǎo)入文件中的數(shù)據(jù)將被忽略。-lor-lock-tables數(shù)據(jù)被插入之前鎖住表,這樣就防止了,你在更新數(shù)據(jù)庫時,用戶的查詢和更新受到影響。-ror-replace這個選項與i選項的作用相反;此選項將替代表中有相同唯一關(guān)鍵字的記錄。-fields-enclosed-by=char指定文本文件中數(shù)據(jù)的記錄時以什么括起的,很多情況下數(shù)據(jù)以雙引號括起。默認(rèn)的情況下數(shù)據(jù)是沒有被字符括起

21、的。-fields-terminated-by=char指定各個數(shù)據(jù)的值之間的分隔符,在句號分隔的文件中,分隔符是句號。您可以用此選項指定數(shù)據(jù)之間的分隔符。默認(rèn)的分隔符是跳格符(tab)-lines-terminated-by=str此選項指定文本文件中行與行之間數(shù)據(jù)的分隔字符串或者字符。默認(rèn)的情況下mysqlimport以newline為行分隔符。您可以選擇用一個字符串來替代一個單個的字符一個新行或者一個回車。mysqlimport命令常用的選項還有-v顯示版本(version),-p提示輸入密碼(password)等。這個工具有個問題,無法忽略某些列,這樣對我們的數(shù)據(jù)導(dǎo)入有很大的麻煩,雖然

22、可以手工設(shè)置這個字段,但會出現(xiàn)莫名其妙的結(jié)果,我們做一個簡單的示例我們定義如下的depart_no.txt,保存在e盤,間隔為制表符t1011111224執(zhí)行如下命令c:mysqlbinmysqlimport-uroot-prootstaffere:depart_pos.txt在這里沒有使用列的包圍符號,分割采用默認(rèn)的t,因為采用別的符號會有問題,不知道是不是windows的原因2)loaddatainfilefile_nameintotable_name(column1_name,column2_name)這個命令在mysql提示符下使用,優(yōu)點是可以指定列導(dǎo)入,示例如下c:mysqlbinm

23、ysql-uroot-prootstaffermysqlloaddatainfilee:/depart_no.txtintodepart_no(department_id,position_id);這兩個工具在windows下使用都有問題,不知道是windows的原因還是中文的問題,而且不指定的列它產(chǎn)生了空值,這顯然不是我們想要的,所以謹(jǐn)慎使用這些工具進(jìn)入mysql:mysql-uuser-ppassword-port=33071:使用show語句找出在服務(wù)器上當(dāng)前存在什么數(shù)據(jù)庫mysqlshowdatabases;2:2、創(chuàng)建一個數(shù)據(jù)庫mysqldatamysqlcreatedatabase

24、mysqldata;3:選擇你所創(chuàng)建的數(shù)據(jù)庫mysqlusemysqldata;(按回車鍵出現(xiàn)databasechanged時說明操作成功!)4:查看現(xiàn)在的數(shù)據(jù)庫中存在什么表mysqlshowtables;5:創(chuàng)建一個數(shù)據(jù)庫表mysqlcreatetablemytable(namevarchar(20),sexchar(1);6:顯示表的結(jié)構(gòu)mysqldescribemytable;7:往表中加入記錄mysqlinsertintomytablevalues(hyq,m);8:用文本方式將數(shù)據(jù)裝入數(shù)據(jù)庫表中(例如d:/mysql.txt)mysqlloaddatalocalinfiled:/my

25、sql.txtintotablemytable;9:導(dǎo)入.sql文件命令(例如d:/mysql.sql)mysqlusedatabase;mysqlsourced:/mysql.sql;10:刪除表mysqldroptablemytable;11:清空表mysqldeletefrommytable;12:更新表中數(shù)據(jù)mysqlupdatemytablesetsex=fwherename=hyq;updatelow_priorityignoretbl_namesetcol_name1=expr1,col_name2=expr.wherewhere_definitionorderby.limitr

26、owsorupdatelow_priorityignoretbl_name,tbl_name.setcol_name1=expr1,col_name2=expr.wherewhere_definitionupdate以新的值更新現(xiàn)存表中行的列。set子句指出要修改哪個列和他們應(yīng)該給定的值。where子句如果被給出,指定哪個記錄行應(yīng)該被更新。否則,所有的記錄行被更新。如果orderby子句被指定,記錄行將被以指定的次序更新。如果你指定關(guān)鍵詞low_priority,update的執(zhí)行將被延遲,直到?jīng)]有其它的客戶端正在讀取表。如果你指定關(guān)鍵詞ignore,該更新語句將不會異常中止,即使在更新過程中

27、出現(xiàn)重復(fù)鍵錯誤。導(dǎo)致沖突的記錄行將不會被更新。如果在一個表達(dá)式中從tbl_name中訪問一個列,update使用列的當(dāng)前值。舉例來說,下面的語句設(shè)置age列值為它的當(dāng)前值加1mysqlupdatepersondatasetage=age+1;update賦值是從左到右計算的。舉例來說,下列語句將age列設(shè)置為它的兩倍,然后再加1mysqlupdatepersondatasetage=age*2,age=age+1;如果你設(shè)置列為其當(dāng)前的值,mysql注意到這點,并不更新它。update返回實際被改變的記錄行數(shù)目。在mysql22或更新的版本中,capi函數(shù)mysql_info()返回被匹配并更

28、新的記錄行數(shù)目,以及在update期間發(fā)生的警告的數(shù)目。在mysql23中,你可以使用limit#來確保只有給定的記錄行數(shù)目被更改。如果一個orderby子句被使用(從mysql0.0開始支持),記錄行將以指定的次序被更新。這實際上只有連同limit一起才有用。從mysql0.4開始,你也可以執(zhí)行一個包含多個表的update的操作updateitems,monthsetitems.price=month.pricewhereitems.id=month.id;注意多表update不可以使用orderby或limit。關(guān)鍵字:mysql啟動netstartmysql;進(jìn)入mysql-uroot-

29、p/mysql-hlocalhost-uroot-pdatabasename;列出數(shù)據(jù)庫showdatabases;選擇數(shù)據(jù)庫usedatabasename;列出表格showtables;顯示表格列的屬性showcolumnsfromtablename;建立數(shù)據(jù)庫sourcefilename.txt;匹配字符可以用通配符_代表任何一個字符,代表任何字符串;增加一個字段altertabletabelnameaddcolumnfieldnamedatetype;增加多個字段altertabletabelnameaddcolumnfieldname1datetype,addcolumnsfieldn

30、ame2datetype;多行命令輸入:注意不能將單詞斷開;當(dāng)插入或更改數(shù)據(jù)時,不能將字段的字符串展開到多行里,否則硬回車將被儲存到數(shù)據(jù)中;增加一個管理員帳戶grantallon*.*touserlocalhostidentifiedbypassword;每條語句輸入完畢后要在末尾填加分號;,或者填加g也可以;查詢時間selectnow();查詢當(dāng)前用戶selectuser();查詢數(shù)據(jù)庫版本selectversion();查詢當(dāng)前使用的數(shù)據(jù)庫selectdatabase();1、刪除student_course數(shù)據(jù)庫中的students數(shù)據(jù)表rm-fstudent_course/studen

31、ts.*2、備份數(shù)據(jù)庫(將數(shù)據(jù)庫test備份)mysqldump-uroot-ptestc:test.txt備份表格(備份test數(shù)據(jù)庫下的mytable表格)mysqldump-uroot-ptestmytablec:test.txt將備份數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫(導(dǎo)回test數(shù)據(jù)庫)mysql-uroot-ptest3、創(chuàng)建臨時表(建立臨時表zengchao)createtemporarytablezengchao(namevarchar(10);4、創(chuàng)建表是先判斷表是否存在createtableifnotexistsstudents();5、從已經(jīng)有的表中復(fù)制表的結(jié)構(gòu)createtabletab

32、le2select*fromtable1where11;6、復(fù)制表createtabletable2select*fromtable1;7、對表重新命名altertabletable1renameastable2;8、修改列的類型altertabletable1modifyidintunsigned;/修改列id的類型為intunsignedaltertabletable1changeidsidintunsigned;/修改列id的名字為sid,而且把屬性修改為intunsigned9、創(chuàng)建索引altertabletable1addindexind_id(id);createindexind_

33、idontable1(id);createuniqueindexind_idontable1(id);/建立唯一性索引10、刪除索引dropindexidx_idontable1;altertabletable1dropindexind_id;11、聯(lián)合字符或者多個列(將列id與:和列name和=連接)selectconcat(id,:,name,=)fromstudents;12、limit(選出10到20條)select*fromstudentsorderbyidlimit9,10;13、mysql不支持的功能事務(wù),視圖,外鍵和引用完整性,存儲過程和觸發(fā)器14、mysql會使用索引的操作符

34、號,=,between,in,不帶%或者_(dá)開頭的like15、使用索引的缺點1)減慢增刪改數(shù)據(jù)的速度;2)占用磁盤空間;3)增加查詢優(yōu)化器的負(fù)擔(dān);當(dāng)查詢優(yōu)化器生成執(zhí)行計劃時,會考慮索引,太多的索引會給查詢優(yōu)化器增加工作量,導(dǎo)致無法選擇最優(yōu)的查詢方案;16、分析索引效率方法在一般的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)extramysql的建議;17、使用較短的定長列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ù)的空間也大;1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論