由MySQL AB公司開發(fā),是最流行的開放源碼SQL數(shù)據(jù)庫管理系統(tǒng),主要特點(diǎn):
我們提供的服務(wù)有:網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、阿爾山ssl等。為成百上千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的阿爾山網(wǎng)站制作公司
1、是一種數(shù)據(jù)庫管理系統(tǒng)
2、是一種關(guān)聯(lián)數(shù)據(jù)庫管理系統(tǒng)
3、是一種開放源碼軟件,且有大量可用的共享MySQL軟件
4、MySQL數(shù)據(jù)庫服務(wù)器具有快速、可靠和易于使用的特點(diǎn)
5、MySQL服務(wù)器工作在客戶端/服務(wù)器模式下,或嵌入式系統(tǒng)中
InnoDB存儲引擎將InnoDB表保存在一個(gè)表空間內(nèi),該表空間可由數(shù)個(gè)文件創(chuàng)建。這樣,表的大小就能超過單獨(dú)文件的最大容量。表空間可包括原始磁盤分區(qū),從而使得很大的表成為可能。表空間的最大容量為64TB。
2.1. SQL/MySQL
1.事務(wù),隔離,并發(fā)控制,鎖
2.用戶和權(quán)限
3.監(jiān)控
STATUS
4.索引類型:查詢
VARIABLES
5.備份和恢復(fù)
6.復(fù)制功能
7.集群
2.2. DML:數(shù)據(jù)操作語言
INSERT:插入
DELETE:刪除
SELECT:挑選,選擇,查詢
UPDATE:更新,修改
2.3. DDL:數(shù)據(jù)定義語言
CREATE:創(chuàng)建
DROP:刪除
ALTER:修改
2.4. DCL:數(shù)據(jù)控制語言
GRANT:授權(quán)
REVOKE:取消權(quán)限
2.5. MySQL插件式存儲引擎:
1.MyISAM: 不支持事務(wù)處理,應(yīng)用于查詢比較多,但修改比較少的數(shù)據(jù)存儲倉庫
該引擎中,每個(gè)表有三個(gè)文件:
.frm: 表結(jié)構(gòu)文件
.MYD: 表數(shù)據(jù)文件
.MYI: 表索引文件
2.InnoDB:支持事務(wù)處理,查詢沒有那么快,應(yīng)用于經(jīng)常需要修改的,比如論壇數(shù)據(jù)存儲
該引擎所以表共享一個(gè)表空間文件;
建議:每表一個(gè)獨(dú)立的表空間文件;
.frm:表結(jié)構(gòu)文件
.ibd:表空間(包含表數(shù)據(jù)和表索引文件)
----------------------------------------------------------------------
為mysql打開innodb每表建立一個(gè)獨(dú)立表空間文件的設(shè)置:
編輯配置文件/etc/my.cnf添加一行后重啟mysql服務(wù):
#vim /etc/my.cnf
....
innoda_file_per_table = 1 #1為啟用,0為禁用
----------------------------------------------------------------------
2.6. MYSQL數(shù)據(jù)庫功能:
1、數(shù)據(jù)庫創(chuàng)建、刪除
2、創(chuàng)建表、刪除表、修改表
3、索引的創(chuàng)建、刪除
4、用戶和權(quán)限
5、數(shù)據(jù)增、刪、改
6、查詢
2.7. MySQL二進(jìn)制程序:mysql數(shù)據(jù)庫的database存放路徑為/var/lib/mysql目錄中
2.8. 客戶端命令:mysql
-u USERNAME #以那個(gè)用戶連接mysql (不指定默認(rèn)用戶為root)
-p #指定輸入用戶密碼 (不指定默認(rèn)是空密碼)
-h MYSQL_SERVER #指定mysql服務(wù)器主機(jī) (不指定默認(rèn)為localhost本機(jī))
-D DATA #連接mysql的時(shí)候指定默認(rèn)的數(shù)據(jù)庫
eg1: mysql -D mydb -uroot -p -h 10.109.134.249 -D mydb
-uroot 指定用戶 -p:輸入用戶密碼 -h:指定連接那臺mysql服務(wù)器(ip地址)
-D: 指定登錄mysql默認(rèn)的數(shù)據(jù)庫(相當(dāng)于在客戶端內(nèi)輸入U(xiǎn)SE mydb;命令)
MySQL客戶端:
交互式模式:一步一步的手動(dòng)輸入執(zhí)行
批處理模式:執(zhí)行mysql腳本,批處理執(zhí)行
MySQL客戶端工具:
mysql
mysqldump:常見的mysql備份工具
mysqladmin:mysql管理工具
mysqladmin extended-status 顯示狀態(tài)變量
mysqladmin status
--sleep N 顯示頻率
--count N 顯示多個(gè)狀態(tài)
mysqladmin variables 顯示服務(wù)器變量;
mysqladmin flush-privileges mysqld重讀授權(quán)表,等同于reload;
mysqladmin flush-status 重置大多數(shù)服務(wù)器狀態(tài)變量;
mysqladmin flush-logs 二進(jìn)制和中繼日志滾動(dòng);
mysqladmin flush-hosts 刷新主機(jī)列表;
mysqladmin refresh 刷新日志和主機(jī)列表,相當(dāng)于同時(shí)執(zhí)行flush-hosts和flush-logs;
mysqladmin shutdown 關(guān)閉mysql服務(wù)器進(jìn)程;
mysqladmin version 服務(wù)器版本及當(dāng)前狀態(tài)信息;
mysqladmin start-slave 啟動(dòng)復(fù)制,啟動(dòng)從服務(wù)器復(fù)制線程;
mysqladmin stop-slave 關(guān)閉復(fù)制,關(guān)閉從服務(wù)器復(fù)制線程。
格式:mysqladmin [option] command [arg] [command [arg]] ...
eg: mysqladmin -uroot -p password 'NEW_PASS'
[root@lamp ~]# mysqladmin create hellodb;
[root@lamp ~]# mysql
.........
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| hellodb | #通過mysqladmin可以直接管理mysql
...
+--------------------+
7 rows in set (0.00 sec)
mysqlcheck:檢查工具
mysqlimport:接口工具
2.9. MySQL非客戶端工具:
myisamchk
myisampack
2.10. 交互式模式中的命令類別:
客戶端命令:
? (\?) Synonym for `help'. 獲取幫助
quit (\q) Quit mysql. 退出mysql客戶端
clear (\c) Clear the current input statement.
\c:提前終止語句執(zhí)行,但是必須在結(jié)束符前,否則該條指令依舊執(zhí)行。
go (\g) Send command to mysql server.
\g:無論語句結(jié)束符是什么,直接將此語句送至服務(wù)器端執(zhí)行;
ego (\G) Send command to mysql server, display result vertically.
\G:無論語句結(jié)束符是什么,直接將此語句送至服務(wù)器端執(zhí)行,而且結(jié)果以豎排顯示;
system (\!) Execute a system shell command.
\! COMMAND:執(zhí)行shell命令;
warnings (\W) Show warnings after every statement.
\W:語句執(zhí)行結(jié)束后顯示警告信息;
服務(wù)器端命令:
必須使用語句結(jié)束符,默認(rèn)結(jié)束符為分號;SHOW DATABASES; #查看數(shù)據(jù)庫
delimiter (\d) Set statement delimiter.
\d:定義語句結(jié)束符 (默認(rèn)語句結(jié)束符為分號,可以設(shè)定為其他)
help KEYWORD: 獲取關(guān)鍵字命令的幫助信息;
eg: mysql>help SELECT; #獲取SELECT命令的相關(guān)幫助信息;
--------------------------------------------------------------------------
在mysql客戶端中,名稱補(bǔ)全命令: rehash
# vim /etc/my.cnf #修改配置文檔,使得命令補(bǔ)全永久有效;
[mysql]
#no-auto-rehash
auto-rehash = 1
# Remove the next comment character if you are not familiar with SQL
#safe-updates
mysql> rehash #若不改配制,用命令rehash可tab鍵補(bǔ)全命令,但重新打開mysql將失效
mysql> u #按tab鍵就有很多以U開頭的命令出來
unlock tables user.Execute_priv user.Shutdown_priv
updates user.File_priv user.Super_priv
...
--------------------------------------------------------------------------
庫、表、索引、視圖、約束、存儲過程、存儲函數(shù)、觸發(fā)器、游標(biāo)、用戶、權(quán)限、事務(wù)。
數(shù)據(jù)庫最基本的對象-->表:行(row),列(field,column)
服務(wù)端命名:mysqld
Mysql常用命令不區(qū)分大小寫,但是需保持一致(都大寫或者都小寫):
3.1. DDL:定義數(shù)據(jù)對象 (Data Definition Language)
3.1.1關(guān)鍵字:CREATE(創(chuàng)建)、ALTER(修改)、DROP(刪除)
主要作用的范圍:數(shù)據(jù)庫,表,表的字段
創(chuàng)建用戶:
CREATE USER 'USERNAME'@'HOST' IDENTIFIED BY 'PASSWORD'; #可以不指定密碼
USERNAME:用戶名 HOST:主機(jī) IDENTIFIED:指定密碼 BY‘密碼’
刪除用戶:
DROP USER 'USERNAME'@'HOST'; 刪除用戶(需具體指定刪除那個(gè)用戶)
--------------------------------------------------------------------------
為用戶設(shè)定密碼方法:(建議用1和3這兩種)
*1、mysql>SET PASSWORD FOR 'USERNAME'@'HOST'=PASSWORD('PASSWORD')
eg. SET PASSWORD FOR 'root'@'localhost'=PASSWORD('123456')
#設(shè)定root@localhost用戶名密碼為123456
2、直接在linux下輸入,不需要進(jìn)入mysql客戶端輸入(易導(dǎo)致修改同user不同host的密碼):
# mysqladmin -uUSERNAME -hHOST -p password 'password'
eg: [root@johntest ~]#mysqladmin -uroot -h20.109.13.9 -p password '123456'
*3、直接修改表中的內(nèi)容:
mysql>UPDATE user SET password=PASSWORD('password') WHERE USER='root' AND Host='10.109.13.9';
#AND與關(guān)系(需同時(shí)滿足) OR或關(guān)系(兩者滿足一個(gè)即可) NOT非關(guān)系(取反)
--------------------------------------------------------------------------
3.1.2. HOST可以使用的格式:
IP , HOSTNAME(主機(jī)名),NETWORK(網(wǎng)絡(luò)地址),通配符(需用'通配符'引號)
通配符包含:
_:匹配任意單個(gè)字符,172.16.0._
%:匹配任意字符
3.1.3. 新建數(shù)據(jù)庫:
創(chuàng)建數(shù)據(jù)庫:CREATE DATABASE IF NOT EXISTS db_name; 同名數(shù)據(jù)庫不存在時(shí)創(chuàng)建
創(chuàng)建表: CREATE TABLE tb_name(col1,col2,...); 創(chuàng)建tb_name表 col表示字段
查看庫中的表:SHOW TABLES FROM db_name 查看db_name數(shù)據(jù)庫中的表
查看表的結(jié)構(gòu):DESC tb_name 查看tb_name表的結(jié)構(gòu)
刪除表:DROP TABLE IF EXISTS tb_name 如果表存在刪除tb_name表
3.1.4.修改表:ALTER TABLE tb_name
MODIFY: 修改某字段 (變更屬性,權(quán)限)
CHANGE: 改變某字段 (變更字段名稱)
ADD: 增加某字段
DROP : 刪除某字段
eg: ALTER TABLE students ADD course VARCHAR(100); #新增空間長度為100course字段
3.2. DML:數(shù)據(jù)操縱語言 (Data Manipulation Language)
關(guān)鍵字: INSERT (插入)、 DELETE (刪除)、 UPDATE (更新、修改)
主要作用范圍:針對表中字段的值進(jìn)行操作
插入數(shù)據(jù): col表示字段
INSERT INTO tb_name (col1,col2,...) VALUES|VALUE ('STRING',NUM,...), ('STRING',NUM,...);
更新、修改數(shù)據(jù):
WHERE表示修改那個(gè)具體數(shù)據(jù),并不是把column整個(gè)這個(gè)字段的值修改為value.
UPDATE tb_name SET column=value WHERE ..... ;
eg: UPDATE students SET Course='Jiuyinzhenjing' WHERE Name='LHC'; #表示修改表students中Name值為LHC的Course字段的值變?yōu)椤甁iuyinzhenjing’
3.3. DCL:數(shù)據(jù)庫控制語言 (Data Control Language)
關(guān)鍵字: GRANT(允許、授權(quán))、REVOKE (取消權(quán)限)
ALL PRIVILEGES: 表示所有權(quán)限
3.3.1 GRANT: 給用戶授權(quán)
eg: GRANT pri1,pri2,... ON DB_NAME.TB_NAME TO 'USERNAME'@'HOST' IDENTIFIED BY 'PASSWORD'
#在數(shù)據(jù)庫DB_NAME中的表TB_NAME中,用戶USERNAME@'HOST'授予pri1,pri2等權(quán)限也可以設(shè)定密碼IDENTIFIED BY 'PASSWORD',若此用戶不存在則直接新建該用戶并授權(quán)
3.3.2 REVOKE : 取消用戶權(quán)限
eg:REVOKE pri1,pri2,... ON DB_NAME.TB_NAME FROM 'USERNAME'@'HOST';
#在數(shù)據(jù)庫DB_NAME中的表TB_NAME中,取消用戶'USERNAME'@'HOST'的pri1,pri2等權(quán)限
3.3.3 查看用戶的授權(quán): SHOW GRANTS FOR 'USERNAME'@'HOST';
3.3.4 刷新用戶權(quán)限列表: FLUSH PRIVILEGES;
3.4. DQL:數(shù)據(jù)庫查詢語言 ( Data Query Language )
關(guān)鍵字:SELECT (挑選,選擇)
SELECT 字段 FROM tb_name WHERE CONDITION;
*:表示所有字段
WHERE:沒有條件表示顯示所有行;
eg: SELECT Name,Course FROM students WHERE Gender='M';
#表示只選擇表students中的Gender字段值為M的Name和Course字段的信息
---end---