MySQL學(xué)習(xí)——數(shù)據(jù)操作與事務(wù)控制

一.數(shù)據(jù)操作語言

1.主要用來實現(xiàn)對數(shù)據(jù)庫表中的數(shù)據(jù)進行操作圈澈。
2.數(shù)據(jù)操作語言主要包括如下幾種:
增加行數(shù)據(jù):使用INSERT語句實現(xiàn)
修改行數(shù)據(jù):使用UPDATE語句實現(xiàn)
刪除行數(shù)據(jù):使用DELETE語句實現(xiàn)

進入數(shù)據(jù)庫:
  • use 數(shù)據(jù)庫名稱谈为;


    示例
1.插入數(shù)據(jù)
  • 使用INSERT語句向表中插入數(shù)據(jù)
    INSERT INTO table [(column [, column...])]
    VALUES (value [, value...]);

1.采用這種語法一次只能追加一條記錄;
2.column部分叫做列名列表鼠次,value部分叫做值列表,列名列表和值列表必須在個數(shù)及數(shù)據(jù)類型上保持一致;
3.列名列表部分可以省略堤如,如果省略毙芜,默認(rèn)包括該表的所有列忽媒,列的順序為使用 desc 表名 命令所查看的順序;
4.列名列表部分也可以指定部分非空的列腋粥,注意值列表必須和列名列表對應(yīng)晦雨;
5.字符和日期型數(shù)據(jù)必須要用單引號括起來。
例子:


示例
  • 插入空值NULL
    1.隱含法: 在列名列表中忽略該列


    示例

    2.顯示法: 指定 NULL關(guān)鍵字或者''


    示例
  • 插入日期值
    SYSDATE() 函數(shù)記錄當(dāng)前日期和時間


    示例

    示例1
  • 批量插入數(shù)據(jù)

使用insert語句可以一次性地向表批量插入多條記錄

INSERT INTO 表名[(字段列表)] VALUES
(值列表1),
(值列表2),

(值列表n);
例子:
INSERT INTO EMP(EMPNO, ENAME, JOB, SAL) VALUES
('8881', '張三', '部門經(jīng)理', 6000),
('8882', '李四', '職員', 3000),
('8883', '王五', '職員', 3500),
('8884' ,'趙六', '部門經(jīng)理', 6500),
('8885', '高七', '職員', 2500),
('8886', '馬八', '職員', 3100),
('8887', '錢九', '部門經(jīng)理', 5000),
('8888', '孫十', '職員', 2800);

  • 通過子查詢插入多行數(shù)據(jù)
    INSERT INTO 表名[(列名1[,列名2隘冲,…闹瞧,列名n])] 子查詢 ;

ps:不必書寫values子句
INSERT子句和數(shù)據(jù)類型必須和子查詢中列的數(shù)量和類型相匹配中列的數(shù)量

  • 例子:創(chuàng)建manager表


    創(chuàng)建表

    向manager表中插入職位為MANAGER的記錄


    插入
3.修改數(shù)據(jù)

修改數(shù)據(jù)主要用來按照指定條件修改表中某些行的列數(shù)據(jù)展辞。
修改數(shù)據(jù)使用UPDATE子句完成:
UPDATE table
SET column = value [, column = value]
[WHERE condition];

1.WHERE子句用來限定修改哪些行奥邮。
2.SET子句用來限定修改哪些列。
3.WHERE子句中的更新條件是一個邏輯表達式罗珍,通常需要使用到關(guān)系運算符和邏輯運算符洽腺,返回True或者False。


功能

關(guān)系運算符
  • 使用 WHERE 子句指定要修改的記錄
    把員工編號為7782的部門編號修改為20


    修改
  • 如果要修改所有記錄覆旱,WHERE子句可以忽略
    把所有員工的部門編號修改為20


    修改
  • 一次修改多列
    把部門編號為10的員工已脓,部門編號調(diào)整為20,工資增加100


    修改多列
4.刪除數(shù)據(jù)

刪除數(shù)據(jù)主要用來按照指定條件從表中刪除某些行

  • 使用 DELETE 語句刪除表中滿足條件的行記錄
    DELETE FROM table
    [WHERE condition];
  • 刪除選中記錄
    刪除職位是CLERK的員工記錄
    DELETE FROM emp
    WHERE job = 'CLERK';
  • 刪除全部記錄
    刪除所有員工記錄
    DELETE FROM emp;
  • 截斷表
    截斷表語法:
    TRUNCATE TABLE table;
    TRUNCATE TABLE emp;
  • TRUNCATE和DELETE區(qū)別
    TRUNCATE是DDL通殃,只能刪除表中所有記錄度液,釋放存儲空間厕宗,使用ROLLBACK不可以回滾。
    DELETE是DML堕担,可以刪除指定記錄已慢,不釋放存儲空間,使用ROLLBACK可以回滾霹购。

二.事務(wù)處理

  • 事務(wù)(Transaction)概念
  • 事務(wù):也稱工作單元佑惠,是由一個或多個SQL語句所組成的操作序列,這些SQL語句作為一個完整的工作單元齐疙,要么全部執(zhí)行成功膜楷,要么全部執(zhí)行失敗缝裤。在數(shù)據(jù)庫中嬉挡,通過事務(wù)來保證數(shù)據(jù)的一致性荞胡。
  • 事務(wù)處理語言:Transaction Process Language ,簡稱TPL郁妈,主要用來對組成事務(wù)的DML語句的操作結(jié)果進行確認(rèn)或取消厘擂。確認(rèn)也就是使DML操作生效鼓寺,使用提交(COMMIT)命令實現(xiàn)配并;取消也就是使DML操作失效光酣,使用回滾(ROLLBACK)命令實現(xiàn)勾缭。
  • 通過事務(wù)的使用揍障,能防止數(shù)據(jù)庫中出現(xiàn)數(shù)據(jù)不一致現(xiàn)象。如兩個銀行賬戶進行轉(zhuǎn)賬俩由,涉及到兩條更新操作毒嫡,這兩條更新操作只允許全部成功或失敗,否則數(shù)據(jù)會出現(xiàn)不一致的現(xiàn)象幻梯。
  • 事務(wù)組成
    在數(shù)據(jù)庫中兜畸,事務(wù)由一組相關(guān)的DML或SELECT語句,加上一個TPL語句(COMMIT礼旅、ROLLBACK)或一個DDL語句(CREATE膳叨、ALTER、DROP痘系、TRUNCATE等)或一個DCL(GRANT菲嘴、REVOKE)語句。
    例:如下語句組成兩個事務(wù)汰翠。
    INSERT….
    UPDATE….
    DELETE….
    SELECT….
    INSERT…
    COMMIT;-- 前6條語句龄坪,組成第1個事務(wù)
    UPDATE…
    DELETE….
    CREATE… ;--后3條語句,組成第2個事務(wù)
1.事務(wù)特性

事務(wù)特征可用四個字母的縮寫表示:即ACID

  • 原子性(Atomicity)
    事務(wù)就像“原子”一樣复唤,不可被分割健田,組成事務(wù)的DML操作語句要么全成功,要么全失敗佛纫,不可能出現(xiàn)部分成功部分失敗的情況妓局。
  • 一致性(Consistency)
    一旦事務(wù)完成总放,不管是成功的,還是失敗的好爬,整個系統(tǒng)處于數(shù)據(jù)一致的狀態(tài)局雄。
  • 隔離性(Isolation)
    一個事務(wù)的執(zhí)行不會被另一個事務(wù)所干擾。比如兩個人同時從一個賬戶從取錢存炮,通過事務(wù)的隔離性確保賬戶余額的正確性炬搭。
  • 持久性(Durability)
    也稱為永久性,指事務(wù)一旦提交穆桂,對數(shù)據(jù)的改變就是永久的宫盔,不可以再被回滾。
2.處理事務(wù)的方法

MySQL的事務(wù)處理主要有兩種方法
1.用begin,rollback,commit來實現(xiàn)
begin開始一個事務(wù)
rollback事務(wù)回滾
commit 事務(wù)提交
2.直接用set來改變MySQL的自動提交模式 MySQL默認(rèn)是自動提交的享完,也就是你提交一個sql灼芭,就直接執(zhí)行!
可以通過
set autocommit = 0 禁止自動提交
set autocommit = 1 開啟自動提交
來實現(xiàn)事務(wù)的處理驼侠。
但要注意當(dāng)用set autocommit = 0 的時候姿鸿,以后所有的sql都將作為事務(wù)處理谆吴,直到用commit確認(rèn)或 rollback結(jié)束倒源,注意當(dāng)結(jié)束這個事務(wù)的同時也開啟了新的事務(wù)!按第一種方法只將當(dāng)前的做為一個事務(wù)!

3.隱式結(jié)束
  • 隱式提交:當(dāng)下列任意一種情況發(fā)生時句狼,會發(fā)生隱式提交
    1.執(zhí)行一個DDL(CREATE笋熬、ALTER、DROP腻菇、TRUNCATE胳螟、RENAME)語句;
    2.執(zhí)行一個DCL(GRANT筹吐、REVOKE)語句糖耸;

  • 隱式回滾:當(dāng)下列任意一種情況發(fā)生時,會發(fā)生隱式回滾
    1.客戶端強行退出
    2.客戶端連接到服務(wù)器端異常中斷
    3.系統(tǒng)崩潰

  • 設(shè)置保存點:
    如果在一個事務(wù)內(nèi)丘薛,想要回滾到指定位置嘉竟,不是回滾到事務(wù)的起始點,可以通過保存點(SAVEPOINT)來實現(xiàn)洋侨。
    SAVEPOINT savepointname舍扰;--定義一個保存點語句;
    ROLLBACK TO savepointname;--回滾到指定保存點
    注意:如上兩條語句不結(jié)束事務(wù)的執(zhí)行希坚。

  • 開始事務(wù)操作:
    BEGIN边苹;

  • 撤銷DELETE操作:
    DELETE FROM test;
    ROLLBACK;

  • 定義insert_a保存點:
    INSERT INTO TEST VALUES('A');
    SAVEPOINT INSERT_a;

  • 定義insert_b保存點:
    INSERT INTO TEST VALUES('B');
    SAVEPOINT INSERT_b;

  • 撤銷操作到insert_b保存點:
    INSERT INTO TEST VALUES('C');
    ROLLBACK TO INSERT_b;
    DELETE FROM test WHERE test_str='A';

  • 將所有修改寫入數(shù)據(jù)庫
    COMMIT;

  • 所有操作已經(jīng)COMMIT提交,不能回滾
    ROLLBACK;
    (此文章僅作為個人學(xué)習(xí)筆記使用裁僧,如有錯誤歡迎指正~)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末个束,一起剝皮案震驚了整個濱河市慕购,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌茬底,老刑警劉巖脓钾,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異桩警,居然都是意外死亡可训,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門捶枢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來握截,“玉大人,你說我怎么就攤上這事烂叔〗靼” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵蒜鸡,是天一觀的道長胯努。 經(jīng)常有香客問我,道長逢防,這世上最難降的妖魔是什么叶沛? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮忘朝,結(jié)果婚禮上灰署,老公的妹妹穿的比我還像新娘。我一直安慰自己局嘁,他們只是感情好溉箕,可當(dāng)我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著悦昵,像睡著了一般肴茄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上但指,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天寡痰,我揣著相機與錄音,去河邊找鬼枚赡。 笑死氓癌,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的贫橙。 我是一名探鬼主播贪婉,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼卢肃!你這毒婦竟也來了疲迂?” 一聲冷哼從身側(cè)響起才顿,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎尤蒿,沒想到半個月后郑气,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡腰池,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年尾组,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片示弓。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡讳侨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出奏属,到底是詐尸還是另有隱情跨跨,我是刑警寧澤,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布囱皿,位于F島的核電站勇婴,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏嘱腥。R本人自食惡果不足惜耕渴,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望爹橱。 院中可真熱鬧萨螺,春花似錦窄做、人聲如沸愧驱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽组砚。三九已至,卻和暖如春掏颊,著一層夾襖步出監(jiān)牢的瞬間糟红,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工乌叶, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留盆偿,地道東北人。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓准浴,卻偏偏與公主長得像事扭,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子乐横,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,629評論 2 354

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

  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當(dāng)在唯一索引所對應(yīng)的列上鍵入重復(fù)值時求橄,會觸發(fā)此異常今野。 O...
    我想起個好名字閱讀 5,308評論 0 9
  • 什么是數(shù)據(jù)庫? 數(shù)據(jù)庫是存儲數(shù)據(jù)的集合的單獨的應(yīng)用程序罐农。每個數(shù)據(jù)庫具有一個或多個不同的API条霜,用于創(chuàng)建,訪問涵亏,管理...
    chen_000閱讀 4,035評論 0 19
  • 一宰睡、數(shù)據(jù)操作語言 Date Manipulation Language,簡稱DML气筋,主要用來實現(xiàn)對數(shù)據(jù)庫表中的...
    遼A丶孫悟空閱讀 918評論 0 38
  • 1. SQL 簡介 SQL 的目標(biāo) 理想情況下夹厌,數(shù)據(jù)庫語言應(yīng)允許用戶: 建立數(shù)據(jù)庫和關(guān)系結(jié)構(gòu) 完成基本數(shù)據(jù)管理任務(wù)...
    板藍根plank閱讀 2,344評論 0 11
  • 尚鵬老師是一名純理科生學(xué)霸(清華研究生),很注重數(shù)學(xué)邏輯的培養(yǎng)裆悄。今天上午分享的主題也是全課程數(shù)學(xué)六大課型的實踐...
    MrZhu123閱讀 684評論 0 3