MYSQL 多表&事務(wù)

1、多表查詢
2译红、事務(wù)
3、DCL

多表查詢:
*查詢語法
    select 
          列名列表
    from 
          表名列表
    where
        ....

  select * from emp,dept
  ---笛卡爾積 A , B 

笛卡爾積:
有兩個集合A,B 兴溜,取這兩個集合的所有組成情況侦厚。
要完成多表查詢,需要消除無用的數(shù)據(jù)
多表查詢的分類:
1拙徽、內(nèi)鏈接查詢
*1.隱式內(nèi)連接:使用where條件消除無用的數(shù)據(jù)


image.png

在以后寫sql中一行寫一個方便注釋


image.png

* 2.顯式內(nèi)連接:
image.png
        語法:select 字段列表 from 表名1 inner join 表名2 on 條件

inner可以省略
3.內(nèi)鏈接查詢
-1刨沦、從那些表中查詢數(shù)據(jù)
-2.條件是什么
-3.查詢哪些字段

2、外鏈接查詢
1.左外連接
* select 字段列表 from 表1 left outer join 表2 on 條件
* 查詢的是左表所有數(shù)據(jù)以及其交集部分

      2.右外連接
    *  select 字段列表 from 表1 right outer join 表2 on 條件
      *查詢的右表的所有記錄以及交集部分

3膘怕、子查詢
概念:查詢中嵌套查詢想诅,稱嵌套的查詢?yōu)樽硬樵?/p>

image.png

子查詢的不同情況:
1.子查詢的結(jié)果是單行單列的:
子查詢可以作為條件,可以使用運算符去判斷。運算符:> >= < <= =


image.png

2.子查詢的結(jié)果是多行單列的:
子查詢可以作為條件来破,使用運算符in來判斷


image.png
  3.子查詢的結(jié)果是多行多列的:
  子查詢可以作為一張?zhí)摂M表篮灼。參與查詢
image.png

image.png

也可以通過普通查詢完成這個需求查詢,可能更好理解一下徘禁。

事務(wù)

1诅诱、事務(wù)的基本介紹

  * 概念:
      如果一個包含多個步驟的業(yè)務(wù)操作,被事務(wù)管理送朱,那么這些操作要么同時成功娘荡,要么同時失敗。
image.png

操作:

      開啟事務(wù):start transaction驶沼;
      回滾:rollback;
      提交:commit炮沐;
image.png

在MYSQL數(shù)據(jù)庫中事務(wù)默認(rèn)提交

     事務(wù)提交的兩種方式:
         自動提交:
            mysql就是自動提交的,
                *一條DML(增刪改)語句會自動提交一次事務(wù)
         手動提交:
                Oracle數(shù)據(jù)庫默認(rèn)是手動提交事務(wù)的
                需要先開啟事務(wù)商乎,再提交 
               
          修改事務(wù)的默認(rèn)提交方式
               查看事務(wù)的提交方式:select @@autocommit央拖;--1代表自動提交,   0 代表手動提交
                   修改默認(rèn)提交方式:set @@autocommit = 0鹉戚;
                   這個時候?qū)慏ML不寫commit鲜戒,是不會提交的

2、事務(wù)的四大特征

  1抹凳、原子性:是不可分割的最小操作單位遏餐,要么同時成功,要么同時失敗赢底。
  2失都、持久性:當(dāng)事務(wù)提交或回滾后,數(shù)據(jù)庫會持久化的保存數(shù)據(jù)幸冻。
  3粹庞、隔離性:多個事務(wù)之間。相互獨立洽损。
  4庞溜、一致性:事務(wù)操作前后數(shù)據(jù)總量不變。

3碑定、事務(wù)的隔離級別(了解)

      概念:多個事務(wù)之間是隔離的流码,相互獨立的,但是如果多個事務(wù)延刘,操作同一批數(shù)據(jù)漫试,則會引發(fā)一些問題,設(shè)置不同的隔離級別就可以解決這些問題碘赖。
      存在的問題:
              1.臟讀:一個事務(wù)讀取到另一個事務(wù)中沒有提交的數(shù)據(jù)驾荣。
              2.不可重復(fù)讀(虛讀):在同一個事務(wù)中兩次讀取到的數(shù)據(jù)不一樣外构。
              3.幻讀:一個事務(wù)操作(DML)數(shù)據(jù)表中所有的記錄,另一個事務(wù)添加了一條數(shù)據(jù)秘车,則第一個事務(wù)查詢不到自己的修改典勇。
      隔離級別:
            1.read uncommitted:讀未提交
                產(chǎn)生的問題:臟讀、不可重復(fù)讀叮趴、幻讀
            2.read committed:讀已提交(Oracle默認(rèn))
                產(chǎn)生的問題:不可重復(fù)度割笙、幻讀
            3.repeatable read :可重復(fù)度(MYSQL默認(rèn))
                產(chǎn)生的問題:幻讀
            4.serializable:串行化
                可以解決所有的問題

注意:隔離級別從小到大,安全性越來越高眯亦,但是效率越來越低伤溉,

     數(shù)據(jù)庫查詢隔離級別:
          * select @@tx_isolation;
      數(shù)據(jù)庫設(shè)置隔離級別:
          * set global transaction isolation level 級別字符串;

演示:

DCL :
  SQL 分類:
    1.DDL:操作數(shù)據(jù)庫和表
    2.DML:操作增刪改表中的數(shù)據(jù)
    3.DQL:查詢表中的數(shù)據(jù)
    4.DCL:管理用戶妻率,并對用戶進(jìn)行授權(quán)操作

*DBA:數(shù)據(jù)庫管理員

     DCL:管理用戶乱顾,并對用戶進(jìn)行授權(quán)操作
      1.管理用戶
              1、添加用戶:
                      語法:CREATE USER '用戶名'@'主機名' IDENTIFIED BY '密碼';
              2宫静、刪除用戶:
                    DROP USER '用戶名'@'主機名'走净;
              3、修改用戶密碼:
                    UPDETE USER SET PASSWORD = PASSWORD('新密碼') WHERE USER = '用戶名'孤里;
                    SET PASSWORD FOR '用戶名'@'主機名' = PASSWORD ('新密碼');
              4伏伯、查詢用戶:切換到mysql數(shù)據(jù)庫(USE mysql;)--->查詢USER表(select * from user)
image.png

mysql 中忘記了root用戶密碼

    1、cmd ----->net stop mysql     停止mysql的服務(wù)(需要管理員運行該CMD)
    2捌袜、使用無驗證方式啟動mysql服務(wù):mysqld --skip-grant-tables
    3说搅、重新打開一個cmd窗口,輸入mysql虏等,敲回車弄唧,進(jìn)入SQL,使用修改用戶密碼方式修改root密碼
    UPDETE USER SET PASSWORD = PASSWORD('新密碼') WHERE USER = '用戶名'霍衫;
    4候引、修改完畢,關(guān)閉所有cmd窗口敦跌,然后右鍵打開任務(wù)管理器背伴,找到mysqld.exe服務(wù),右鍵手動關(guān)閉服務(wù)
    5峰髓、再打開cmd(管理員)---->啟動mysql服務(wù)  net start mysql
注意:%通配符,表示可以在任意主機使用用戶登錄數(shù)據(jù)庫

權(quán)限管理:

    1息尺、查詢權(quán)限:
            SHOW GRANTS FOR '用戶名'@'主機名';
    2携兵、授予權(quán)限:
            GRANT 權(quán)限列表(可以寫多個權(quán)限)ON  數(shù)據(jù)庫名.表名 TO '用戶名'@'主機名';
            GRANT ALL ON  *.* TO '用戶名'@'主機名';     -- 給這個用戶所有權(quán)限在任意數(shù)據(jù)庫上
    3、撤銷權(quán)限:
            revoke 權(quán)限列表 on 數(shù)據(jù)庫名.表名 from '用戶名'@'主機名';
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末搂誉,一起剝皮案震驚了整個濱河市徐紧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖并级,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拂檩,死亡現(xiàn)場離奇詭異,居然都是意外死亡嘲碧,警方通過查閱死者的電腦和手機稻励,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來愈涩,“玉大人望抽,你說我怎么就攤上這事÷耐瘢” “怎么了煤篙?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長毁腿。 經(jīng)常有香客問我辑奈,道長,這世上最難降的妖魔是什么已烤? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任鸠窗,我火速辦了婚禮,結(jié)果婚禮上草戈,老公的妹妹穿的比我還像新娘塌鸯。我一直安慰自己,他們只是感情好唐片,可當(dāng)我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布丙猬。 她就那樣靜靜地躺著,像睡著了一般费韭。 火紅的嫁衣襯著肌膚如雪茧球。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天星持,我揣著相機與錄音抢埋,去河邊找鬼。 笑死督暂,一個胖子當(dāng)著我的面吹牛揪垄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播逻翁,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼饥努,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了八回?” 一聲冷哼從身側(cè)響起酷愧,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤驾诈,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后溶浴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體乍迄,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年士败,在試婚紗的時候發(fā)現(xiàn)自己被綠了闯两。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡拱烁,死狀恐怖生蚁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情戏自,我是刑警寧澤邦投,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站擅笔,受9級特大地震影響志衣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜猛们,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一念脯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧弯淘,春花似錦绿店、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至态鳖,卻和暖如春转培,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背浆竭。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工浸须, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人邦泄。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓删窒,卻偏偏與公主長得像,于是被迫代替她去往敵國和親顺囊。 傳聞我的和親對象是個殘疾皇子易稠,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內(nèi)容