如果你剛開始接觸MySQL數(shù)據(jù)庫,或者你需要使用MySQL數(shù)據(jù)庫來保存一些基本的數(shù)據(jù),,比如說,,用戶基本信息、學生基本信息表等,,但卻不知道何從下手,,那么這篇文章就很適合你了。 一,、MySQL數(shù)據(jù)庫的安裝 windows下的安裝可以看這里:http://bbzoh.cn/showweb/0/0/821712827.aspx 其它環(huán)境的自行百度,,網(wǎng)上都有。 二、開始使用MySQL數(shù)據(jù)庫 1.在命令行中進入MySQL數(shù)據(jù)庫所以根據(jù)上面的操作,,我們來總結(jié)一下進入MySQL數(shù)據(jù)庫的命令的基本語法: mysql -h 主機名 -u 用戶名 -p 基本的解釋如下: ◆ -h:后面接的是主機名,,表示你要連接到哪臺主機的MySQL數(shù)據(jù)庫。 ◆ -u:后面接的是用戶名,,MySQL默認的就是root,。 ◆ -p:指定需要使用密碼登陸MySQL數(shù)據(jù)庫,如果密碼為空,,該參數(shù)可以省略,。 詳細的解釋如下: 前面我們在-h后面填寫了localhost,表示的是要登陸到當前主機的MySQL數(shù)據(jù)庫,,在這種情況下,,-h參數(shù)以及l(fā)ocalhost完全可以省略,也就是說,,使用下面的命令也是可以登陸到本機的MySQL數(shù)據(jù)庫的: mysql -u root -p 當然,,如果你真的要連接到遠程主機的MySQL數(shù)據(jù)庫的話,只需要在加上-h參數(shù),,再加上遠程主機的主機名或者IP地址就可以了,,類似如下: mysql -h 202.116.96.96 -u root -p 對于-p參數(shù),其實我們也可以在p后面直接加上MySQL數(shù)據(jù)庫的密碼,,也就是說,,上面的操作也等價于下面: mysql -u root -p123456 這里,我的密碼是123456,,這樣之后,,按回車鍵,就可以直接登陸到MySQL數(shù)據(jù)庫中去了,。 2.查看已有的數(shù)據(jù)庫成功登陸到MySQL數(shù)據(jù)庫中之后,,我們首先就來看一下,MySQL數(shù)據(jù)庫中有多少個數(shù)據(jù)庫(你可以理解為,,MySQL數(shù)據(jù)庫是一個大倉庫,,然后這個大倉庫下面有多個小的倉庫,我們就在這些小倉庫中存放我們的數(shù)據(jù)),,我們進行如下的操作:
這里可以看到,,在我電腦的MySQL數(shù)據(jù)庫上存了5個數(shù)據(jù)庫,有些是默認的,,有些是我自己創(chuàng)建的,,當然因為我之前有修改過,所以你看到的可能會跟我的不一樣,。 通過上面的操作,,我們來總結(jié)一下查看MySQL數(shù)據(jù)庫中存放了哪幾個數(shù)據(jù)庫的命令: show databases; 是的,,就是這么簡單,不過需要注意的是,,databases這個單詞后面是有個s的,,然后最后面是有個分號";"的,這兩點都需要注意,,極容易輸錯,。 3.創(chuàng)建自己的數(shù)據(jù)庫接下來我們就要創(chuàng)建一個屬于我們自己的數(shù)據(jù)庫來保存數(shù)據(jù)了,看下面的操作: mysql> create database students_info; Query OK, 1 row affected (0.01 sec) 這里我們創(chuàng)建了一個名為students_info的數(shù)據(jù)庫,,當看到有Query OK, 1 row affected (0.01 sec)時,,就說明我們的數(shù)據(jù)庫創(chuàng)建成功了!為了確認一下,,我們使用上面第2點的命令來查看一下現(xiàn)在MySQL數(shù)據(jù)庫中已經(jīng)存在的數(shù)據(jù)庫:
可以看到,,我們剛剛創(chuàng)建的數(shù)據(jù)庫已經(jīng)成功保存在MySQL數(shù)據(jù)庫中了! 我們還是來總結(jié)一下創(chuàng)建一個數(shù)據(jù)庫的命令語法: create database 數(shù)據(jù)庫名; 也是比較簡單的,,但需要注意的是,,database后面就沒有"s"了,但記得數(shù)據(jù)庫名后面也一定要加上分號";",。 4.選擇要操作的數(shù)據(jù)庫在上面的6個數(shù)據(jù)庫中,,并不是每一個都是我們需要進行操作的,我們只需要對我們剛剛創(chuàng)建的數(shù)據(jù)庫students_info進行操作就可以了,,但是,,如果要想操作這個數(shù)據(jù)庫,首先你就要告訴MySQL數(shù)據(jù)庫系統(tǒng),,接下來你要使用students_info這個數(shù)據(jù)庫來進行相關(guān)的操作,,如何告訴系統(tǒng)呢?看下面的操作:
當成功選擇要操作的數(shù)據(jù)庫后,,就會出現(xiàn)Database changed的字樣,。 要選擇一個數(shù)據(jù)庫進行操作時,命令語法如下: use 數(shù)據(jù)庫名[;] 這時你應(yīng)該注意到,,分號";"是放在中括號[]里的,,也就是說,,加不加分號都是可以的,,這意味著,你使用use students_info來進行數(shù)據(jù)庫的選擇也是可以的,,但為了不容易混淆,,建議還是加上去好些吧。 5.在數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)庫表接下來我們就要創(chuàng)建一個數(shù)據(jù)庫表了,,那么什么是數(shù)據(jù)庫表呢,?就是類似前面我們說的學生信息表,,為了方便大家查看,我還是直接把它放下來吧: 是的,,我們就是想要創(chuàng)建一張這樣的表,,如何創(chuàng)建?看下面的操作: mysql> create table network3 -> ( -> id char(10) not null primary key, -> name char(16) not null, -> sex char(6) not null, -> age int not null, -> address char(36) not null -> ); Query OK, 0 rows affected (0.05 sec) 哇,!看上去似乎有些復(fù)雜,,好像很多都不知道是什么意思!不用擔心,,下面會作一一的解釋,,當然,這也是創(chuàng)建數(shù)據(jù)庫表的基本語法了: create table 數(shù)據(jù)庫表名(列聲明); 把我上面的操作再跟基本語法對比,,其實發(fā)現(xiàn)創(chuàng)建一張表并不難,,復(fù)雜的可能只是列聲明里面的內(nèi)容了,下面再對上面的每一句列聲明作一個詳細的說明:
其實上面這個表格中的解釋已經(jīng)是相當?shù)脑敿毩耍ㄈ绻X得還是比較抽象的話,,就直接對照著上面的那個學生信息表來看就是了,只是這里我們還沒有為這個表添加任何數(shù)據(jù)),,但是我還是要再說明幾個地方,。 (1)關(guān)于列名稱需要注意的是,每一列的名稱必須是不相同的才行,。 (2)關(guān)于數(shù)據(jù)類型跟編程語言一樣,,MySQL數(shù)據(jù)庫也有它自己的數(shù)據(jù)類型,比如上面出現(xiàn)的char,、int等,,當然MySQL數(shù)據(jù)庫的數(shù)據(jù)類型還有很多,這里不可能一一作介紹,,有需要作更多了解的,,可以百度一下。 (3)關(guān)于not null這個參數(shù)是非必須的,,加上這個參數(shù),,表明這一列的數(shù)據(jù)必須不能為空,上面我們創(chuàng)建的這個表中,,可以說每一列都是一個學生最基本的???息,,所以應(yīng)該要不為空才對,不然以后可能就會出現(xiàn)學生信息不全的情況,,這可不好吧,,所以這里我們還是加上not null參數(shù)。當然,,如果以后我們需要添加新的一列時,,比如添加一列tel列的,這時你可能就沒有必要指定not null參數(shù)了,,因為不一定每個學生都有手機號碼呀,! (4)關(guān)于primary key 考慮一下,在學生信息表中,,假如存放了很多學生的信息,,像上面這個表中,可能會存在這樣的兩個學生,,他們的name,、sex、age,、address都相同的,,這很正常吧!所以呢,,你就必須得有一個數(shù)據(jù)項是不同的,,我們上面這個表就指定id數(shù)據(jù)項是必須不同相同的,也就是所謂的主鍵了,。 這樣下來之后,,你就可以根據(jù)自己的需求來創(chuàng)建一個自己的數(shù)據(jù)庫表了,不過還是要注意語法的問題,,哪里加逗號",",,哪里加分號";",這些都必須不能有錯,。 我們上面就在students_info這個數(shù)據(jù)庫中創(chuàng)建了一張名為network3的數(shù)據(jù)庫表,,創(chuàng)建完成之后,我們應(yīng)該要檢查一下剛剛這張表,,看看有沒有什么問題:
仔細看過之后,,我們發(fā)現(xiàn)跟我們想要創(chuàng)建的類型是一樣的,也就是說沒有問題,,當然,,如果你發(fā)現(xiàn)哪里有問題了,肯定是你在創(chuàng)建時哪里不小心輸錯了,,這時就要刪除重新創(chuàng)建或者修改了(后面會有詳細講解),。 我們又來總結(jié)一下上面這個命令的基本語法,它是用來查詢數(shù)據(jù)庫表的詳細信息的(只包括表頭,,并不包含內(nèi)容): describe 數(shù)據(jù)庫表名; 語法跟前面的是一樣的,,我們應(yīng)該養(yǎng)成一個好習慣,那就是每次創(chuàng)建完成一個數(shù)據(jù)庫表后,,都使用這個命令來檢查一下,,看看所創(chuàng)建的數(shù)據(jù)庫表跟你想要的是不是一樣。 6.MySQL數(shù)據(jù)庫,、數(shù)據(jù)庫與數(shù)據(jù)庫表好了,,通過上面的操作,我們不僅僅學會了在MySQL數(shù)據(jù)庫創(chuàng)建一個數(shù)據(jù)庫,,還學會了在新建數(shù)據(jù)庫的中創(chuàng)建數(shù)據(jù)庫表,,我們來簡單的理清一下這三者的關(guān)系吧: MySQL數(shù)據(jù)庫: 相當于是一個大倉庫,里面有很多個小倉庫,; 數(shù)據(jù)庫: 相當于是大倉庫中的小倉庫,,里面有很多個小的容器; 數(shù)據(jù)庫表: 相當于是小倉庫中的容器,,我們就是在里面存儲內(nèi)容,; 那么我們也可以通過一個圖來理清這三者的關(guān)系: 好了,我想當你看到這個圖之后就會覺得非常清晰了,! 三,、操作數(shù)據(jù)庫中的數(shù)據(jù)庫表 1.向數(shù)據(jù)表中添加數(shù)據(jù)前面創(chuàng)建了數(shù)據(jù)庫表之后,,注意里面是沒有存儲任何數(shù)據(jù)的,下面我們就往這個表中插入數(shù)據(jù): mysql> insert into network3 values("3114006441","xpleaf","male",35,"QingYuan");Query OK, 1 row affected (0.01 sec) 上面的操作,,我就往數(shù)據(jù)庫表中添加了一條數(shù)據(jù),,數(shù)據(jù)內(nèi)容跟前面的學生信息表中的第一條是一模一樣的,這里我們著重看一下向數(shù)據(jù)庫表中插入數(shù)據(jù)的命令語法: insert into 數(shù)據(jù)庫表名 values(value值1,value值2,.......); 因為我創(chuàng)建的表中是有6列的,,所以values里也就有6個值了,。這是一種向表中插入數(shù)據(jù)的方式,當然,,你也可以指定向特定的列中插入數(shù)據(jù),,命令語法如下: insert into 數(shù)據(jù)庫表名 (列名1,列名2,...) values(value值1,value值2,...); 也就是說,你可以只向數(shù)據(jù)庫表中添加部分數(shù)據(jù),,當然前提是,,你還要遵守not null的規(guī)則。 我們下面再添加幾條數(shù)據(jù),,為了操作的一致性,,我們使用第一種方法添加數(shù)據(jù): mysql> insert into network3 values("3114006442","Jim","male",38,"JiangMen");Query OK, 1 row affected (0.00 sec) mysql> insert into network3 values("3114006443","Pei","male",41,"PuNing");Query OK, 1 row affected (0.01 sec) mysql> insert into network3 values("3114006440","Xuan","male",36,"ShanWei");Query OK, 1 row affected (0.02 sec) mysql> insert into network3 values("3214006336","Ting","female",30,"ChaoShan");Query OK, 1 row affected (0.02 sec) 2.查詢數(shù)據(jù)庫表中的數(shù)據(jù)向表中插入數(shù)據(jù)之后,接下來我們當然是要查詢表中的數(shù)據(jù)了,。查詢表中的數(shù)據(jù)有多種方法(其實都是一種方法),,但無論哪種方法,基本的命令語法都是像下面這樣:
命令的基本語法倒是有了,,關(guān)鍵是要看一下如何使用,。 (1)查詢表中全部數(shù)據(jù)操作如下:
這里的"*"是一個通配符,它表示任意匹配,,如果你學過基本的正則表達式,,這應(yīng)該比較好理解,所以"*"放在列的位置,,表示的是要查詢所有列的數(shù)據(jù),;我們是查詢network3這張表中的全部列的數(shù)據(jù)。 (2)查詢表中特定列的數(shù)據(jù)操作如下:
這里我們只查詢了表network3中兩列的內(nèi)容,,如果還想查詢其它列的,,像上面的操作那樣,在列名稱的位置用逗號","隔開就可以了,。 (3)按特定條件查詢表中的數(shù)據(jù)有時我們可能只想要得到某個人或者相同性別的數(shù)據(jù),,這時候我們就需要指定條件來進行查詢了,基本的命令語法如下: select 列名稱 from 數(shù)據(jù)庫表名 where 查詢條件; 看我下面的操作:
我想其它什么的也不用多說了,,特定條件其實就類似于"where 列名稱='值'"這樣的格式,,跟著操作一遍,相信你就很容易理解,當然如果你想知道更詳細的特定條件的相關(guān)語法,,可以百度一下,。 3.修改數(shù)據(jù)庫表中的數(shù)據(jù)數(shù)據(jù)不可能永遠都不會變的,總有發(fā)生變化的時候,,因此,,有時我們需要對表中的數(shù)據(jù)作一些修改,,或者說就是更新表中的數(shù)據(jù),,比如說年齡、地址等,,可以先看下面的操作: 在更改之前,,我們還是先看一下原來表中的數(shù)據(jù):
下面開始做一些修改(更新): #將name為"xpleaf"的address修改為"YuanTan" mysql> update network3 set address="YuanTan" where name='xpleaf'; Query OK, 1 row affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0 #將id為"3214006336"的name修改為"Hui" mysql> update network3 set name="Hui" where id='3214006336'; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 #將所有人的age加1 mysql> update network3 set age=age+1; Query OK, 5 rows affected (0.01 sec) Rows matched: 5 Changed: 5 Warnings: 0 我們再來查看一下進行數(shù)據(jù)更新之后的表:
OK!沒問題,,可以看到數(shù)據(jù)跟我們預(yù)想操作的是一樣,,下面我們就來總結(jié)一下修改(更新)表中數(shù)據(jù)的基本命令語法: update 數(shù)據(jù)庫列名 set 列夠=新value where 更新條件; 也是比較簡單,基它的就不多說了,。 4.刪除數(shù)據(jù)庫表中的數(shù)據(jù)有時候你想要做的是刪除表中的數(shù)據(jù),,而不是修改那么簡單,跟修改表中數(shù)據(jù)類似,,刪除表中數(shù)據(jù)的基本命令語法如下: delete from 數(shù)據(jù)庫表名 where 刪除條件; 好,,下面我們就來把表中name為"Pei"的一行數(shù)據(jù)刪除掉: mysql> delete from network3 where name='Pei'; Query OK, 1 row affected (0.02 sec) 刪除完后,我們再查看一下表中的數(shù)據(jù):
可以看到數(shù)據(jù)已經(jīng)成功刪除掉,,如果你覺得刪除一行數(shù)據(jù)不過癮的話可是根據(jù)條件來刪除多行數(shù)據(jù),,當然,你也可以把這個表中所有的數(shù)據(jù)都刪除表,,只需要使用下面這條命令就可以了: delete from 數(shù)據(jù)庫表名; 也就是不添加刪除條件,,不過這里你先別這樣操作,數(shù)據(jù)我們后面還需要使用,,有一點需要注意的是,,這個命令只是把表中的所有數(shù)據(jù)刪除而已,并沒有把這個表也刪除了,,這個數(shù)據(jù)庫表是依然存在的,,只是這時候它就是一個空表,就像我們剛剛創(chuàng)建它時一樣,。 5.修改數(shù)據(jù)庫表看到這個標題你可能覺得納悶,,前面不是已經(jīng)有修改數(shù)據(jù)庫表的內(nèi)容了嗎?要注意的是,,前面講的是修改數(shù)據(jù)庫表中的數(shù)據(jù),,注意啊,是表中的數(shù)據(jù),并不是這個表本身,,也就是說不涉及這個表本身的結(jié)構(gòu),。而這里講的,就是要修改數(shù)據(jù)庫表的結(jié)構(gòu),,比如說添加一列,、刪除一列,或者說只是簡單的修改列的名稱或數(shù)據(jù)類型等,,這里一定要弄清楚這是兩個完全不同的操作,。 (1)修改數(shù)據(jù)庫表中的列就直接給出命令語法了: alter table 數(shù)據(jù)庫表名 change 列名稱 新數(shù)據(jù)類型 [其它]; 還是看下面我的操作: 在修改前,先看一下原來數(shù)據(jù)庫表的詳細信息:
開始做修改操作: #將列名稱"adress"修改為"addr",,其它保持不變 mysql> alter table network3 change address addr char(30) not null; Query OK, 4 rows affected (0.04 sec) Records: 4 Duplicates: 0 Warnings: 0 #將列"name"的數(shù)據(jù)類型修改為最大可以存放20個字符的char類型,,其它保持不變 mysql> alter table network3 change name name char(20) not null; Query OK, 4 rows affected (0.03 sec) Records: 4 Duplicates: 0 Warnings: 0 #同時修改列"sex"的名稱和數(shù)據(jù)類型 mysql> alter table network3 change sex Sex char(10) not null; Query OK, 4 rows affected (0.05 sec) Records: 4 Duplicates: 0 Warnings: 0 查看修改后的數(shù)據(jù)庫表的詳細信息:
可以看到,通過修改操作之后,,數(shù)據(jù)庫表的格式改成了我們想要的格式,。 (2)刪除數(shù)據(jù)庫表的列有時候,隨著時間的推移,,數(shù)據(jù)庫表中的某些內(nèi)容顯得沒有那么重要了,,或者說已經(jīng)沒有存在的意義了,這時候我們就可以把整一列都刪除掉,,這樣就可以節(jié)省一些存儲空間了,。 刪除列的基本命令語法如下: alter table 數(shù)據(jù)庫表名 drop 列名稱; 我們來做如下的操作: mysql> alter table network3 drop addr; Query OK, 4 rows affected (0.02 sec) Records: 4 Duplicates: 0 Warnings: 0 我們刪除了addr這一列,雖然提示已經(jīng)成功刪除,,但我們還是習慣性地檢查一下刪除一列之后數(shù)據(jù)庫表的詳細信息:
沒問題,,確實是刪除了addr這一行,我們再去看一下數(shù)據(jù)庫表中的數(shù)據(jù)內(nèi)容:
這下子就完全放心了,,因為我們前面的操作確實是成功了,! (3)重命名數(shù)據(jù)庫表通過前面的操作,我們的數(shù)據(jù)庫表已經(jīng)煥然一新,,跟原來的相比,,結(jié)構(gòu)已經(jīng)發(fā)生了一些變化,這時我們就給這個數(shù)據(jù)庫表重命名吧,。 給數(shù)據(jù)庫表重命名的基本命令語法如下: mysql> alter table network3 rename New_network3; Query OK, 0 rows affected (0.00 sec) 再用show tables;來查看一下此時存在的數(shù)據(jù)庫表: mysql> show tables; +-------------------------+ | Tables_in_students_info | +-------------------------+ | New_network3 | +-------------------------+ 1 row in set (0.00 sec) 好,!也沒有問題了。 (4)刪除數(shù)據(jù)庫表 New_network3存放的是一個班的學生信息,,他們總有畢業(yè)的一天,,當他們畢業(yè)的時候,也許我們就不再需要存放他們的信息了,,這時就可以把這張數(shù)據(jù)庫表刪除了,。 刪除數(shù)據(jù)庫表的基本命令語法如下: drop table 數(shù)據(jù)庫表名; 好吧,,我們也來操作一下: mysql> drop table New_network3; Query OK, 0 rows affected (0.01 sec) 再用show tables;來查看一下數(shù)據(jù)庫中的數(shù)據(jù)庫表:
可以看到這時顯示為Empty,空的,,也就是此時students_info這個數(shù)據(jù)庫中已經(jīng)沒有數(shù)據(jù)庫表了(注意了,,我們前面的操作一直都是在使用studnets_info這個數(shù)據(jù)庫),很正常,,因為最開始我們只創(chuàng)建了一個數(shù)據(jù)庫表,,然后現(xiàn)在又把它刪除了。 6.刪除數(shù)據(jù)庫最開始我們在MySQL數(shù)據(jù)庫創(chuàng)建了students_info這個數(shù)據(jù)庫,,是為了在用它來存儲學生信息,,現(xiàn)在,我們不想用MySQL數(shù)據(jù)庫來存儲有關(guān)學生信息了,,這時,,就可以考慮把students_info這個數(shù)據(jù)庫刪除了,。 刪除數(shù)據(jù)庫的基本命令語法如下: drop database 數(shù)據(jù)庫名; 雖然很不舍,,但我們總要向前走,才能進步,,所以下面我們就來執(zhí)行這個操作: mysql> drop database students_info; Query OK, 0 rows affected (0.00 sec) 這時我們再使用show databases;來查看MySQL數(shù)據(jù)庫的數(shù)據(jù)庫:
可以發(fā)現(xiàn),,students_info這個數(shù)據(jù)庫已經(jīng)沒有了,我知道這一路下來對這個數(shù)據(jù)庫都有些感情了,,但請相信我,,它的使命已經(jīng)完成。 四,、進階操作 1.修改MySQL數(shù)據(jù)庫的登陸密碼不管怎么說,,你的MySQL數(shù)據(jù)庫密碼總不可能一直不變,說不定哪一天你不小心把它告訴了你的朋友,,而里面又存放了非常重要的數(shù)據(jù),,這時你就要修改數(shù)據(jù)庫的登陸密碼了。 修改數(shù)據(jù)庫登陸密碼的基本命令語法如下: mysqladmin -r root -p password 新密碼 注意,,這個操作應(yīng)該是在你未登陸MySQL數(shù)據(jù)庫之前進行的操作,。 2.在登陸MySQL數(shù)據(jù)庫時指定要操作的數(shù)據(jù)庫直接給出下面的基本命令語法: mysql -D 選擇要操作的數(shù)據(jù)庫名 -h 主機名 -u root -p 3.通過文件的方式創(chuàng)建數(shù)據(jù)庫表前面我們在創(chuàng)建數(shù)據(jù)庫表時,使用的方法是在MySQL數(shù)據(jù)庫的命令行界面中一行一行輸入的,,這樣不僅很容易輸錯,,而且一旦輸錯了,又得重新輸一遍,,當要創(chuàng)建一個結(jié)構(gòu)比較復(fù)雜的數(shù)據(jù)庫表時,,這樣的方法顯然是行不能的,這時我們就可以考慮使用文件的方式來操作了,。 直接給出下面的基本命令語法: mysql -D 選擇要操作的數(shù)據(jù)庫名 -h 主機名 -u root -p < .sql類型文件 轉(zhuǎn)自 : https://blog.csdn.net/baidu_21833433/article/details/58139793 mysql導(dǎo)入導(dǎo)出sql文件1.導(dǎo)出整個數(shù)據(jù)庫 |
|