兩種
成都創(chuàng)新互聯(lián)公司成立于2013年,我們提供高端重慶網(wǎng)站建設(shè)公司、成都網(wǎng)站制作、成都網(wǎng)站設(shè)計公司、網(wǎng)站定制、成都營銷網(wǎng)站建設(shè)、微信平臺小程序開發(fā)、微信公眾號開發(fā)、seo優(yōu)化排名服務(wù),提供專業(yè)營銷思路、內(nèi)容策劃、視覺設(shè)計、程序開發(fā)來完成項目落地,為資質(zhì)代辦企業(yè)提供源源不斷的流量和訂單咨詢。
1.安裝MYSQL?官網(wǎng)的MSI?程序,安裝完,直接打開使用,現(xiàn)在最新的版本都有界面編輯器
2.在官網(wǎng)下載壓縮包,解壓后,再使用,沒搞過
網(wǎng)頁鏈接
雙擊進入安裝,
點擊上圖紅框“Install MySQL Products”進入安裝界面,
根據(jù)上圖當中第一步驟與第二步驟,
進入設(shè)置界面,如下圖:
在原來舊的版本當中,安裝類型有3種安裝類型:Typical(典型安裝)、Complete(完全安裝)和Custom(定制安裝)。
Typical(典型安裝)安裝只安裝MySQL服務(wù)器、mysql命令行客戶端和命令行實用程序。命令行客戶端和實用程序包括mysqldump、myisamchk和其它幾個工具來幫助你管理MySQL服務(wù)器。
Complete(完全安裝)安裝將安裝軟件包內(nèi)包含的所有組件。完全安裝軟件包包括的組件包括嵌入式服務(wù)器庫、基準套件、支持腳本和文檔。
Custom(定制安裝)安裝允許你完全控制你想要安裝的軟件包和安裝路徑。
而在新版本當中,選項有所不同,不過我這里默認選第一項了,其它選項請看下圖:
進入安裝前環(huán)境驗證,如下圖:
點擊“Execute”按鈕后,可能會下載一些程序,到時你自己點擊安裝就行了,直到所有安裝完成就OK了,如下圖:
點擊“Next”進入安裝,如下圖:
網(wǎng)絡(luò)不好的,得下一陣子呢,等著吧!當安裝完了,如下圖:
接著下一步,如下圖:
進入服務(wù)器配置,可以選擇3種服務(wù)器類型,選擇哪種服務(wù)器將影響到MySQL Configuration Wizard(配置向?qū)В?nèi)存、硬盤和過程或使用的決策。 Developer Machine(開發(fā)機器):該選項代表典型個人用桌面工作站。假定機器上運行著多個桌面應(yīng)用程序。將MySQL服務(wù)器配置成使用最少的系統(tǒng)資源。 Server Machine(服務(wù)器):該選項代表服務(wù)器,MySQL服務(wù)器可以同其它應(yīng)用程序一起運行,例如FTP、email和web服務(wù)器。MySQL服務(wù)器配置成使用適當比例的系統(tǒng)資源。
Dedicated MySQL Server Machine(專用MySQL服務(wù)器):該選項代表只運行MySQL服務(wù)的服務(wù)器。假定運行沒有運行其它應(yīng)用程序。MySQL服務(wù)器配置成使用所有可用系統(tǒng)資源。
那個msi是windows下的安裝包,它會把jar以及其它附屬文件安裝到固定位置,一般用不到,直接從zip里把要用的jar文件解出來用就好了。
有兩種方法,一種方法使用mysql的check table和repair table 的sql語句,另一種方法是使用MySQL提供的多個myisamchk, isamchk數(shù)據(jù)檢測恢復(fù)工具。前者使用起來比較簡便。推薦使用。
1. check table 和 repair table
登陸mysql 終端:
mysql -uxxxxx -p dbname
check table tabTest;
如果出現(xiàn)的結(jié)果說Status是OK,則不用修復(fù),如果有Error,可以用:
repair table tabTest;
進行修復(fù),修復(fù)之后可以在用check table命令來進行檢查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。
2. myisamchk, isamchk
其中myisamchk適用于MYISAM類型的數(shù)據(jù)表,而isamchk適用于ISAM類型的數(shù)據(jù)表。這兩條命令的主要參數(shù)相同,一般新的系統(tǒng)都使用MYISAM作為缺省的數(shù)據(jù)表類型,這里以myisamchk為例子進行說明。當發(fā)現(xiàn)某個數(shù)據(jù)表出現(xiàn)問題時可以使用:
myisamchk tablename.MYI
進行檢測,如果需要修復(fù)的話,可以使用:
myisamchk -of tablename.MYI
關(guān)于myisamchk的詳細參數(shù)說明,可以參見它的使用幫助。需要注意的時在進行修改時必須確保MySQL服務(wù)器沒有訪問這個數(shù)據(jù)表,保險的情況下是最好在進行檢測時把MySQL服務(wù)器Shutdown掉。
-----------------------------
另外可以把下面的命令放在你的rc.local里面啟動MySQL服務(wù)器前:
[ -x /tmp/mysql.sock ] /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI
其中的/tmp/mysql.sock是MySQL監(jiān)聽的Sock文件位置,對于使用RPM安裝的用戶應(yīng)該是/var/lib/mysql/mysql.sock,對于使用源碼安裝則是/tmp/mysql.sock可以根據(jù)自己的實際情況進行變更,而pathtochk則是myisamchk所在的位置,DATA_DIR是你的MySQL數(shù)據(jù)庫存放的位置。
需要注意的時,如果你打算把這條命令放在你的rc.local里面,必須確認在執(zhí)行這條指令時MySQL服務(wù)器必須沒有啟動!檢測修復(fù)所有數(shù)據(jù)庫(表)
需要用的資料以鏈接的形式給需要的同學(xué)。
我用的mysql版本為: Mysql-5.5.45-win64.msi 密碼是:26zw
圖形化工具 Navicat(前期不推薦用,直接手動敲): Navicat 密碼:c7fs
開始我的MySQL之旅吧 始于2016.12.04
--WH
一、數(shù)據(jù)庫的安裝
這個就不在這里過多闡述了,因為網(wǎng)上實在是太多安裝mysql的教程了,有了我給的mysql,在按照這個安裝教程(MySQL安裝教程)去看,就能夠安裝完好。
安裝好mysql后,如果需要使用windows命令窗口(也就是cmd)來操作mysql,那么就需要配置環(huán)境變量,在安裝好的mysql下找到bin,將其目錄放到環(huán)境變量path中去,就行了,檢測成功與否的方法是在cmd命令窗口中輸入mysql,就會出現(xiàn)一大段英文,就說明成功了,反之失敗,如果不會的話就去百度搜教程。
二、數(shù)據(jù)庫的基本操作
1、開啟mysql服務(wù)命令
net start mysql
2、進入mysql的兩種方式
明文進入:mysql -uroot -proot格式:mysql -u帳號 -p密碼
密文進入:mysql -uroot -p 按enter會提示你輸入密碼(Enter pssword:),此時你寫的密碼就會顯示為***這樣。
3、查看mysql中所有的數(shù)據(jù)庫(一般在固定的單詞命令就會是用大寫,這個要習(xí)慣,看多了敲多了就認識了)
前面四個數(shù)據(jù)庫是mysql中自帶的,也就是必須的.
SHOW DATABASES;
4、創(chuàng)建名為test_1的數(shù)據(jù)庫
格式:CREATE DATABASE 數(shù)據(jù)庫名
CREATE DATABASE test_1;
5、刪除名為test_1的數(shù)據(jù)庫
格式:DROP DATABASE 數(shù)據(jù)庫名
DROP DATABASE test_1;
總結(jié):學(xué)習(xí)了對數(shù)據(jù)庫的三個操作,1、查看所有數(shù)據(jù)庫 2、創(chuàng)建數(shù)據(jù)庫 3、刪除數(shù)據(jù)庫
三、數(shù)據(jù)表的基本操作
數(shù)據(jù)表和數(shù)據(jù)庫還有Mysql三者的關(guān)系
mysql中保存了很多數(shù)據(jù)庫、一個數(shù)據(jù)庫中可以保存很多表。
對數(shù)據(jù)表的增(創(chuàng)建表)刪(刪除表)改(修改表字段)查(查詢表結(jié)構(gòu))。 注意:這里的操作對象是表,對表的操作也就是表的結(jié)構(gòu),和表中的字段的操作(字段和記錄要分清楚)
前提:表是在數(shù)據(jù)庫下的,所以要先確實使用哪個數(shù)據(jù)庫。
USE test_1;
1、創(chuàng)建數(shù)據(jù)表
格式:CREATE TABLE 數(shù)據(jù)表名(
字段名1數(shù)據(jù)類型[列級別約束條件],
字段名2數(shù)據(jù)類型[列級別約束條件],
字段名3數(shù)據(jù)類型[列級別約束條件]
);
注意:格式不一定需要這樣隔著寫,完全可以全部寫成一行。但是那樣寫可觀性非常差。我這樣寫只是為了可以看的更清晰。
解釋:
1、[]中括號中的內(nèi)容表示可以有可以沒有,
2、列級別這個“列”一定要搞清楚說的是什么,一張表中有行有列,列表示豎,行表示橫
3、約束條件后面會講到
1.1、創(chuàng)建沒有約束的student表
CREATE TABLE student( idINT(11), nameVARCHAR(12), ageINT(11) );
注釋:SHOW TABLES 查詢數(shù)據(jù)庫底下的所有表。
1.2、創(chuàng)建有約束的student表
六大約束:主鍵約束、外鍵約束、非空約束、唯一約束、默認約束、自動增加
1.2.1:主鍵約束
PRIMARY KEY(primary key):獨一無二(唯一)和不能為空(非空),通俗的講,就是在表中增加記錄時,在該字段下的數(shù)據(jù)不能重復(fù),不能為空,比如以上面創(chuàng)建的表為例子,在表中增加兩條記錄,如果id字段用了主鍵約束。則id不能一樣,并且不能為空。一般每張表中度有一個字段為主鍵,唯一標識這條記錄。以后需要找到該條記錄也可以同這個主鍵來確認記錄,因為主鍵是唯一的,并且非空,一張表中每個記錄的主鍵度不一樣,所以根據(jù)主鍵也就能找到對應(yīng)的記錄。而不是多條重復(fù)的記錄。如果沒有主鍵,那么表中就會存在很多重復(fù)的記錄,那么即浪費存儲空間,在查詢時也消耗更多資源。
一般被主鍵約束了的字段度習(xí)慣性的稱該字段為該表的主鍵
單字段主鍵約束
兩種方式都可以
CREATE TABLE student(CREATE TABLE student(
idINT(11) PRIMARY KEY,idINT(11),
nameVARCHAR(12),nameVARCHAR(12),
ageINT(11) ageINT(11),
); PRIMARY KEY(id) );
多字段主鍵約束(復(fù)合主鍵)
這個id和name都市主鍵,說明在以后增加的插入的記錄中,id和name不能同時一樣,比如說可以是這樣。一條記錄為id=1,name=yyy、另一條記錄為:id=1,name=zzz。 這樣是可以的。并不是你們所理解的兩個字段分別度不可以相同。
CREATE TABLE student(CREATE TABLE student(
idINT(11) PRIMARY KEY,idINT(11),
nameVARCHAR(12) PRIMARY KEY, nameVARCHAR(12),
ageINT(11) ageINT(11),
);PRIMARY KEY(id,name) );
1.2.2:外鍵約束
什么是外鍵舉個例子就清楚了,有兩張表,一張表是emp(員工)表,另一張表是dept(部門)表,一個員工屬于一個部門,那么如何通過員工能讓我們自己他在哪個部門呢?那就只能在員工表中增加一個字段,能代表員工所在的部門,那該字段就只能是存儲dept中的主鍵了(因為主鍵是唯一的,才能確實是哪個部門,進而代表員工所在的部門,如果是部門名稱,有些部門的名稱可能是同名。就不能區(qū)分了。),像這樣的字段,就符合外鍵的特點,就可以使用外鍵約束,使該字段只能夠存儲另一張表的主鍵。如果不被外鍵約束,那么該字段就無法保證存儲進來的值就一定是另一張表的主鍵值。
外鍵約束的特點:
1、外鍵約束可以描述任意一個字段(包括主鍵),可以為空,并且一個表中可以有多個外鍵。但是外鍵字段中的值必須是另一張表中的主鍵。
2、這樣被外鍵關(guān)聯(lián)的兩種表的關(guān)系可以稱為父子表或者主從表。子表(從表)擁有外鍵字段的表,父表(主表)被外鍵字段所指向的表。
3、子表被外鍵約束修飾的字段必須和父表的主鍵字段的類型一樣。
注意:一個表中有被外鍵修飾的字段,就稱該表有外鍵(是“有外鍵”。而不是“是外鍵”),并會給該表中的外鍵約束取一個名稱,所以我們常說的這個表有沒有外鍵,指的不是被外鍵約束修飾的字段名,而是指這個表是否有存在外鍵約束。也就是說,不能說這個表的外鍵是xxx(該表中被外鍵約束修飾的字段名),這種說法是錯誤的,但是大多數(shù)人已經(jīng)習(xí)慣了這樣,雖然影響不大,但是在很多時候需要理解一個東西時,會造成一定的困擾。
格式:CONSTRAINT外鍵名稱FOREIGN KEY(被外鍵約束的字段名稱)REFERENCES 主表名(主鍵字段)
英文解釋:CONSTRAINT:約束REFERENCES:參考
CREATE TABLE tableA
(
id INT(11),
name VARCHAR(22),
location VARCHAR(50),
PRIMARY KEY(id)
);
CREATE TABLE tableB
(
id INT(11),
name VARCHAR(22) NOT NULL,
deptId INT(11),
PRIMARY KEY(id),
CONSTRAINT tableA_tableB_1 FOREIGH KEY(deptId) REFERENCES tableA(id)
);
解釋:tableB中有一個名為tableA_tableB_1的外鍵關(guān)聯(lián)了tableA和tableB兩個表,被外鍵約束修飾的字段為tableB中的deptId,主鍵字段為tableA中的id
1.2.3:非空約束
NOT NULL. 被該約束修飾了的字段,就不能為空,主鍵約束中就包括了這個約束
CREATE TABLE tableA
(
id INT(11),
name VARCHAR(22) NOT NULL,
location VARCHAR(50),
PRIMARY KEY(id)
);
1.2.4:唯一約束
UNIQUE 被唯一約束修飾了的字段,表示該字段中的值唯一,不能有相同的值,通俗點講,就好比插入兩條記錄,這兩條記錄中處于該字段的值不能是一樣的。
CREATE TABLE tableA
(
id INT(11),
name VARCHAR(22) UNIQUE,
location VARCHAR(50),
PRIMARY KEY(id)
);
也就是說在插入的記錄中,每條記錄的name值不能是一樣的。
1.2.5:默認約束
Default 指定這一列的默認值為多少,比如,男性同學(xué)比較多,性別就可以設(shè)置為默認男,如果插入一行記錄時,性別沒有填,那么就默認加上男
CREATE TABLE table
(
id INT(11) PRIMARY KEY,
name VARCHAR(22) NOT NULL,
deptId INT(11) DEFAULT 1111,
salary FLOAT
);
1.2.6:自動增加
AUTO_INCREMENT 一個表只能一個字段使用AUTO_INCREMENT,并且使用這個約束的字段只能是整數(shù)類型(任意的整數(shù)類型 TINYINT,SMALLIN,INT,BIGINT),默認值是1,也就是說從1開始增加的。一般就是給主鍵使用的,自動增加,使每個主鍵的值度不一樣,并且不用我們自己管理,讓主鍵自己自動生成
CREATE TABLE table ( id INT(11) PRIMARY KEY AUTO_INCREMENT, name VARCHAR(22) NOT NULL );
2、查詢表結(jié)構(gòu)
2.1、查看表基本結(jié)構(gòu)語句
格式1:DESCRIBE 表名/DESC 表名這兩個的功能是一樣的,簡寫了單詞describe
DESCRIBE student;
2.2、查看創(chuàng)建表的語句
格式:SHOW CREATE TABLE 表名
SHOW CREATE TABLE student;
這樣顯示的格式很不好,看不清楚,所以有了下面這個語句
格式:SHOW CREATE TABLE 表名\G
SHOW CREATE TABLE student\G;
3、修改數(shù)據(jù)表
修改數(shù)據(jù)表包括:對表中字段的增加、刪除、修改。 在這個里面用的關(guān)鍵字為 ALTER
3.1、修改表名
格式:ALTER TABLE舊表名 RENAME[TO]新表名;
將student表名改為student1(改完后在改回來)
ALTER TABLE student RENAME TO student1;
3.2、修改表中的字段名
格式:ALTER TABLE表名 CHANGE舊字段名新字段名新數(shù)據(jù)類型
將student表中的name字段名改為 username
ALTER TABLE student CHANGE name username VARCHAR(30);
3.3、修改表中的數(shù)據(jù)類型
格式:ALTER TABLE表名 MODIFY字段名數(shù)據(jù)類型
ALTER TABLE student MODIFY username VARCHAR(20);
解釋:只能修改字段名的數(shù)據(jù)類型,但是其原理跟上面change做的事情一樣,這里也有修改字段名的過程,只不過修改后的字段名和修改前的字段名相同,但是數(shù)據(jù)類型不一樣。
3.4、修改字段的排列位置
方式1:ALTER TABLE表名 MODIFY字段1數(shù)據(jù)類型 FIRST|AFTER字段2
解釋:將字段1的位置放到第一,或者放到指定字段2的后面
ALTER TABLE student MODIFY username VARCHAR(20) AFTER age;
方式2:ALTER TABLE表名 CHANGE字段1字段2數(shù)據(jù)類型 FIRST|AFTER字段3
解釋:其實是一樣的,將是字段2覆蓋字段1,然后在進行排序
ALTER TABLE student CHANGE username username VARCHAR(20) AFTER age;
總結(jié)
CHANGE和MODIFY的區(qū)別?
原理都市一樣的,MODIFY只能修改數(shù)據(jù)類型,但是CHANGE能夠修改數(shù)據(jù)類型和字段名,也就是說MODIFY是CHANGE的更具體化的一個操作??赡苡X得用CHANGE只改變一個數(shù)據(jù)類型不太爽,就增加了一個能直接改數(shù)據(jù)類型的使用關(guān)鍵字MODIFY來操作。
3.5、添加字段
格式:ALTER TABLE表名稱 ADD新字段名數(shù)據(jù)類型[約束條件][FIRST|AFTER已存在的表名]
解釋:在一個特定位置增加一個新的字段,如果不指定位置,默認是最后一個。
ALTER TABLE student ADD sex VARCHAR(11);
3.6、刪除字段
格式:ALTER TABLE表名稱 DROP字段名;
ALTER TABLE student DROP sex;
3.7、刪除表的外鍵約束
格式:ALTER TABLE表名稱 DROP FOREIGN KEY外鍵約束名
注意:外鍵約束名 指的不是被外鍵約束修飾的字段名,切記,而是我們在創(chuàng)建外鍵約束關(guān)系時取的名字。
3.8、更改表的存儲引擎
格式:ALTER TABLE表名 ENGINE=更改后的存儲引擎名
這個存儲引擎目前我自己也不太清楚,雖然知道有哪幾種引擎,但是稍微深入一點就不清楚了,所以打算留到日后在說。
4、刪除表
4.1、刪除無關(guān)聯(lián)表
格式:DROP TABLE表名;
ALTER TABLE student;
4.2、刪除被其他表關(guān)聯(lián)的主表
這個是比較重要的一點,在有外鍵關(guān)聯(lián)關(guān)系的兩張表中,如果刪除主表,那么是刪不掉的,并且會報錯。因為有張表依賴于他。那怎么辦呢?針對這種情況,總共有兩種方法
1、先刪除你子表,然后在刪除父表,這樣就達到了刪除父表的目的,但是子表也要被刪除
2、先解除外鍵關(guān)系,然后在刪除父表,這樣也能達到目的,并且保留了子表,只刪除我們不需要的父表。在3.7中就講解了如何刪除外鍵關(guān)系。