學(xué)習(xí)MySQL的一些體會
1.Window2000下的安裝. A.安裝目錄最好(應(yīng)該是一定要)是C:\, 以前有幾次沒看清楚說明,安裝在D盤,結(jié)果啟動(dòng)不了。 B.安裝成為啟動(dòng)服務(wù):mysqld-nt --install 卸載服務(wù):mysqld-nt --uninstall 移除服務(wù):mysqld-nt --remove 啟動(dòng)服務(wù):net start mysql 停止服務(wù):net stop mysql
2.連接以及用戶的管理 A.連接MySql數(shù)據(jù)庫: mysql -h host -u user -p 比如用root登陸: mysql -h localhost -uroot -p B.斷開連接:quit或exit C.新建用戶(用戶名為tom,密碼為123): 用root連接到數(shù)據(jù)庫,然后用以下的命令: grant all privileges on *.* to 'tom'@'localhost' identified by '123' with grant option; 或grant all privileges on *.* to 'tom'@'%' identified by '123' with grant option;
或insert into user
values('localhost','tom',password('123'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql 里創(chuàng)建自動(dòng)編號字段: CREATE TABLE `table1` ( `id` int(6) unsigned NOT NULL auto_increment, PRIMARY KEY (`id`)) (int的一種,才可以,然auto_increment)
在一個(gè)MYSQL的表里面,如果原來已經(jīng)有一萬條記錄了,清空后,怎么能讓它從1開始,而不是從10001開始! TRUNCATE your_table; alter table your_table auto_increment = 1;
用文本方式將數(shù)據(jù)裝入一個(gè)數(shù)據(jù)庫表 如果一條一條地輸入,很麻煩。我們可以用文本文件的方式將所有記錄加入你的數(shù)據(jù)庫表中。 創(chuàng)建一個(gè)文本文件“mysql.txt”,每行包含一個(gè)記錄,用定位符(tab)把值分開,并且以在 CREATE TABLE語句中列出的列次序給出,例如:
abccs f 1977-07-07 china mary f 1978-12-12 usa tom m 1970-09-02 usa
使用下面命令將文本文件“mytable.txt”裝載到mytable表中: mysql> LOAD DATA LOCAL INFILE "mytable.txt" INTO TABLE pet;
執(zhí)行sql腳本: myql>source d:\aa.sql
mysql數(shù)據(jù)導(dǎo)出和導(dǎo)入: 參考文章:MySQL數(shù)據(jù)導(dǎo)入導(dǎo)出方法與工具介紹 http://blog.csdn.net/davidullua/archive/2004/04/26/21980.aspx http://blog.csdn.net/davidullua/archive/2004/04/26/21981.aspx http://blog.csdn.net/davidullua/archive/2004/04/26/21982.aspx 主要工具:mysqldump.exe、mysqlimport.exe和mysql.exe.三者均在mysql/bin目錄下。 mysqlcc.exe 另外安裝 2、用mysqldump工具備份數(shù)據(jù)時(shí),備份文件中的中文無法顯示: mysqldump -u root -p --all-databases > backup.sql 打開backup.sql后,發(fā)現(xiàn)數(shù)據(jù)部分中的中文全部 是????號。 此時(shí)加一個(gè)參數(shù):--default-char-set=gbk,重新導(dǎo)出即可。 (一)導(dǎo)出 1、結(jié)構(gòu)的導(dǎo)出 (1) 在mysqlcc中,選擇某一表或者tables,按shift或者鼠標(biāo)郵編,在彈出的快捷菜單中,選擇"tool/show create".選擇你要導(dǎo)出的表(可以多選,ctrl+a全選) 點(diǎn)擊窗體下方的 execute.即可生成一個(gè)所選表結(jié)構(gòu)的sql文件。 打開sql查詢窗口,粘入上面生成的sql腳本。執(zhí)行,即可在新位置生成所有的表結(jié)構(gòu)。
(2)mysqldump.exe 具體參數(shù)很多,可查看--help 主要有 -h hostname -u username -p 密碼 --add-drop-table 這個(gè)選項(xiàng)將會在每一個(gè)表的前面加上DROP TABLE IF EXISTS語句,這樣可以保證導(dǎo)回MySQL數(shù)據(jù)庫的時(shí)候不會出錯(cuò),因?yàn)槊看螌?dǎo)回的時(shí)候,都會首先檢查表是否存在,存在就刪除 --add-locks 這個(gè)選項(xiàng)會在INSERT語句中捆上一個(gè)LOCK TABLE和UNLOCK TABLE語句。這就防止在這些記錄被再次導(dǎo)入數(shù)據(jù)庫時(shí)其他用戶對表進(jìn)行的操作
-c or - complete_insert 這個(gè)選項(xiàng)使得mysqldump命令給每一個(gè)產(chǎn)生INSERT語句加上(field)的名字。當(dāng)把數(shù)據(jù)導(dǎo)出導(dǎo)另外一個(gè)數(shù)據(jù)庫時(shí)這個(gè)選項(xiàng)很有用。
-f or -force 使用這個(gè)選項(xiàng),即使有錯(cuò)誤發(fā)生,仍然繼續(xù)導(dǎo)出
-l or -lock-tables 使用這個(gè)選項(xiàng),導(dǎo)出表的時(shí)候服務(wù)器將會給表加鎖。 -t or -no-create- info 這個(gè)選項(xiàng)使的mysqldump命令不創(chuàng)建CREATE TABLE語句,這個(gè)選項(xiàng)在您只需要數(shù)據(jù)而不需要DDL(數(shù)據(jù)庫定義語句)時(shí)很方便。
-d or -no-data 這個(gè)選項(xiàng)使的mysqldump命令不創(chuàng)建INSERT語句。 在您只需要DDL語句時(shí),可以使用這個(gè)選項(xiàng)。
-T path or -tab = path
這個(gè)選項(xiàng)將會創(chuàng)建兩個(gè)文件,一個(gè)文件包含DDL語句或者表創(chuàng)建語句,另一個(gè)文件包含數(shù)據(jù)。DDL文件被命名為table_name.sql,數(shù)據(jù)文件被命
名為table_name.txt.路徑名是存放這兩個(gè)文件的目錄。目錄必須已經(jīng)存在,并且命令的使用者有對文件的特權(quán)。
-w "WHERE Clause" or -where = "Where clause " 可以使用這一選項(xiàng)來過篩選將要放到導(dǎo)出文件的數(shù)據(jù)。 (3) mysql.exe
利用SELECT INTO OUTFILE 語法可以將數(shù)據(jù)導(dǎo)出到一個(gè)外部文件。具體語法略。 (二)導(dǎo)入 1、結(jié)構(gòu) (1)mysqlCC 打開sql查詢窗口,粘入上面生成的sql腳本。執(zhí)行,即可在新位置生成所有的表結(jié)構(gòu)。 (2)mysqlimport 可用于載入數(shù)據(jù) (3)mysql.exe bin/mysql –p < /home/mark/New_Data.sql 可以運(yùn)行/home/mark/New_Data.sql中指定的sql腳本 (三)例子 1、欲從//gezhi211上得到j(luò)avatest數(shù)據(jù)庫的數(shù)據(jù)表結(jié)構(gòu)導(dǎo)出到本地。不需要數(shù)據(jù) (1) 運(yùn)行mysqlcc,連接到//gezhi211,選擇javatest數(shù)據(jù)的某一表,選擇"tool/show create",選擇所有的表, 點(diǎn)"execute",得到一系列的sql create語句。復(fù)制,保存為e:\work\table.txt. (2) 在語句最前面加上 以下幾句 drop database if exists javatest; create database javatest; use javatest; 用以創(chuàng)建數(shù)據(jù)庫javatest (3) 連接到本地,在mysqlcc中打開一個(gè)sql查詢窗口,粘進(jìn)上面的sql語句,執(zhí)行。則數(shù)據(jù)表結(jié)構(gòu)成功導(dǎo)到本地。
或者打開一個(gè)cmd窗口,鍵入mysql <e:\work\table.txt,回車。 2、欲從//gezhi211上得到j(luò)avatest數(shù)據(jù)庫的數(shù)據(jù)表結(jié)構(gòu)導(dǎo)出到本地。包括數(shù)據(jù) 方法: (1)導(dǎo)出數(shù)據(jù) mysqldump -h gezhi211 -u root --add-drop-table javatest >e:\work\backup\gezhi211javatest.txt (2) 在語句最前面加上 以下幾句 drop database if exists javatest; create database javatest; use javatest; 用以創(chuàng)建數(shù)據(jù)庫javatest (3) 導(dǎo)入數(shù)據(jù) mysql -p <e:\work\backup\gezhi211javatest.sql.txt 附:利用mysqldump導(dǎo)出數(shù)據(jù)的時(shí)候,有時(shí)定義的索引值不能為關(guān)鍵字,否則會報(bào)錯(cuò)。解決方法,業(yè)務(wù)應(yīng)該利用--fields-enclosed-by參數(shù)將字段名包含起來。有待進(jìn)一步嘗試。
mysql更改到UTF8字符集,通過命名行參數(shù)啟動(dòng): mysqld --default-character-set=utf8
|