SQL

1.SQL語(yǔ)句的分類

  • DDL語(yǔ)句(數(shù)據(jù)定義語(yǔ)句)
    主要用于定義數(shù)據(jù)庫(kù)對(duì)象的SQL語(yǔ)句
    數(shù)據(jù)庫(kù)對(duì)象:表(table)鸭限,列(column),視圖(view),索引(index)...

    1. create: 創(chuàng)建
    2. alter: 修改
    3. replace: 替換
    4. drop: 放棄(刪除)
    5. truncate: 截?cái)?/li>
  • DML語(yǔ)句(數(shù)據(jù)操作語(yǔ)句)
    主要用于數(shù)據(jù)的變更

    1. insert 插入(新增數(shù)據(jù))
    2. update 更新(修改數(shù)據(jù))
    3. delete 刪除
    4. merage 合并
  • TCL語(yǔ)句(事務(wù)控制語(yǔ)句)
    主要用于事務(wù)控制

    1. commit 提交事務(wù)
    2. rollback 回滾事務(wù)
  • DQL語(yǔ)句(數(shù)據(jù)查詢語(yǔ)句)
    主要用于查詢和檢索數(shù)據(jù)

    1. select 查詢
  • DCL語(yǔ)句(數(shù)據(jù)控制語(yǔ)句)
    主要用于數(shù)據(jù)庫(kù)權(quán)限管理

    1. grant 授權(quán)
    2. revoke 回收

2.DML語(yǔ)句(數(shù)據(jù)操作語(yǔ)句)

2.1 新增數(shù)據(jù)(insert)

語(yǔ)法:

  INSERT INTO 表名稱 VALUES (值1, 值2,....)

向表中增加一條記錄

  • 為所有的列都賦值

    image
INSERT INTO dept VALUES(1,'開(kāi)發(fā)一部','沈陽(yáng)');

image
  • 為指定的列賦值
    為指定的列進(jìn)行賦值,未指定的列的值默認(rèn)就是null
    如果某個(gè)列是not null痪伦,則它必須被賦值
INSERT INTO dept(deptno,dname) VALUES(2,'開(kāi)發(fā)二部');

  • 一次插入多條數(shù)據(jù)(MySQL方言)(了解)
INSERT INTO dept VALUES(3,'開(kāi)發(fā)三部','沈陽(yáng)'),(4,'開(kāi)發(fā)四部','沈陽(yáng)');

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

從表中移除一些數(shù)據(jù)

  • 無(wú)條件刪除(全刪除)
DELETE FROM dept;

  • 有條件刪除 (根據(jù)設(shè)定條件進(jìn)行刪除)
  1. 刪除deptno的值是4的部門(mén)記錄
DELETE FROM dept WHERE deptno = 4;

  1. 刪除loc的值是"沈陽(yáng)"的部門(mén)記錄
DELETE FROM dept WHERE loc = '沈陽(yáng)';

  1. 邏輯-與 AND
    X AND Y必須同時(shí)滿足兩個(gè)條件X和Y
    刪除loc是“北京”同時(shí)名字是“開(kāi)發(fā)一部”的記錄
DELETE FROM dept WHERE dname = '開(kāi)發(fā)一部' AND loc = '北京'

  1. 邏輯-或 OR
    X OR Y必須滿足X和Y其中任一條件
    刪除loc是“北京”或者名字是“開(kāi)發(fā)一部”的記錄
DELETE FROM dept WHERE dname = '開(kāi)發(fā)一部' OR loc = '北京'

  1. 邏輯-非 NOT
    表示邏輯取反 X = 12 取反 X != 12 X <> 12
    X > 12 取反 X <= 12
    刪除學(xué)生考試分?jǐn)?shù)在[80,90]區(qū)間的記錄
DELETE FROM student WHERE score >= 80 and score <= 90
DELETE FROM student WHERE score between 80 and 90;

刪除學(xué)生考試分?jǐn)?shù)不在[80,90]區(qū)間的記錄

DELETE FROM student WHERE score < 80 or score > 90
DELETE FROM student WHERE score NOT between 80 and 90;

面試題:delete,drop和truncate的區(qū)別雹锣?
delete DML語(yǔ)句 表示刪除表中數(shù)據(jù)网沾,這個(gè)操作是可以恢復(fù)的
drop DDL語(yǔ)句 表示刪除整張表,包含表結(jié)構(gòu)蕊爵, 不可恢復(fù)
truncate DDL語(yǔ)句 表示截?cái)啾砘愿纾粍h除表結(jié)構(gòu)只清空數(shù)據(jù), 數(shù)據(jù)不可恢復(fù)在辆,刪除速度快

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

修改表中一些數(shù)據(jù)

  • 無(wú)條件修改(全表進(jìn)行更新)
    將dept表中所有數(shù)據(jù)的dname更新為“開(kāi)發(fā)部”证薇,loc更新為“北京”
UPDATE dept SET dname = '開(kāi)發(fā)部',loc = '北京' 

將emp表中所有數(shù)據(jù)的sal增加200

UPDATE emp SET sal = sal + 200

  • 有條件修改(符合條件記錄進(jìn)行修改)
    將dept表中的dname是“開(kāi)發(fā)二部”的數(shù)據(jù)的loc設(shè)置為“北京”
UPDATE dept SET loc = '北京' WHERE dname = '開(kāi)發(fā)二部'

3.事務(wù)的概念

事務(wù)(Transaction),一般是指要做的或所做的事情匆篓。在計(jì)算機(jī)術(shù)語(yǔ)中是指訪問(wèn)并可能更新數(shù)據(jù)庫(kù)中各種數(shù)據(jù)項(xiàng)的一個(gè)程序執(zhí)行單元(unit)浑度。
比如說(shuō)轉(zhuǎn)賬的例子是事務(wù)(101賬號(hào)給102賬號(hào)轉(zhuǎn)賬100)

update 賬戶 set 余額 = 余額 - 100 where 賬號(hào)= 101
update 賬戶 set 余額 = 余額 + 100 where 賬號(hào)= 102

兩條SQL語(yǔ)句必須同時(shí)執(zhí)行組成了一個(gè)完整的執(zhí)行單元,必須同時(shí)成功

事務(wù)的四個(gè)特性

  • 原子性:組成事務(wù)的這些SQL語(yǔ)句是一個(gè)整體鸦概,不可能繼續(xù)劃分
  • 一致性:這些SQL語(yǔ)句要么同時(shí)成功箩张,要么同時(shí)失敗。不允許只成功一部分
  • 隔離性:不同事務(wù)之間不能互相干擾
  • 持久性:事務(wù)執(zhí)行成功后窗市,數(shù)據(jù)有效地保存

事務(wù)控制

set AutoCommit false;   -- 關(guān)閉自動(dòng)提交
update 賬戶 set 余額 = 余額 - 100 where 賬號(hào)= 101;
update 賬戶 set 余額 = 余額 + 100 where 賬號(hào)= 102;
commit;   -- 手動(dòng)提交

當(dāng)執(zhí)行commit時(shí)會(huì)將兩個(gè)語(yǔ)句的執(zhí)行結(jié)果同時(shí)執(zhí)行到數(shù)據(jù)庫(kù)中

set AutoCommit false;   -- 關(guān)閉自動(dòng)提交
update 賬戶 set 余額 = 余額 - 100 where 賬號(hào)= 101;
update 賬戶 set 余額 = 余額 + 100 where 賬號(hào)= 102;
rollback;   -- 手動(dòng)回滾

當(dāng)執(zhí)行rollback時(shí)會(huì)將兩個(gè)語(yǔ)句的執(zhí)行結(jié)果同時(shí)撤銷先慷,不會(huì)對(duì)數(shù)據(jù)庫(kù)產(chǎn)生影響

4.查詢數(shù)據(jù)準(zhǔn)備

4.1 建表
  • 創(chuàng)建location表
CREATE TABLE location (
  locid varchar(64) NOT NULL,
  adress varchar(128) DEFAULT NULL,
  PRIMARY KEY (locid)
) 

  • 創(chuàng)建dept表
CREATE TABLE dept (
  deptno int(8) NOT NULL,
  dname varchar(64) NOT NULL,
  loc varchar(64) DEFAULT NULL,
  PRIMARY KEY (deptno)
)

  • 創(chuàng)建emp表
CREATE TABLE emp (
  empno int(8) NOT NULL,
  ename varchar(64) NOT NULL,
  job varchar(64) DEFAULT NULL,
  mgr int(8) DEFAULT NULL,
  hiredate date DEFAULT NULL,
  sal int(8) DEFAULT NULL,
  comm int(8) DEFAULT NULL,
  deptno int(8) DEFAULT NULL,
  PRIMARY KEY (empno),
  KEY `FK_EMP_DEPTNO` (deptno),
  CONSTRAINT `FK_EMP_DEPTNO` FOREIGN KEY (deptno) REFERENCES dept (deptno)
) 

4.2 創(chuàng)建數(shù)據(jù)
  • location表數(shù)據(jù)
insert  into location(locid,adress) values ('BOSTON','110, NO.5 Street');
insert  into location(locid,adress) values ('DALLAS','No.12 Farm');
insert  into location(locid,adress) values ('NEW YORK','NO 121 Queen Street ');

  • dept表數(shù)據(jù)
insert  into dept(deptno,dname,loc) values (10,'RESEARCH','BOSTON');
insert  into dept(deptno,dname,loc) values (20,'SALES','NEW YORK');
insert  into dept(deptno,dname,loc) values (30,'MANAGE','DALLAS');
insert  into dept(deptno,dname,loc) values (40,'HRD','NEW YORK');

  • emp表數(shù)據(jù)
insert  into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values (1001,'TOM','PROGRAMER',1004,'1994-12-22',3800,NULL,10);
insert  into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values (1002,'SMITH','PROGRAMER',1004,'1994-07-05',3500,NULL,10);
insert  into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values (1003,'JACK','CLERK',1004,'1992-02-12',2500,NULL,10);
insert  into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values (1004,'SCOTT','ANALIST',1007,'1992-01-15',4500,NULL,10);
insert  into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values (1005,'ALEX','CLERK',1006,'1993-05-07',2800,NULL,30);
insert  into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values (1006,'FORD','MANAGER',1007,'1994-07-05',4300,NULL,NULL);
insert  into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values (1007,'KING','PESIDENT',NULL,'1992-01-01',7000,NULL,30);
insert  into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values (1008,'MOON','MANAGER',1007,'1992-01-15',5000,1200,20);
insert  into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values (1009,'TED','SALESMAN',1008,'1994-07-14',2500,1500,20);
insert  into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values (1010,'JUCY','SALESMAN',1008,'1998-08-07',2200,800,20);
insert  into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values (1011,'LEE','SALESMAN',1008,'1999-07-12',2200,500,20);
insert  into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values (1012,'AMY','CLERK',1008,'1994-08-05',2200,NULL,20);
insert  into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values (1013,'EMLIY','ANALIST',1007,'1996-06-29',4500,NULL,10);
insert  into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values (1014,'ZORO','PROGRAME
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市咨察,隨后出現(xiàn)的幾起案子论熙,更是在濱河造成了極大的恐慌,老刑警劉巖摄狱,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脓诡,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡媒役,警方通過(guò)查閱死者的電腦和手機(jī)祝谚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)酣衷,“玉大人交惯,你說(shuō)我怎么就攤上這事〈┮牵” “怎么了席爽?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)啊片。 經(jīng)常有香客問(wèn)我拳昌,道長(zhǎng),這世上最難降的妖魔是什么钠龙? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任炬藤,我火速辦了婚禮,結(jié)果婚禮上碴里,老公的妹妹穿的比我還像新娘沈矿。我一直安慰自己,他們只是感情好咬腋,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布羹膳。 她就那樣靜靜地躺著,像睡著了一般根竿。 火紅的嫁衣襯著肌膚如雪陵像。 梳的紋絲不亂的頭發(fā)上就珠,一...
    開(kāi)封第一講書(shū)人閱讀 51,604評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音醒颖,去河邊找鬼妻怎。 笑死,一個(gè)胖子當(dāng)著我的面吹牛泞歉,可吹牛的內(nèi)容都是我干的逼侦。 我是一名探鬼主播,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼腰耙,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼榛丢!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起挺庞,我...
    開(kāi)封第一講書(shū)人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤晰赞,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后选侨,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體宾肺,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年侵俗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了锨用。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡隘谣,死狀恐怖增拥,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情寻歧,我是刑警寧澤掌栅,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站码泛,受9級(jí)特大地震影響猾封,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜噪珊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一晌缘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧痢站,春花似錦磷箕、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春空繁,著一層夾襖步出監(jiān)牢的瞬間殿衰,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工盛泡, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留闷祥,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓饭于,卻偏偏與公主長(zhǎng)得像蜀踏,于是被迫代替她去往敵國(guó)和親维蒙。 傳聞我的和親對(duì)象是個(gè)殘疾皇子掰吕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355

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