十二. MySQL基礎
一、關於數據庫
1、什麼是數據庫
如果一個項目是動態(內容會變化的,網頁的後綴.jsp、.php、shtml等等)內容的話,則數據庫是必不可少的一個環節。(靜態:Html、html)
2、MySQL簡介
MysQL是一個關係型數據庫管理系統,由瑞典MySQL AB公司開發,2008年被Sun公司收購,目前屬於Oracle旗下產品。MysQL是最流行的數據庫管理系統之一,在WEB應用方面,MysQL是最好的RDBMS(Relational Database Management System,關係數據庫管理系統)應用軟件。其和php是黃金搭檔。(LAMP/LNMP).
3、常見的其他數據庫軟件
目前市場上還有:Oracle(重量級的數據庫)、Ms SQL Server(微軟)、Access(微軟)、PostgresQL、DB2、Mariadb(MysQL分支)
二、MySQL的安裝與初始化
操作之前先確保計算機時間準確。
1、Linux下的軟件安裝方式(初步)
a.源碼包
優點
開源,如果有足夠的能力,可以修改源代碼編譯安裝,更加適合自己的系統,穩定高效缺點
安裝步驟較多,容易出錯編譯過程時間較長
案例:使用源碼編譯安裝方式安裝ncurses(一種常用的終端庫)
擴展:解包常用語法:
#tar -zxvf *.tar.gz
#tar -jxvf *.tar.bz2
選項含義:
-z或--gzip或--ungzip:通過gzip指令處理文件;
-x或--extract或--get:從文件中還原文件;
-V:顯示操作過程;
-f或--file:指定一個文件;
-j:支持bzip2解壓文件;
①先將軟包傳遞到服務器上"/usr/local/src"
②解壓需要安裝的源碼包
tar -zxvf ncurses-6.1.tar.gz
③切換到源碼文件夾,然後執行後續操作
配置(config/configure/bootstrap)→編譯(make/bootstrapd)→安裝(make install/bootstrapd install)
配置操作主要是指定軟件的安裝目錄、需要的依賴在什麼地方、指定不需要可選依賴、配置文件的路徑、通用數據存儲位置等等。
指定安裝的路徑:–prefix=路徑
需要依賴的路徑:–with-PACKAGE名=包所在的路徑
不需要依賴:-without-PACHAGE名
#./configure --prefix=/usr/local/ncurses
#make
#make install
成功之後查看目錄:
b.二進制包
優點:包管理系統簡單,只需要幾個命令就可以實現包的安裝,升級,查詢和卸載
缺點:經過編譯,不再可以看到源代碼
回顧rpm相關指令:
#rpm -ga|grep關鍵詞
#rpm -e 關鍵詞 [-nodeps]
#rpm -ivh 完整名稱
#rpm -Uvh 完整名稱 更新
#rpm -qf 文件路徑【查詢指定文件屬於哪個包】
案例:使用二進制包安裝lynx(一款純命令行的瀏覽器)
例如查看百度:#lynx --dump www.baidu.com
c.yum等傻瓜式安裝
優點:安裝簡單,快捷
缺點:完全喪失了自定義性
常用的yum指令:
#yum list 列出當前已經裝的和可以裝的軟件(全部)
#yum search 搜索指定的關鍵詞的包
#yum [-y] install 包名 安裝指定的包(-y表示允許不再確認)
#yum [-y] update [包名] 更新指定的包,不指定包則更新全部軟件
#yum [-y] remove 包名
注意:如果不更改軟件來源的情況下,是需要聯網才能使用yum的。
案例:使用yum指令卸載火狐瀏覽器
#yum remove firefox
案例:使用yum指令安裝火狐瀏覽器
#yum install firefox
2、安裝MySQL(重點)
注:此處安裝以yum安裝爲例
2.1、MysQL安裝
#yum install mysql-server
安裝完成
2.2、MysQL初始化
#service mysqld start
查看端口號(默認端口號):
#mysql secure installation
Enter current password for root(enter for none):請輸入當前 root用戶的密碼,如果沒有按回車,注意此root 並非linux的root用戶。
Set root password?是否設置root密碼?
需要設置的密碼:********
Remove anonymous users?是否移除匿名用戶,選擇移除(Y)
Disallow root login remotely?是百允許root 遠程登錄(默認不允許)
Remove test database and access to it?是否移除測試數據庫(建議先不移除)
Reload privilege tables now?是否重新加載權限表(當我們更改了mysql用戶相關的信息之後建議去重載權限)
2.3、MysQL的啓動控制
語法:service mysgld start/stop/restart
進入mysql的方式:
#mysql -u用戶名 -p
退出MysQL到linux命令行:
mxsql>exit
2.4、默認目錄/文件位置(瞭解)
數據庫存儲目錄:/var/lib/mysql
配置文件:/etc/my.cnf
三、MysQL的基本操作(難點)
1、名詞介紹
以Excel文件舉例:
數據庫:可以看作是整個excel文件。
數據表:可以看作是一個excel文件中的工作表。
行(記錄):可以看作是一個工作表中的一行
列(字段):可以看作是一個工作表總的一列
2、庫操作
以下命令在MySQL終端命令行中執行:
SHOW DATABASES; 顯示當前MySQL中全部的數據庫
CREATE DATABASE庫名; 創建數據庫
DROP DATABASE庫名; 刪除數據庫
USE庫名; 切換數據庫
Show databases 效果:
創建數據庫:創建 yunwei數據庫
刪除數據庫:刪除 yunwei數據庫
切換數據庫:切換到test 數據庫
3、表操作
SHOW TABLES; 顯示當前數據庫中所有的表名(必須先use數據庫)
CREATE TABLE表名稱 在當前數據庫下創建數據表
(
列名稱1數據類型[NOT NULL AUTO_INCREMENT],
列名稱2數據類型,
列名稱3數據類型,
......,
PRIMARY KEY(主鍵字段名)
);
常見的數據類型:int(整型)、char(定長字符)、varchar(不定長字符)
主鍵一般就是序號所在的那一列(主鍵不能重複)
DESC表名; 描述一個數據表(查看錶結構)
DROP TABLE[IF EXISTS]表名; 刪除一個數據表
案例:使用上述的語法
查看所有的數據表
創建數據表(去test庫中創建)
要求:表名xg,要求有字段如下:
ld字段,11位整型,不爲空,自增,主鍵
Username字段,varchar類型,20長度
Password字段,char 類型,32長度
SQL(standard query language)語句:
Create table xg(
Id int(11)not null auto_increment,
Username varchar(20),
Password char(32),
Primary key(id)
)
查看錶結構:
刪除數據表:
4、記錄/字段操作(重點)
4.1、增加記錄
語法1:INSERT INTO 表名稱 VALUES(值1,值2,.…);
語法2:INSERT INTO 表名稱(列1,列2.…)VALUES(值1,值2,.…);
案例:往數據表xg表中新增一個記錄username爲zhangsan,password爲123456(加密結果E10ADC3949BA59ABBE56E057F20F883E)
Sql語句:
insert into xg(username,password)values(‘zhangsan’,‘E10ADC3949BA59ABBE56EO57F20F883E’)
要求前面的列名與值要一一對應。
4.2、更新記錄
語法:UPDATE 表名稱 SET 列名稱1=新值1,列名稱2=新值2...WHERE 列名稱=某值;
案例:使用更新語句更新id大於等於2的記錄,將其密碼改爲:
25F9E794323B453885F5181F1B624D0B
SQL語句:
Update xg set password =‘25F9E794323B453885F5181F1B624DOB’where id>=2;
以後在執行影響行數的sql操作的時候一定需要注意條件是否寫錯或者漏寫。
4.3、查詢記錄
SELECT 列名稱1,列名稱2... FROM 表名稱 WHERE 條件;
SELECT * FROM 表名稱 WHERE 條件;
案例:查詢剛纔新增的記錄
只查詢用戶名和密碼,並且是id=2的:
Select username,password from xg where id=2;
查詢全部:
Select * from ×g;
4.4、刪除記錄
DELETE FROM 表名稱 WHERE 列名稱=值;
案例:刪除id爲2的記錄
Delete from xg where id=2;
5、備份與還原(重點)
5.1、備份(導出)
全量備份(數據+結構):
全量備份(數據+結構):#mysqldump -uroot -p123456(密碼) -A > 備份文件路徑
指定庫備份(數據+結構):#mysqldume -uroot -p123456 庫名 > 備份文件路徑
多個庫備份(數據+結構):#mysqldump -uroot -p123456 --databases db1 db2 > 備份文件路徑
xxxx.sql xxx.tar.gz
案例:備份整個庫
#mysqldump -uroot -pqhabOfhlluB9 -A > /root/sql_201804061609.sql
案例:每1分鐘自動備份1次test數據庫
計劃任務編寫:
等待幾分鐘觀察目錄情況:
5.2、還原(導入)
還原部分分(1)mysql命令行source方法 和 (2)系統命令行方法
1.還原全部數據庫:
(1)mysql命令行:mysql>source 備份文件路徑
(2)系統命令行:mysql -uroot -p123456 <(輸入重定向) 備份文件路徑
2.還原單個數據庫**(需指定數據庫)**
(1)mysql>use 庫名
mysql>source備份文件路徑
(2)mysql -uroot -p123456 庫名 < 備份文件路徑
3.還原單個數據庫的多個表(需指定數據庫)
(1)mysql>use庫名
mysql>source 備份文件路徑
(2)mysql -uroot -p123456 庫名 < 備份文件路徑
4.還原多個數據庫,(一個備份文件裏有多個數據庫的備份,此時不需要指定數據庫)
(1)mysql命令行:mysql>source備份文件路徑(2)系統命令行:mysql -uroot -p123456 < 備份文件路徑
案例:人爲刪除xg表(模擬數據表丟失),然後通過最後一次備份還原數據表。
先刪除數據表
還原操作:
案例2:需要還原sqL文件到test庫庫(mobile.sql31萬條數據)
設置Mysql連接字符集:
Mysql> set names utf8;
【三碼一致,服務器端+傳輸過程中+客戶端】
四、擴展
1、mysql的遠程管理工具
分爲兩大類:B/s架構、C/s架構。
B/S:B是指瀏覽器,s是指服務器。例如:百度搜索應用就屬於BS架構軟件。
C/s:C是指客戶端,s是指服務器。例如:QQ、電腦端徽值等應用程序都是CS架構。
在Bs中,mysql有個典型的管理工具:PMA(phpMyAdmin)
cs中比較典型的軟件:navicat、mysql workbrach
要解決的問題:允許mysql遠程登錄
a.先進入數據庫選擇mysql數據庫;
b.執行sgql語句:select host,user from user;
c.將其中的一個記錄的host值改爲“%”,表示可以允許任何地方登錄
d.刷新權限表或者重啓mysql
刷新權限:mysql> flush privileges;
e.navicat登錄成功
所有筆記到這裏都結束了~
學習筆記一:基本命令
學習筆記二:基本命令
學習筆記三:Vim
學習筆記四:自有服務
學習筆記五:自有服務
學習筆記六:權限管理
學習筆記七:網絡基礎
學習筆記八:Shell基礎
學習筆記九:Mysql基礎
知識來源:
Linux學習網站
CentOS6.5
全部筆記下載:
Linux學習筆記.md