MySql學(xué)習(xí)筆記_第1頁(yè)
MySql學(xué)習(xí)筆記_第2頁(yè)
MySql學(xué)習(xí)筆記_第3頁(yè)
MySql學(xué)習(xí)筆記_第4頁(yè)
MySql學(xué)習(xí)筆記_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、MySql學(xué)習(xí)筆記MySql概述:MySql是一個(gè)種關(guān)聯(lián)數(shù)據(jù)庫(kù)管理系統(tǒng),所謂關(guān)聯(lián)數(shù)據(jù)庫(kù)就是將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個(gè)大的倉(cāng)庫(kù)中。這樣就增加了速度與提高了靈活性。并且MySql軟件是一個(gè)開放源碼軟件。 注意,MySql所支持的TimeStamp的最大范圍的問題,在32位機(jī)器上,支持的取值范圍是年份最好不要超過2030年,然后如果在64位的機(jī)器上,年份可以達(dá)到2106年,而對(duì)于date、與datetime這兩種類型,則沒有關(guān)系,都可以表示到9999-12-31,所以這一點(diǎn)得注意下;還有,在安裝MySql的時(shí)候,我們一般都選擇Typical(典型安裝)就可以了,當(dāng)然,如果還有其

2、它用途的話,那最好選擇Complete(完全安裝);在安裝過程中,一般的還會(huì)讓你進(jìn)行服務(wù)器類型的選擇,分別有三種服務(wù)器類型的選擇,(Developer(開發(fā)機(jī))、Server Machine(服務(wù)器)、Dedicated MySql Server Machine(專用MYSQL服務(wù)器),選擇哪種類型的服務(wù)器,只會(huì)對(duì)配置向?qū)?duì)內(nèi)存等有影響,不然其它方面是沒有什么影響的;所以,我們?nèi)绻情_發(fā)者,選擇開發(fā)機(jī)就可以啦;然后接下來(lái),還會(huì)有數(shù)據(jù)庫(kù)使用情況對(duì)話框的選擇,我們只要按照默認(rèn)就可以啦; 連接與斷開服務(wù)器: 連接:在windows命令提示符下輸入類似如下命令集:mysql h host u user

3、 p 例如,我在用的時(shí)候輸入的是:mysql h localhost u root p 然后會(huì)提示要你輸入用戶密碼,這個(gè)時(shí)候,如果你有密碼的話,就輸入密碼敲回車,如果沒有密碼,直接敲回車,就可以進(jìn)入到數(shù)據(jù)庫(kù)客戶端;連接遠(yuǎn)程主機(jī)上的mysql,可以用下面的命令:mysql h 159.0.45.1 u root p 123 斷開服務(wù)器:在進(jìn)入客戶端后,你可以直接輸入quit然后回車就可以了; 下面就數(shù)據(jù)庫(kù)相關(guān)命令進(jìn)行相關(guān)說明 你可以輸入以下命令對(duì)數(shù)據(jù)庫(kù)表格或者數(shù)據(jù)庫(kù)進(jìn)行相關(guān)操作,在這里就省略了,然后直接進(jìn)行文字說明了; Select version(),current_date;/從服務(wù)器得到當(dāng)

4、前mysql的版本號(hào)與當(dāng)前日期 Select user(); /得到當(dāng)前數(shù)據(jù)庫(kù)的所有用戶 Use databasename; 進(jìn)入到指定的數(shù)據(jù)庫(kù)當(dāng)中,然后就可以操作這個(gè)數(shù)據(jù)庫(kù)當(dāng)中的表格了 Show databases; /查詢目前數(shù)據(jù)庫(kù)中所有的數(shù)據(jù)庫(kù),并且顯示出來(lái); Create batabase databasename;創(chuàng)建數(shù)據(jù)庫(kù),例如:create database manager; Show tables; /查看當(dāng)前數(shù)據(jù)庫(kù)中的所有表格; Create table tablename(colums);創(chuàng)建表,并且給表指定相關(guān)列,例如:create table pet(name varc

5、har(20),owner varchar(20),species varchar(20),sex char(1),birth date,death date); Describe tablename;將表當(dāng)中的所有信息詳細(xì)顯示出來(lái),例如:describe pet; 可以用命令一次插入多條記錄,例如: Insert into pet values(Puffball?,?Diane?,?hamster?,?f?,?1993-12-3?,null),( Puffball?,?Diane?,?hamster?,?f?,?1993-12-3?,now(); Select * from pet; 從pe

6、t表當(dāng)中查詢出所有的記錄,顯示出來(lái); Delete from pet where id=1;刪除ID為1的那一條記錄; Update pet set birth=?2001-1-3? where name=?Bowser?;更新name為Bowser的記錄當(dāng)中的birth字段的值; Select distinct owner from pet;從pet表中選擇出owner字段的值唯一的行,如果有多行記錄這個(gè)字段的值相同,則只顯示最后一次出現(xiàn)這一值的一行記錄; 有關(guān)日期計(jì)算: Select name,birth,curdate(),(year(curdate()-year(birth) as a

7、ge from pet; 此處,year()函數(shù)用于提取對(duì)應(yīng)字段的年份,當(dāng)然類似的還有month(),day()等; 在mysql當(dāng)中,sql語(yǔ)句可以使用like查詢,可以用”_”配任何單個(gè)字符,用”%”配任意數(shù)目字符,并且SQL模式默認(rèn)是忽略大小寫,例如:select * from pet where name like %fy?; 當(dāng)然也可以用正則表達(dá)式模式進(jìn)行配。 同時(shí)在sql當(dāng)中,也要注意分組函數(shù)、排序函數(shù)、統(tǒng)計(jì)函數(shù)等相關(guān)用法,在這里只列舉一二; Select species,count(*) from pet group by speceis; Select * from pet o

8、rder by birth desc; 查詢最大值的相關(guān)操作: Select max(age) from pet; 取前多少項(xiàng)記錄,這個(gè)主要用于分頁(yè)查詢操作當(dāng)中, Select * from pet order by birth desc limit 3;取前三條記錄, Select * from pet order by birth desc limit 0,3;這個(gè)可以用于分頁(yè)查詢,limit后面的第一個(gè)參數(shù),是起始位置,第二個(gè)參數(shù)是取記錄條數(shù); 有關(guān)創(chuàng)建表格自增長(zhǎng)字段的寫法: Create table person(id int(4) not null auto_increment,na

9、me char(20) not null,primary key (id); 修改表操作: 向表中增加字段:注意,在這個(gè)地方,如果是增加多個(gè)字段的時(shí)候,就要用括號(hào)括起來(lái),不然會(huì)有問題,如果是單個(gè)字段的話,不用括號(hào)也沒事; Alter table test add(address varchar(50) not null default xm?,email varchar(20) not null); 將表中某個(gè)字段的名字修改或者修改其對(duì)應(yīng)的相關(guān)屬性的時(shí)候,要用change對(duì)其進(jìn)行操作; Alter table test change email email varchar(20) not nu

10、ll default zz?;/不修改字段名 Alter table test change email Email varchar(30) not null;/修改字段名稱 刪除表中字段: Alter table test drop email;/刪除單個(gè)字段 Alter table test drop address,drop email;/刪除多列 可以用Drop來(lái)取消主鍵與外鍵等,例如: Alter table test drop foreign key fk_symbol; 刪除索引: Drop index index_name on table_name; 例如:drop inde

11、x t on test; 向表中插入記錄:注意,當(dāng)插入表中的記錄并不是所有的字段的時(shí)候,應(yīng)該要在前面列出字段名稱才行,不然會(huì)報(bào)錯(cuò); Insert into test(name) values(ltx?); Insert into test values(1,?ltx?); 也可以向表中同時(shí)插入多列值,如: Insert into test(name) values(ltx?),(hhy?),(xf?); 刪除表中記錄: Delete from test;/刪除表中所有記錄; Delete from test where id=1;/刪除表中特定條件下的記錄; 當(dāng)要從一個(gè)表或者多個(gè)表當(dāng)中查詢出一

12、些字段然后把這些字段又要插入到另一個(gè)表當(dāng)中的時(shí)候,可以用insert .select語(yǔ)法; Insert into testt(name) (select name from test where id=4); 從文件中讀取行插入數(shù)據(jù)表中,可以用Load data infile語(yǔ)句; Load data infile test.txt? into table test; 可以用Describe語(yǔ)法進(jìn)行獲取有關(guān)列的信息; Describe test;/可以查看test表的所有信息,包括對(duì)應(yīng)列字段的數(shù)據(jù)類型等; MySql事務(wù)處理相關(guān)語(yǔ)法; 開始一項(xiàng)新的事務(wù):start transaction或者

13、begin transaction 提交事務(wù):commit 事務(wù)回滾:rollback set autocommit true|false 語(yǔ)句可以禁用或啟用默認(rèn)的autocommit模式,只可用于當(dāng)前連接; 例子: Start transaction; Update person set name=?LJB? where id=1; Commit | rollback; 數(shù)據(jù)庫(kù)管理語(yǔ)句 修改用戶密碼:以root用戶為例,則可以寫成下面的;mysql u root p 舊密碼 password 新密碼 Mysql u root password 123;/將root用戶的密碼修改成123,由于

14、root用戶開始的時(shí)候,是沒有密碼的,所以-p舊密碼就省略了; 例如修改一個(gè)有密碼的用戶密碼:mysql u ltx p 123 password 456; 增加一個(gè)用戶test1,密碼為abc,讓他可以在任何時(shí)候主機(jī)上登陸,并對(duì)所有數(shù)據(jù)庫(kù)有查詢、插入、修改、刪除的權(quán)限。 Grant select,insert,update,delete on *.* to test1”%” identified by abc?; 增加一個(gè)test2用戶,密碼為abc,讓他只可以在localhost上登陸,并且可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行查詢、插入、修改、刪除操作; Grant select,insert,update,

15、delete on mydb.* to test2localhost identified by abc?; 如果不想讓用戶test2有密碼,可以再輸入以下命令消掉密碼: Grant select,insert,update,delete on mydb.* to test2localhost identified by “”; 備份數(shù)據(jù)庫(kù)常用命令:mysqldump h host u username p dbname>保存路徑與文件名 然后回車后,會(huì)讓你輸入用戶密碼,輸入密碼后,再回車就OK啦; Mysqldump hlocalhost uroot p test >E:dbte

16、st.sql 這一命令具體解釋下: 這個(gè)命令就是備份test數(shù)據(jù)庫(kù),并且將備份的內(nèi)容存儲(chǔ)為test.sql文件,并且保存在E:db下面; 命令當(dāng)中-p 前面的test是數(shù)據(jù)庫(kù)名,然后在數(shù)據(jù)庫(kù)名后面要跟上一個(gè)”>”,然后接下來(lái),就是寫要保存的位置與保存文件的文件名; 將備份好的數(shù)據(jù)庫(kù)導(dǎo)入到數(shù)據(jù)庫(kù)當(dāng)中去:也就是運(yùn)行.sql文件將數(shù)據(jù)庫(kù)導(dǎo)入數(shù)據(jù)庫(kù)當(dāng)中去-> 首先你得創(chuàng)建數(shù)據(jù)庫(kù),然后運(yùn)行如下命令:mysql hlocalhost uroot p linux<E:dbtest.sql然后回車,再輸入密碼就可以啦; 解釋下上面的命令:linux是就要導(dǎo)入的數(shù)據(jù)庫(kù)名字,然后后面要緊跟著“&

17、lt;”符號(hào),然后后面就是要導(dǎo)入的數(shù)據(jù)庫(kù)文件; 將數(shù)據(jù)庫(kù)導(dǎo)出保存成XML文件、從XML文件導(dǎo)入數(shù)據(jù)到數(shù)據(jù)庫(kù): 導(dǎo)出表中數(shù)據(jù):mysql X h hostName u userName p Pwd e “use DatabaseName;sql;” >xml文件名 或者用另外一種方式也行:mysqldump xml h hostName u userName p pwd dbName tableName /這一種只用于顯示在當(dāng)前的mysql客戶端,不保存到文件當(dāng)中; 相關(guān)說明:-X代表的是文件的格式是XML,然后-e一寫不能掉,還有就是要用雙引號(hào)將要操作的語(yǔ)句括起來(lái);單引號(hào)不行; 例如:m

18、ysql X hlocalhost uroot p e “use test;select * from pet;”>E:dbout.xml 從XML文件導(dǎo)入數(shù)據(jù)到數(shù)據(jù)庫(kù): Insert into tableName values(1,load_file(filepath?); 例如:insert into pet values(1,load_file(“E:dbout.xml”); 查看數(shù)據(jù)庫(kù)狀態(tài)與查詢進(jìn)程: Show status;/查看狀態(tài) Show processlist;/查看進(jìn)程 更改用戶名,用以下命令: Update set user=”新名字” where user=”舊用

19、戶名”; 給數(shù)據(jù)庫(kù)用戶設(shè)置管理員權(quán)限: Mysqladmin h host u username p pwd; 以root用戶為例; Mysqladmin h localhost u root p 123; 存儲(chǔ)過程與函數(shù) 存儲(chǔ)程序和函數(shù)分別是用create procedure和create function語(yǔ)句,一個(gè)程序要么是一個(gè)程序要么是一個(gè)函數(shù),使用call語(yǔ)句來(lái)調(diào)用程序,并且程序只能用輸出變量傳回值; 要想在MySql5.1中創(chuàng)建子程序,必須具有create routine權(quán)限,并且alter routine和execute權(quán)限被自動(dòng)授予它的創(chuàng)建者; 創(chuàng)建存儲(chǔ)過程: 首先聲明分隔符,所

20、謂分隔符是指你通知mysql客戶端你已經(jīng)輸入一個(gè)sql語(yǔ)句的字符或字符串符號(hào),在這里我們就以“/”為分隔符; Delimiter 分隔符 如:delimiter / 再創(chuàng)建存儲(chǔ)過程: Create procedure 存儲(chǔ)過程名 ( ) 聲明存儲(chǔ)過程開始: begin 然后開始寫存儲(chǔ)過程體: Select * from pet; 結(jié)束存儲(chǔ)過程: End;/ 剛剛的例子全部寫出來(lái),完整的代碼就是: Delimiter / Create procedure spt () /注意,這個(gè)地方,存儲(chǔ)過程名與括號(hào)之間要有個(gè)空格 Begin Select * from pet; End;/到這里,整個(gè)存儲(chǔ)過

21、程就算寫完啦 執(zhí)行存儲(chǔ)過程: Call 存儲(chǔ)過程名 ();/ 如,我們執(zhí)行剛剛創(chuàng)建的存儲(chǔ)過程,就是: Call spt ();/ 需要說明的是存儲(chǔ)過程名后面一定要加個(gè)空格,而后面那個(gè)括號(hào),則是用于傳送參數(shù)的參數(shù)列表;另外,我們創(chuàng)建存儲(chǔ)過程完成后,也只是創(chuàng)建了,但是只有調(diào)用call 存儲(chǔ)過程名 ();/后才算執(zhí)行完畢,才能看到存儲(chǔ)過程的結(jié)果; 有很多朋友雖然安裝好了mysql但卻不知如何使用它。在這篇文章中我們就從連接MYSQL、修改密碼、增加用戶等方面來(lái)學(xué)習(xí)一些MYSQL的常用命令。 一、連接MYSQL。 格式: mysql -h主機(jī)地址 -u用戶名 ,p用戶密碼 1、例1:連接到本機(jī)上的MY

22、SQL。 首先在打開DOS窗口,然后進(jìn)入目錄 mysqlbin,再鍵入命令mysql -uroot -p,回車后提示你輸密碼,如果剛安裝好MYSQL,超級(jí)用戶root是沒有密碼的,故直接回車即可進(jìn)入到MYSQL中了,MYSQL的提示符是:mysql> 2、例2:連接到遠(yuǎn)程主機(jī)上的MYSQL。假設(shè)遠(yuǎn)程主機(jī)的IP為:110.110.110.110,用戶名為root,密碼為abcd123。則鍵入以下命令: mysql -h110.110.110.110 -uroot -pabcd123 (注:u與root可以不用加空格,其它也一樣) 3、退出MYSQL命令: exit (回車) 二、修改密碼。

23、 格式:mysqladmin -u用戶名 -p舊密碼 password 新密碼 1、例1:給root加個(gè)密碼ab12。首先在DOS下進(jìn)入目錄mysqlbin,然后鍵入以下命令 mysqladmin -uroot -password ab12 注:因?yàn)殚_始時(shí)root沒有密碼,所以-p舊密碼一項(xiàng)就可以省略了。 2、例2:再將root的密碼改為djg345。 mysqladmin -uroot -pab12 password djg345 三、增加新用戶。(注意:和上面不同,下面的因?yàn)槭荕YSQL環(huán)境中的命令,所以后面都帶一個(gè)分號(hào)作為命令結(jié)束符) 格式:grant select on 數(shù)據(jù)庫(kù).* t

24、o 用戶名登錄主機(jī) identified by "密碼" 例1、增加一個(gè)用戶test1密碼為abc,讓他可以在任何主機(jī)上登錄,并對(duì)所有數(shù)據(jù)庫(kù)有查詢、插入、修改、刪除的權(quán)限。首先用以root用戶連入MYSQL,然后鍵入以下命令: grant select,insert,update,delete on *.* to test1"%" Identified by "abc" 但例1增加的用戶是十分危險(xiǎn)的,你想如某個(gè)人知道test1的密碼,那么他就可以在internet上的任何一臺(tái)電腦上登錄你的mysql數(shù)據(jù)庫(kù)并對(duì)你的數(shù)據(jù)可以為所欲為了,解

25、決辦法見例2。 例2、增加一個(gè)用戶test2密碼為abc,讓他只可以在localhost上登錄,并可以對(duì)數(shù)據(jù)庫(kù)mydb進(jìn)行查詢、插入、修改、刪除的操作(localhost指本地主機(jī),即MYSQL數(shù)據(jù)庫(kù)所在的那臺(tái)主機(jī)),這樣用戶即使用知道test2的密碼,他也無(wú)法從internet上直接訪問數(shù)據(jù)庫(kù),只能通過MYSQL主機(jī)上的web頁(yè)來(lái)訪問了。 grant select,insert,update,delete on mydb.* to test2localhost identified by "abc" 如果你不想test2有密碼,可以再打一個(gè)命令將密碼消掉。 grant s

26、elect,insert,update,delete on mydb.* to test2localhost identified by "" (下篇) 在上篇我們講了登錄、增加用戶、密碼更改等問題。下篇我們來(lái)看看MYSQL中有關(guān)數(shù)據(jù)庫(kù)方面的操作。注意:你必須首先登錄到MYSQL中,以下操作都是在MYSQL的提示符下進(jìn)行的,而且每個(gè)命令以分號(hào)結(jié)束。 一、操作技巧 1、如果你打命令時(shí),回車后發(fā)現(xiàn)忘記加分號(hào),你無(wú)須重打一遍命令,只要打個(gè)分號(hào)回車就可以了。也就是說你可以把一個(gè)完整的命令分成幾行來(lái)打,完后用分號(hào)作結(jié)束標(biāo)志就OK。 2、你可以使用光標(biāo)上下鍵調(diào)出以前的命令。但以前我用過

27、的一個(gè)MYSQL舊版本不支持。我現(xiàn)在用的是mysql-3.23.27-beta-win。 二、顯示命令 1、顯示數(shù)據(jù)庫(kù)列表。 show databases; 剛開始時(shí)才兩個(gè)數(shù)據(jù)庫(kù):mysql和test。mysql庫(kù)很重要它里面有MYSQL的系統(tǒng)信息,我們改密碼和新增用戶,實(shí)際上就是用這個(gè)庫(kù)進(jìn)行操作。 2、顯示庫(kù)中的數(shù)據(jù)表: use mysql; ,打開庫(kù),學(xué)過FOXBASE的一定不會(huì)陌生吧 show tables; 3、顯示數(shù)據(jù)表的結(jié)構(gòu): describe 表名; 4、建庫(kù): create database 庫(kù)名; 5、建表: use 庫(kù)名; create table 表名 (字段設(shè)定列表);

28、 6、刪庫(kù)和刪表: drop database 庫(kù)名; drop table 表名; 7、將表中記錄清空: delete from 表名; 8、顯示表中的記錄: select * from 表名; 三、一個(gè)建庫(kù)和建表以及插入數(shù)據(jù)的實(shí)例 drop database if exists school; /如果存在SCHOOL則刪除 create database school; /建立庫(kù)SCHOOL use school; /打開庫(kù)SCHOOL create table teacher /建立表TEACHER ( id int(3) auto_increment not null primary key, name char(10) not null, address varchar(50) default '深圳', year date ); /建表結(jié)束 /以下為插入字段 insert into teacher values('','glchengang','深圳一中','1976-10-10'); insert into teacher values(''

溫馨提示

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

評(píng)論

0/150

提交評(píng)論