第3章(重點3課時0919)

DML數(shù)據(jù)操作語言:

insert(單條/多條)? ?添加

update? ?修改

delete? ? 刪除

數(shù)據(jù)添加 insert

insert into 表名(字段列表可選項,各字段用逗號分隔) values(每個字段的值,中間用逗號分隔)

比如向dept表里插入一條數(shù)據(jù)

第一種帶有字段列表的

insert into dept (DNAME,DEPTNO,LOC) values('java17班',60,'shenyang');

不帶字段列表的

insert into dept values(70,'java18','shenyang');

不插入所有字段

帶有字段列表的远寸,字段可以部分插入

insert into dept(deptno,dname)

values(90,'java90');

插入空值

insert into dept

values(91,'java100',null);

批量插入

1)直接批量插入

insert into dept

values(92,'java92',null),(93,'java93',null);

2)子查詢插入

首選建一個空表,跟dept表結構相同

create table 新表名 as 子查詢

create table dept2 as select * from dept where 1=0;? ?(where條件如果不成立,就只復制表結構)

create table dept3 as select * from dept;(where條件如果成立坡慌,就復制表結構和數(shù)據(jù))

可以復制表結構的部分字段

create table dept4 as select deptno,dname from dept where 1=0;

create table dept4 as select deptno,dname from dept where deptno<=40;

數(shù)據(jù)修改 update

修改刪除一定要謹慎

update 表名 set 字段名1=字段值1状原,字段名2=字段值2,.....字段名n=字段值n

where 條件;

例:update dept

set dname='java70',loc='hangzhou'

where deptno=70;

修改主鍵

update dept?

set deptno=71

where deptno=70;

數(shù)據(jù)刪除 delete

delete from 表名 where 條件;

delete from dept4 where deptno>40;

截斷表TRUNCATE(了解斜脂,不常用)

TRUNCATE?table 表名;


?TRUNCATE和DELETE區(qū)別

–TRUNCATE是DDL抓艳,只能刪除表中所有記錄,釋放存儲空間帚戳,使用ROLLBACK不可以回滾玷或。

–DELETE是DML,可以刪除指定記錄销斟,不釋放存儲空間,使用ROLLBACK可以回滾椒舵。

事務(*)

?事務(Transaction)概念

事務:也稱工作單元蚂踊,是由一個或多個SQL語句所組成的操作序列,這些SQL語句作為一個完整的工作單元笔宿,要么全部執(zhí)行成功犁钟,要么全部執(zhí)行失敗。在數(shù)據(jù)庫中泼橘,通過事務來保證數(shù)據(jù)的一致性涝动。

–事務處理語言:

Transaction Process Language ,簡稱TPL,主要用來對組成事務的DML語句的操作結果進行確認或取消炬灭。確認也就是使DML操作生效醋粟,使用提交(COMMIT)命令實現(xiàn);取消也就是使DML操作失效重归,使用回滾(ROLLBACK)命令實現(xiàn)米愿。

–通過事務的使用,能防止數(shù)據(jù)庫中出現(xiàn)數(shù)據(jù)不一致現(xiàn)象鼻吮。如兩個銀行賬戶進行轉(zhuǎn)賬育苟,涉及到兩條更新操作,這兩條更新操作只允許全部成功或失敗椎木,否則數(shù)據(jù)會出現(xiàn)不一致的現(xiàn)象违柏。

?事務特征(*)

可用四個字母的縮寫表示:即ACID

–原子性(Atomicity)

?事務就像“原子”一樣博烂,不可被分割,組成事務的DML操作語句要么全成功漱竖,要么全失敗禽篱,不可能出現(xiàn)部分成功部分失敗的情況。

–一致性(Consistency)

?一旦事務完成闲孤,不管是成功的谆级,還是失敗的,整個系統(tǒng)處于數(shù)據(jù)一致的狀態(tài)讼积。

–隔離性(Isolation)

?一個事務的執(zhí)行不會被另一個事務所干擾肥照。比如兩個人同時從一個賬戶從取錢,通過事務的隔離性確保賬戶余額的正確性勤众。

–持久性(Durability)

?也稱為永久性舆绎,指事務一旦提交,對數(shù)據(jù)的改變就是永久的们颜,不可以再被回滾吕朵。

事務操作

1.用begin,rollback,commit來實現(xiàn)

begin開始一個事務

rollback事務回滾

commit 事務提交

事務支持

1)數(shù)據(jù)引擎 INNODB 支持事務

show variables like 'autocommit';? 開關為on 默認自動提交

如果想測試事務,先將開關關掉

2)set autocommit =0? ?禁止自動提交

如果不好用窥突,就設置成全局的

set @@global.autocommit=0;

字段上設置主鍵可以rollback回去

(set? autocommit =1? 開啟自動提交)

show variables like 'autocommit';? 開關為off

?事務組成

–在數(shù)據(jù)庫中努溃,事務由一組相關的DML或SELECT語句,加上一個TPL語句(COMMIT阻问、ROLLBACK)或一個DDL語句(CREATE梧税、ALTER、DROP称近、TRUNCATE等)或一個DCL(GRANT第队、REVOKE)語句。

–例:如下語句組成兩個事務刨秆。

?INSERT….

?UPDATE….

?DELETE….

?SELECT….

?INSERT…

?COMMIT;-- 前6條語句凳谦,組成第1個事務

?UPDATE…

?DELETE….

?CREATE…

;--后3條語句,組成第2個事務

例:

-- 查看自動提交按鈕狀態(tài)

show variables like 'autocommit';

-- 不自動提交

set autocommit =0

-- 再查詢開關狀態(tài)

show variables like 'autocommit';

insert into t_class values(null,'班級1');

update t_class set class_name='班級1update' where class_name="班級1"

ROLLBACK;

select * from t_class;

insert into t_class values(null,'班級1');

update t_class set class_name='班級1update' where class_name="班級1"

commit;

select * from t_class;

事務提交


–隱式提交:

當下列任意一種情況發(fā)生時衡未,會發(fā)生隱式提交

?執(zhí)行一個DDL(CREATE尸执、ALTER、DROP缓醋、TRUNCATE剔交、RENAME)語句;

?執(zhí)行一個DCL(GRANT改衩、REVOKE)語句岖常;


–隱式回滾:

當下列任意一種情況發(fā)生時,會發(fā)生隱式回滾

?客戶端強行退出

?客戶端連接到服務器端異常中斷

?系統(tǒng)崩潰


事務高級

?設置保存點:

如果在一個事務內(nèi)葫督,想要回滾到指定位置竭鞍,不是回滾到事務的起始點板惑,可以通過保存點(SAVEPOINT)來實現(xiàn)。

–SAVEPOINT savepointname偎快;--定義一個保存點語句;

–ROLLBACK? TO? savepointname;--回滾到指定保存點;


BEGIN;????????????????????? ——開始事務操作

DELETE FROM test ;

ROLLBACK;??????????????????????? ——撤消DELETE操作

INSERT INTO test VALUES(’A’);

SAVEPOINT insert_a;??????????? ——定義insert_a保存點

INSERT INTO test VALUES(’B’);


SAVEPOINT insert_b;???????????? ——定義insert_b保存點

INSERT INTO test VALUES(’C’);

ROLLBACK TO insert_b;???——撤消操作到insert_b保存點

DELETE FROM test WHERE test_str = ‘A’;

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

ROLLBACK;? ??-—所有操作已經(jīng)COMMIT提交冯乘,不能回滾

語言:

TPL:Transaction Process Language ,簡稱(begin?COMMIT、ROLLBACK

? ? ? (commit rollback結束事務)

DDL;數(shù)據(jù)定義語言(CREATE晒夹、ALTER裆馒、DROP、TRUNCATE等)? (隱式結束事務)

DCL(GRANT丐怯、REVOKE)??(隱式結束事務)

DML:數(shù)據(jù)操作語言(insert update delete)

DQL:數(shù)據(jù)查詢語言

練習4

?1.修改部門20的員工信息喷好,把82年之后入職的員工入職日期向后調(diào)整10天

update emp_back set hiredate=DATE_ADD(hiredate,INTERVAL 10 day)

where deptno=20 and hiredate>'1982-12-31';

?3.修改工作地點在NEW YORK或CHICAGO的員工工資,工資增加500

create table emp_exam4? ?as select * from emp;

update emp_exam4

set sal=sal+500

where deptno in

(select deptno

from dept where loc in('NEW YORK','CHICAGO'));

練習3

?2.把emp表中入職日期在1982年1月1日之前的員工信息復制到emp_back表中读跷。

create table emp_back as select * from emp where hiredate<'1982-01-01';

課后習題:

2梗搅、(8)請使用一條SQL語句,使用子查詢效览,更新班級表中每個班級的人數(shù)字段

update class a,(select studentcid,count(*) cn from student GROUP BY studentcid) b

set a.ccount=b.cn

where a.classid=b.studentcid;


練習5?

-- 1.刪除經(jīng)理編號為7566的員工記錄emp_cp

DELETE FROM emp_cp where mgr=7566;

-- 2.刪除工作在NEW YORK的員工記錄emp_cp

DELETE FROM emp_cp WHERE deptno in(

SELECT deptno

from dept

WHERE loc='NEW YORK')

-- 3.刪除工資大于所在部門平均工資的員工記錄emp_cp

DELETE a.*

from emp a,

(select deptno,AVG(sal) avg from emp GROUP BY deptno) s

where a.deptno=s.deptno

and a.sal>s.avg



delete from emp where empno in(

select empno from

(select empno from emp e,

(select deptno,avg(sal) avg_sal

from emp

group by deptno) d

where e.deptno=d.deptno

and e.sal>d.avg_sal) a)

作業(yè) :

課后作業(yè)1无切、2大題

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市丐枉,隨后出現(xiàn)的幾起案子哆键,更是在濱河造成了極大的恐慌,老刑警劉巖瘦锹,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件籍嘹,死亡現(xiàn)場離奇詭異,居然都是意外死亡沼本,警方通過查閱死者的電腦和手機噩峦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門锭沟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來抽兆,“玉大人,你說我怎么就攤上這事族淮”韬欤” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵祝辣,是天一觀的道長贴妻。 經(jīng)常有香客問我,道長蝙斜,這世上最難降的妖魔是什么名惩? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮孕荠,結果婚禮上娩鹉,老公的妹妹穿的比我還像新娘攻谁。我一直安慰自己,他們只是感情好弯予,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布戚宦。 她就那樣靜靜地躺著,像睡著了一般锈嫩。 火紅的嫁衣襯著肌膚如雪受楼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天呼寸,我揣著相機與錄音艳汽,去河邊找鬼。 笑死等舔,一個胖子當著我的面吹牛骚灸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播慌植,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼甚牲,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蝶柿?” 一聲冷哼從身側(cè)響起丈钙,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎交汤,沒想到半個月后雏赦,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡芙扎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年星岗,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片戒洼。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡俏橘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出圈浇,到底是詐尸還是另有隱情寥掐,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布磷蜀,位于F島的核電站召耘,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏褐隆。R本人自食惡果不足惜污它,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧衫贬,春花似錦蜜宪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至缝呕,卻和暖如春澳窑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背供常。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工摊聋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人栈暇。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓麻裁,卻偏偏與公主長得像,于是被迫代替她去往敵國和親源祈。 傳聞我的和親對象是個殘疾皇子煎源,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355

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

  • 1. 了解SQL 1.1 數(shù)據(jù)庫基礎 ? 學習到目前這個階段,我們就需要以某種方式與數(shù)據(jù)庫打交道香缺。在深入學習MyS...
    鋒享前端閱讀 1,071評論 0 1
  • ORACLE自學教程 --create tabletestone ( id number, --序號usernam...
    落葉寂聊閱讀 1,081評論 0 0
  • -- 復制表(結構和數(shù)據(jù)) CREATE TABLE emp2 AS SELECT * FROM emp; SEL...
    辰321閱讀 465評論 0 0
  • 引出 ?請思考如下問題手销? –查詢所有員工的每個月工資總和,平均工資图张? –查詢工資最高和最低的工資是多少锋拖? –查詢公...
    C_cole閱讀 7,289評論 0 3
  • mysql數(shù)據(jù)庫中 :database : 文件夾table : 數(shù)據(jù)表(數(shù)據(jù)文件) 進入mysqlmysql -...
    賦閑閱讀 564評論 0 0