RDBMS即關係數據庫管理系統(Relational Database Management System)的特色:html
在咱們開始學習MySQL 數據庫前,讓咱們先了解下RDBMS的一些術語:python
數據庫: 數據庫是一些關聯表的集合。. 數據表: 表是數據的矩陣。在一個數據庫中的表看起來像一個簡單的電子表格。 列: 一列(數據元素) 包含了相同的數據, 例如郵政編碼的數據。 行:一行(=元組,或記錄)是一組相關的數據,例如一條用戶訂閱的數據。 冗餘:存儲兩倍數據,冗餘下降了性能,但提升了數據的安全性。 主鍵:主鍵是惟一的。一個數據表中只能包含一個主鍵。你可使用主鍵來查詢數據。 外鍵:外鍵用於關聯兩個表。 複合鍵:複合鍵(組合鍵)將多個列做爲一個索引鍵,通常用於複合索引。 索引:使用索引可快速訪問數據庫表中的特定信息。索引是對數據庫表中一列或多列的值進行排序的一種結構。相似於書籍的目錄。 參照完整性: 參照的完整性要求關係中不容許引用不存在的實體。與實體完整性是關係模型必須知足的完整性約束條件,目的是保證數據的一致性。
1. 數據查詢語言(DQL:Data Query Language):SELECT 2. 數據操做語言(DML:Data Manipulation Language):INSERT,UPDATE和DELETE 3. 事務處理語言(TPL):BEGIN TRANSACTION,COMMIT和ROLLBACK 4. 數據控制語言(DCL):GRANT(受權)或REVOKE(回收權限) 5. 數據定義語言(DDL):CREATE、ALTER和DROP 6. 指針控制語言(CCL):DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用於對一個或多個表單獨行的操做
mysql -h 主機名 -u 用戶名 -p密碼 庫名 C:\>mysql --採用匿名帳號和密碼登錄本機服務 C:\>mysql -h localhost -u root -proot --採用root帳號和root密碼登錄本機服務 C:\>mysql -u root -p --推薦方式默認登錄本機 Enter password: **** C:\>mysql -u root -p mydb --直接進入mydb數據庫的方式登錄 SQL語句中的快捷鍵 \G 格式化輸出(文本式,豎立顯示) \s 查看服務器端信息 \c 結束命令輸入操做 \q 退出當前sql命令行模式 \h 查看幫助
mysql> show databases; --查看當前用戶下的全部數據庫 mysql> create database [if not exists] 數據庫名; --建立數據庫 mysql> use test; --選擇進入test數據庫 mysql> show create database 數據庫名\G --查看建數據庫語句 mysql> select database(); --查看當前所在的數據庫位置 mysql> drop database [if exists] 數據庫名; --刪除一個數據庫
mysql> show tables; --查看當前庫下的全部表格 mysql> desc tb1; --查看tb1的表結構。 mysql> show create table 表名\G --查看錶的建表語句。 mysql> create table demo( --建立demo表格 -> name varchar(16) not null, -> age int, -> sex enum('w','m') not null default 'm'); Query OK, 0 rows affected (0.05 sec) mysql> show columns from demo; --查看錶結構 mysql> desc demo; --查看錶結構 +-------+---------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+---------------+------+-----+---------+-------+ | name | varchar(16) | NO | | NULL | | | age | int(11) | YES | | NULL | | | sex | enum('w','m') | NO | | m | | +-------+---------------+------+-----+---------+-------+ 3 rows in set (0.00 sec) mysql>drop table if exists mytab; -- 嘗試刪除mytab表格
--添加一條數據 mysql> insert into demo(name,age,sex) values('zhangsan',20,'w'); Query OK, 1 row affected (0.00 sec) --不指定字段名來添加數據 mysql> insert into demo values('lisi',22,'m'); Query OK, 1 row affected (0.00 sec) --指定部分字段名來添加數據 mysql> insert into demo(name,age) values('wangwu',23); Query OK, 1 row affected (0.00 sec) --批量添加數據 mysql> insert into demo(name,age,sex) values('aaa',21,'w'),("bbb",22,'m'); Query OK, 2 rows affected (0.00 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> select * from demo; --查詢數據 mysql> update demo set age=24 where name='aaa'; --修改 Query OK, 1 row affected (0.02 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> delete from demo where name='bbb'; --刪除 Query OK, 1 row affected (0.00 sec)
1 數值類型: *tinyint(1字節) 0~255 -128~127 smallint(2字節) mediumint(3字節) *int(4字節) bigint(8字節) *float(4字節) float(6,2) *double(8字節) decimal(自定義)字串形數值 2 字串類型 普通字串 *char 定長字串 char(8) *varchar 可變字串 varchar(8) 二進制類型 tinyblob blob mediumblob longblob 文本類型 tinytext *text 經常使用於<textarea></textarea> mediumtext longtext *enum枚舉 set集合 3 時間和日期類型: date 年月日 time 時分秒 *datetime 年月日時分秒 timestamp 時間戳 year 年 4 NULL值 NULL意味着「沒有值」或「未知值」 能夠測試某個值是否爲NULL 不能對NULL值進行算術計算 對NULL值進行算術運算,其結果仍是NULL 0或NULL都意味着假,其他值都意味着真
算術運算符:+ - * / % 比較運算符:= > < >= <= <> != 數據庫特有的比較:in,not in, is null,is not null,like, between and 邏輯運算符:and or not
unsigned 無符號(正數) zerofill 前導零填充 auto_increment 自增 default 默認值 not null 非空 PRIMARY KEY 主鍵 (非null並不重複) unique 惟一性 (能夠爲null但不重複) index 常規索引
create table 表名( 字段名 類型 [字段約束], 字段名 類型 [字段約束], 字段名 類型 [字段約束], ... );
mysql> create table stu( -> id int unsigned not null auto_increment primary key, -> name varchar(8) not null unique, -> age tinyint unsigned, -> sex enum('m','w') not null default 'm', -> classid char(6) -> ); Query OK, 0 rows affected (0.05 sec) mysql> desc stu; +---------+---------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------+---------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | name | varchar(8) | NO | UNI | NULL | | | age | tinyint(3) unsigned | YES | | NULL | | | sex | enum('m','w') | NO | | m | | | classid | char(6) | YES | | NULL | | +---------+---------------------+------+-----+---------+----------------+ 5 rows in set (0.00 sec) mysql> show create table stu\G --查看建表的語句 *************************** 1. row *************************** Table: stu Create Table: CREATE TABLE `stu` ( `id` int(10) unsigned NOT NULL auto_increment, `name` varchar(8) NOT NULL, `age` tinyint(3) unsigned default NULL, `sex` enum('m','w') NOT NULL default 'm', `classid` char(6) default NULL, PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 1 row in set (0.00 sec)
格式: alter table 表名 action(更改選項); 更改選項: 1. 添加字段:alter table 表名 add 字段名信息 例如: -- 在user表的最後追加一個num字段 設置爲int not null mysql> alter table user add num int not null; -- 在user表的email字段後添加一個age字段,設置int not null default 20; mysql> alter table user add age int not null default 20 after email; -- 在user表的最前面添加一個aa字段設置爲int類型 mysql> alter table user add aa int first; 2. 刪除字段:alter table 表名 drop 被刪除的字段名 例如:-- 刪除user表的aa字段 mysql> alter table user drop aa; 3. 修改字段:alter table 表名 change[modify] 被修改後的字段信息 其中:change能夠修改字段名, modify 不修改 例如: -- 修改user表中age字段信息(類型),(使用modify關鍵字的目的不修改字段名) mysql> alter table user modify age tinyint unsigned not null default 20; -- 修改user表的num字段改成mm字段並添加了默認值(使用change能夠改字段名) mysql> alter table user change num mm int not null default 10; 4. 添加和刪除索引 -- 爲user表中的name字段添加惟一性索引,索引名爲uni_name; mysql> alter table user add unique uni_name(name); -- 爲user表中的email字段添加普通索引,索引名爲index_eamil mysql> alter table user add index index_email(email); -- 將user表中index_email的索引刪除 mysql> alter table user drop index index_email; 5. 更改表名稱: ALTER TABLE 舊錶名 RENAME AS 新表名 6. 更改AUTO_INCREMENT初始值: ALTER TABLE 表名稱 AUTO_INCREMENT=1 7. 更改表類型: ALTER TABLE 表名稱 ENGINE="InnoDB" MySQL數據庫中的表類型通常經常使用兩種:MyISAM和InnoDB 區別:MyISAM類型的數據文件有三個frm(結構)、MYD(數據)、MYI(索引) MyISAM類型中的表數據增 刪 改速度快,不支持事務,沒有InnoDB安全。 InnoDB類型的數據文件只有一個 .frm InnoDB類型的表數據增 刪 改速度沒有MyISAM的快,但支持事務,相對安全。
格式: insert into 表名[(字段列表)] values(值列表...); --標準添加(指定全部字段,給定全部的值) mysql> insert into stu(id,name,age,sex,classid) values(1,'zhangsan',20,'m','lamp138'); Query OK, 1 row affected (0.13 sec) mysql> --指定部分字段添加值 mysql> insert into stu(name,classid) value('lisi','lamp138'); Query OK, 1 row affected (0.11 sec) -- 不指定字段添加值 mysql> insert into stu value(null,'wangwu',21,'w','lamp138'); Query OK, 1 row affected (0.22 sec) -- 批量添加值 mysql> insert into stu values -> (null,'zhaoliu',25,'w','lamp94'), -> (null,'uu01',26,'m','lamp94'), -> (null,'uu02',28,'w','lamp92'), -> (null,'qq02',24,'m','lamp92'), -> (null,'uu03',32,'m','lamp138'), -> (null,'qq03',23,'w','lamp94'), -> (null,'aa',19,'m','lamp138'); Query OK, 7 rows affected (0.27 sec) Records: 7 Duplicates: 0 Warnings: 0
格式:update 表名 set 字段1=值1,字段2=值2,字段n=值n... where 條件 -- 將id爲11的age改成35,sex改成m值 mysql> update stu set age=35,sex='m' where id=11; Query OK, 1 row affected (0.16 sec) Rows matched: 1 Changed: 1 Warnings: 0 -- 將id值爲12和14的數據值sex改成m,classid改成lamp92 mysql> update stu set sex='m',classid='lamp92' where id=12 or id=14 --等價於下面 mysql> update stu set sex='m',classid='lamp92' where id in(12,14); Query OK, 2 rows affected (0.09 sec) Rows matched: 2 Changed: 2 Warnings: 0
格式:delete from 表名 [where 條件] -- 刪除stu表中id值爲100的數據 mysql> delete from stu where id=100; Query OK, 0 rows affected (0.00 sec) -- 刪除stu表中id值爲20到30的數據 mysql> delete from stu where id>=20 and id<=30; Query OK, 0 rows affected (0.00 sec) -- 刪除stu表中id值爲20到30的數據(等級於上面寫法) mysql> delete from stu where id between 20 and 30; Query OK, 0 rows affected (0.00 sec) -- 刪除stu表中id值大於200的數據 mysql> delete from stu where id>200; Query OK, 0 rows affected (0.00 sec)
select [字段列表]|* from 表名 [where 搜索條件] [group by 分組字段 [having 子條件]] [order by 排序 asc|desc] [limit 分頁參數]
mysql> select * from stu; +----+----------+-----+-----+---------+ | id | name | age | sex | classid | +----+----------+-----+-----+---------+ | 1 | zhangsan | 20 | m | lamp138 | | 2 | lisi | 20 | m | lamp138 | | 3 | wangwu | 21 | w | lamp138 | | 4 | zhaoliu | 25 | w | lamp94 | | 5 | uu01 | 26 | m | lamp94 | | 6 | uu02 | 28 | w | lamp92 | | 7 | qq02 | 24 | m | lamp92 | | 8 | uu03 | 32 | m | lamp138 | | 9 | qq03 | 23 | w | lamp94 | | 10 | aa | 19 | m | lamp138 | | 11 | sad | 35 | m | lamp94 | | 12 | tt | 25 | m | lamp92 | | 13 | wer | 25 | w | lamp94 | | 14 | xx | 25 | m | lamp92 | | 15 | kk | 0 | w | lamp94 | +----+----------+-----+-----+---------+ 15 rows in set (0.00 sec) 1. where條件查詢 1. 查詢班級爲lamp138期的學生信息 mysql> select * from stu where classid='lamp138'; 2. 查詢lamp138期的男生信息(sex爲m) mysql> select * from stu where classid='lamp138' and sex='m'; 3. 查詢id號值在10以上的學生信息 mysql> select * from stu where id>10; 4. 查詢年齡在20至25歲的學生信息 mysql> select * from stu where age>=20 and age<=25; mysql> select * from stu where age between 20 and 25; 5. 查詢年齡不在20至25歲的學生信息 mysql> select * from stu where age not between 20 and 25; mysql> select * from stu where age<20 or age>25; 6. 查詢id值爲1,8,4,10,14的學生信息 select * from stu where id in(1,8,4,10,14); mysql> select * from stu where id=1 or id=8 or id=4 or id=10 or id=14; 7. 查詢lamp138和lamp94期的女生信息 mysql> select * from stu where classid in('lamp138','lamp94') and sex='w'; mysql> select * from stu where (classid='lamp138' or classid='lamp94') and sex='w
格式:grant 容許操做 on 庫名.表名 to 帳號@來源 identified by '密碼'; --實例:建立zhangsan帳號,密碼123,受權lamp61庫下全部表的增/刪/改/查數據,來源地不限 mysql> grant select,insert,update,delete on lamp61.* to zhangsan@'%' identified by '123'; mysql> grant all on *.* to zhangsan@'%' identified by '123'; Query OK, 0 rows affected (0.00 sec) -- 受權一個用戶(zhangsan)密碼123,能夠對全部的庫,全部的表作全部操做。 mysql> grant all on *.* to zhangsan@'%' identified by '123'; Query OK, 0 rows affected (0.17 sec) --刷新生效,不然就要重啓MySQL服務才能夠。 mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) --瀏覽當前MySQL用戶信息 mysql> select user,host,password from mysql.user; +----------+-----------------+-------------------------------------------+ | user | host | password | +----------+-----------------+-------------------------------------------+ | root | localhost | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 | | root | 127.0.0.1 | | | | localhost | | | zhangsan | % | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 | | admin | 192.168.112.132 | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 | +----------+-----------------+-------------------------------------------+ 5 rows in set (0.00 sec) -- 移除一些權限 -- revoke:只刪除了用戶權限,但沒有刪除這個用戶 mysql> revoke insert,delete on *.* from admin@192.168.112.132 identified by'123'; -- 查看指定用戶的權限信息 mysql> show grants for xbb@localhost; +------------------------------------------------------------------------------------------------------------+ | Grants for xbb@localhost | +------------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'xbb'@'localhost' IDENTIFIED BY PASSWORD '*23AE809DDACAF96AF0FD78ED04B6A265E05AA257' | +------------------------------------------------------------------------------------------------------------+ --drop user:刪除了整個用戶及其權限(包括數據字典中的數據) mysql> drop user 'xbb'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> select user,host from mysql.user; +------------------+-----------+ | user | host | +------------------+-----------+ | root | 127.0.0.1 | | debian-sys-maint | localhost | | root | localhost | | root | wangxg | +------------------+-----------+ 4 rows in set (0.00 sec)
-- 將lamp138庫導出 D:\>mysqldump -u root -p lamp138 >lamp138.sql Enter password: ---- 將lamp138庫中的stu表導出 D:\>mysqldump -u root -p lamp138 stu >lamp138_stu.sql Enter password: -- 將lamp138庫導入 D:\>mysql -u root -p lamp138<lamp138.sql Enter password: -- 將lamp138庫中stu表導入 D:\>mysql -u root -p lamp138<lamp138_stu.sql Enter password:
1. 嵌套查詢:一個查詢的結果是另外sql查詢的條件: 如:查詢stu表中年齡最大的是誰? mysql> select * from stu where age=(select max(age) from stu); mysql> select * from stu where age in(select max(age) from stu); --(子查詢結果是多條時使用in查詢) +----+------+------+-----+----------+ | id | name | age | sex | classid | +----+------+------+-----+----------+ | 14 | abc | 33 | w | python01 | +----+------+------+-----+----------+ 1 row in set (0.01 sec) 2. where關聯查詢 已知:員工personnel表和部門department表,其中員工表中的did字段爲部門表id主鍵關聯。 查詢全部員工信息,並顯示所屬部門名稱 要求:顯示字段:員工id 部門 姓名 mysql> select p.id,d.name,p.name from personnel p,department d where p.did = d.id; +----+-----------+-----------+ | id | name | name | +----+-----------+-----------+ | 2 | 人事部 | 李玉剛 | | 10 | 人事部 | 阿杜 | | 4 | 市場部 | 劉歡 | 。。。。 3. 鏈接join查詢 左聯:left join 右聯:right join 內聯:inner join 已知以下表所示,商品類別信息表(具備兩層類別關係,經過pid表示,0表示一級類別) mysql> select * from type; +----+-----------+------+ | id | name | pid | +----+-----------+------+ | 1 | 服裝 | 0 | | 2 | 數碼 | 0 | | 3 | 男裝 | 1 | | 4 | 手機 | 2 | | 5 | 相機 | 2 | | 6 | 電腦 | 2 | | 7 | 女裝 | 1 | | 8 | 童裝 | 1 | | 9 | 食品 | 0 | | 10 | 零食 | 9 | | 11 | 特產 | 9 | | 12 | 休閒裝 | 1 | +----+-----------+------+ 12 rows in set (0.00 sec) mysql> desc type; +-------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | name | varchar(16) | NO | | NULL | | | pid | int(10) unsigned | YES | | NULL | | +-------+------------------+------+-----+---------+----------------+ 3 rows in set (0.00 sec) -- 查詢二級類別信息,並關聯出他們的父類別名稱 mysql> select t1.id,t1.name,t2.name from type t1,type t2 where t1.pid!=0 and t1.pid=t2.id; +----+-----------+--------+ | id | name | name | +----+-----------+--------+ | 3 | 男裝 | 服裝 | | 4 | 手機 | 數碼 | | 5 | 相機 | 數碼 | | 6 | 電腦 | 數碼 | | 7 | 女裝 | 服裝 | | 8 | 童裝 | 服裝 | | 10 | 零食 | 食品 | | 11 | 特產 | 食品 | | 12 | 休閒裝 | 服裝 | +----+-----------+--------+ 9 rows in set (0.01 sec) --統計每一個一級類別下都有多少個子類別。 mysql> select t1.id,t1.name,count(t2.id) from type t1,type t2 where t1.pid=0 and t1.id=t2.pid group by t1.id; +----+--------+--------------+ | id | name | count(t2.id) | +----+--------+--------------+ | 1 | 服裝 | 4 | | 2 | 數碼 | 3 | | 9 | 食品 | 2 | +----+--------+--------------+ 3 rows in set (0.00 sec)
1. MySQL的表複製 複製表結構 mysql> create table 目標表名 like 原表名; 複製表數據 mysql> insert into 目標表名 select * from 原表名; 2. 數據表的索引 建立索引 CREATE INDEX index_name ON table_name (column_list) CREATE UNIQUE INDEX index_name ON table_name (column_list) 刪除索引 DROP INDEX index_name ON talbe_name 3. mysql視圖 建立視圖: mysql> create view v_t1 as select * from t1 where id>4 and id<11; Query OK, 0 rows affected (0.00 sec) view視圖的幫助信息: mysql> ? view ALTER VIEW CREATE VIEW DROP VIEW 查看視圖: mysql> show tables; 刪除視圖v_t1: mysql> drop view v_t1; 4. MySQL的內置函數 字符串處理函數 --------------------------------------------- *concat(s1,s2,…Sn) 鏈接s1,s2..Sn爲一個字符串 insert(str,x,y,instr)將字符串str從第xx位置開始,y字符串的子字符串替換爲字符串str lower(str)將全部的字符串變爲小寫 upper(str)將全部的字符串變爲大寫 left(str,x)返回字符串中最左邊的x個字符 rigth(str,y)返回字符串中最右邊的x個字符 lpad(str,n,pad)用字符串pad對str最左邊進行填充,直到長度爲n個字符串長度 rpad(str,n,pad)用字符串pad對str最右邊進行填充,直到長度爲n個字符串長度 trim(str) 去掉左右兩邊的空格 ltrim(str) 去掉字符串str左側的空格 rtrim(str) 去掉字符串str右側的空格 repeat(str,x) 返回字符串str重複x次 replace(str,a,b)將字符串的的a替換成b strcmp(s1,s2) 比較字符串s1和s2 substring(s,x,y)返回字符串指定的長度 *length(str) 返回值爲字符串str 的長度 數值函數 ----------------------------------------------------- *abs(x) 返回x的絕對值 ceil(x) 返回大於x的最小整數值 floor(x) 返回小於x的最大整數值 mod(x,y) 返回x/y的取餘結果 rand() 返回0~1之間的隨機數 *round(x,y)返回參數x的四捨五入的有y位小數的值 truncate(x,y) 返回x截斷爲y位小數的結果 日期和時間函數 --------------------------------------------------- curdate() 返回當前日期,按照’YYYY-MM-DD’格式 curtime() 返回當前時間,當前時間以'HH:MM:SS' *now() 返回當前日期和時間, *unix_timestamp(date) 返回date時間的unix時間戳 from_unixtime(unix_timestamp[,format]) 返回unix時間的時間 week(date) 返回日期是一年中的第幾周 year(date) 返回日期的年份 hour(time) 返回time的小時值 minute(time) 返回日time的分鐘值 monthname(date) 返回date的月份 *date_fomat(date,fmt) 返回按字符串fmt格式化日期date值 date_add(date,INTERVAL,expr type) 返回一個日期或者時間值加上一個時間間隔的時間值 *datediff(expr,expr2) 返回起始時間和結束時間的間隔天數 //統計時間戳647583423距離當前時間相差天數(生日天數(不考慮年份)) mysql> select datediff(date_format(from_unixtime(647583423),"2017-%m-%d %h:%i:%s"),now()); 其餘經常使用函數 ------------------------------------------------------ *database() 返回當前數據庫名 version() 返回當前服務器版本 user() 返回當前登錄用戶名 inet_aton 返回當前IP地址的數字表示 inet_aton("192.168.80.250"); inet_ntoa(num) 返回當前數字表示的ip inet_ntoa(3232256250); *password(str) 返回當前str的加密版本 *md5(str) 返回字符串str的md5值 5. MySQL的事務處理 關閉自動提交功能(開啓手動事務) mysql> set autocommit=0; 從表t1中刪除了一條記錄 mysql> delete from t1 where id=11; 此時作一個p1還原點: mysql> savepoint p1; 再次從表t1中刪除一條記錄: mysql> delete from t1 where id=10; 再次作一個p2還原點: mysql> savepoint p2; 此時恢復到p1還原點,固然後面的p2這些還原點自動會失效: mysql> rollback to p1; 退回到最原始的還原點: mysql> rollback; 回滾 開啓自動事務提交(關閉手動事務) mysql> set autocommit=1; 6. MySQL的觸發器 格式:一、觸發器的定義: CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt 說明: # trigger_name:觸發器名稱 # trigger_time:觸發時間,可取值:BEFORE或AFTER # trigger_event:觸發事件,可取值:INSERT、UPDATE或DELETE。 # tb1_name:指定在哪一個表上 # trigger_stmt:觸發處理SQL語句。 示例: mysql> delimiter $$ mysql> create trigger del_stu before delete on stu for each row -> begin -> insert into stu_bak values(old.id,old.name,old.sex,old.age,old.addtime); -> end; -> $$ Query OK, 0 rows affected (0.05 sec) mysql> delimiter ; 7. mysql日誌 開啓日誌: 在mysql配置文件中開啓:log-bin=mysql-bin 查看bin-log日誌: mysql>show binary logs; 查看最後一個bin-log日誌: mysql>show master status; 此時就會多一個最新的bin-log日誌 mysql>flush logs; 查看最後一個bin日誌. mysql>show master status; mysql>reset master; 清空全部的bin-log日誌 執行查看bin-log日誌 備份數據: mysqldump -uroot -pwei test -l -F '/tmp/test.sql' 其中:-F即flush logs,能夠從新生成新的日誌文件,固然包括log-bin日誌 // Linux關閉MySQL的命令 $mysql_dir/bin/mysqladmin -uroot -p shutdown // linux啓動MySQL的命令 $mysql_dir/bin/mysqld_safe & 八、有關慢查詢操做: 開戶和設置慢查詢時間: vi /etc/my.cnf log_slow_queries=slow.log long_query_time=5 查看設置後是否生效 mysql> show variables like "%quer%"; 慢查詢次數: mysql> show global status like "%quer%"; 9 數據庫的恢復 1. 首先恢復最後一次的備份完整數據 [root@localhost mnt]# mysql -u root -p mydemo<mydemo_2017-7-26.sql Enter password: 2. 查看bin-log日誌 [root@localhost data]# mysqlbinlog --no-defaults mysql-bin.000009; 查找到恢復的節點 3. 執行bin-log日誌文件,恢復最後一塊的增量數據。 [root@localhost data]# mysqlbinlog --no-defaults --stop-position="802" mysql-bin.000009|mysql -u root -p123456 mydemo;