Mysql數(shù)據(jù)庫高級用法之視圖、事務(wù)、索引、自連接、用戶管理實(shí)例分析
本文實(shí)例講述了Mysql數(shù)據(jù)庫高級用法之視圖、事務(wù)、索引、自連接、用戶管理。分享給大家供大家參考,具體如下:
視圖
視圖是對若干張基本表的引用,一張?zhí)摫?,只查詢語句執(zhí)行結(jié)果的字段類型和約束,不存儲具體的數(shù)據(jù)(基本表數(shù)據(jù)發(fā)生了改變,視圖也會跟著改變),方便操作,特別是查詢操作,減少復(fù)雜的SQL語句,增強(qiáng)可讀性。
1.————創(chuàng)建視圖:
create view 視圖名稱(一般以v_開頭) as 查詢語句;
2.————查看視圖:
select * from 視圖名稱;
3.————刪除視圖:
drop view 視圖名稱;
事務(wù)
1.特性:四大特性ACID
(1)原子性(Atomicity):一個(gè)事務(wù)必須被視為一個(gè)不可分割的最小工作單元,整個(gè)事務(wù) 中的所有操作要么全部提交成功,要么全部失敗回滾,對于一個(gè)事務(wù)來說,不可能只執(zhí)行其中的一部分操作。
(2)一致性(Consistency):數(shù)據(jù)庫總是從一個(gè)一致性的狀態(tài)轉(zhuǎn)換到另一個(gè)一致性的狀態(tài)。
(3)隔離性(Isolation):一個(gè)事務(wù)所做的修改在最終提交以前,對其他事務(wù)是不可見的。
(4)持久性(Durability):一旦事務(wù)提交,則其所做的修改會永久保存到數(shù)據(jù)庫。
2.使用:
(1)開啟事務(wù):開啟事務(wù)后執(zhí)行修改命令,變更會為護(hù)到本地緩存,而不是物理表中。
begin;
或者start transaction;
(2)回滾事務(wù):放棄緩存中變更的數(shù)據(jù),表示事務(wù)執(zhí)行失敗,回到開始事務(wù)的狀態(tài)。
rollback;
(3)提交事務(wù):將緩存中的數(shù)據(jù)變更維護(hù)到物理表中。
commit;
索引
索引是一種特殊的文件(InnoDB數(shù)據(jù)表上的索引是表空間的一個(gè)組成部分),它們包含著對數(shù)據(jù)表里所有記錄的位置信息,更通俗的說,數(shù)據(jù)庫索引好比是一本書前面的目錄,能加快數(shù)據(jù)庫的查詢速度。
1.使用:
(1)————查看索引:
show index from 表名;
(2)————創(chuàng)建索引:
create index 索引名稱 on 表名(字段名稱(長度));
(3)————刪除索引:
drop index 索引名稱 on 表名;
2.驗(yàn)證性能:
(1)開啟運(yùn)行時(shí)間檢測:
set profiling=1;
(2)查找第十萬條數(shù)據(jù):
select * from test_index where title='ha-99999';
(3)為表建立索引:
create index title_index on test_index(title(10));
(4)查找第十萬條數(shù)據(jù):
select * from test_index where title='ha-99999';
(5)查看執(zhí)行時(shí)間:
show profiles;
總結(jié):索引可以極大提升查詢速度,但是創(chuàng)建索引的時(shí)間比查詢的速度要慢很多,所以 數(shù)據(jù)表經(jīng)常更新時(shí),不適合使用索引,當(dāng)數(shù)據(jù)表數(shù)據(jù)很大時(shí),并且長時(shí)間不更新時(shí),建 議使用索引,其他情況不建議使用。
用戶管理
1.————查看用戶:
select host,user,authentication_string from user;
————查看用戶權(quán)限:
show grants for 用戶名@主機(jī);
2.————創(chuàng)建用戶并賦予權(quán)限:'
grant 權(quán)限名稱 on 數(shù)據(jù)庫名.* to ‘用戶名'@'主機(jī)' identified by ‘密碼';
3.————修改權(quán)限:
grant 權(quán)限名稱 on 數(shù)據(jù)庫名.* to ‘用戶名'@'主機(jī)' where grant option;
刷新權(quán)限:
flush privileges;
4.————修改密碼:
update user set authentication_string=password(‘新密碼') where user='用戶名';
5.————刪除用戶:
卸載:
drop drop user ‘用戶名'@'主機(jī)';
手動刪除:
delete from user where user='用戶名';
刷新權(quán)限:
flush privileges;
自連接
將多張相似表的數(shù)據(jù)匯總到一個(gè)表中,將自己與自己相連接進(jìn)行查詢。
1.————用法:
select * from 表名 as 別名1 inner join 表名 as 別名2 on 條件;
2.————案例:
aid為編號,pid為所屬編號
查詢山西省的所有城市:
select city.* from areas as cityinner join areas as province on city.pid=province.aidwhere province.atitle='山西省';
更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《MySQL查詢技巧大全》、《MySQL常用函數(shù)大匯總》、《MySQL日志操作技巧大全》、《MySQL事務(wù)操作技巧匯總》、《MySQL存儲過程技巧大全》及《MySQL數(shù)據(jù)庫鎖相關(guān)技巧匯總》
希望本文所述對大家MySQL數(shù)據(jù)庫計(jì)有所幫助。
相關(guān)文章
老鳥帶你開發(fā)專業(yè)規(guī)范的MySQL啟動腳本
這篇文章主要介紹了老鳥帶你開發(fā)專業(yè)規(guī)范的MySQL啟動腳本,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09Mysql??DATEDIFF函數(shù)用法總結(jié)示例詳解
MySQL DATEDIFF()函數(shù)是MySQL中常見的日期函數(shù)之一,它主要用于計(jì)算兩個(gè)日期之間的差值,單位可以是天、周、月、季度和年,DATEDIFF函數(shù)用于返回兩個(gè)日期的天數(shù),這篇文章主要介紹了Mysql??DATEDIFF函數(shù),包括語法格式和示例代碼講解,需要的朋友可以參考下2023-03-03MYSQL必知必會讀書筆記第三章之顯示數(shù)據(jù)庫
MySQL是一種開放源代碼的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS),MySQL數(shù)據(jù)庫系統(tǒng)使用最常用的數(shù)據(jù)庫管理語言--結(jié)構(gòu)化查詢語言(SQL)進(jìn)行數(shù)據(jù)庫管理。接下來通過本文給大家介紹MYSQL必知必會讀書筆記第三章之顯示數(shù)據(jù)庫,感興趣的朋友參考下吧2016-05-05mysql 主從復(fù)制如何跳過報(bào)錯(cuò)
這篇文章主要介紹了mysql 主從復(fù)制如何跳過報(bào)錯(cuò),幫助大家更好的理解和使用MySQL 數(shù)據(jù)庫,感興趣的朋友可以了解下2020-10-10MySQL server has gone away的問題解決
本文主要介紹了MySQL server has gone away的問題解決,意思就是指client和MySQL server之間的鏈接斷開了,下面就來介紹一下幾種原因及其解決方法,感興趣的可以了解一下2024-07-07