大數(shù)據(jù)開發(fā)基礎(chǔ)之SQL語(yǔ)句基本操作
昨天我們把MySQL的基礎(chǔ)知識(shí)大概說(shuō)了一遍,所以接下來(lái)幾篇文章我們都會(huì)細(xì)化的講講MySQL的一些內(nèi)容,而今天就給大家?guī)?lái)大數(shù)據(jù)開發(fā)基礎(chǔ)之SQL語(yǔ)句基本操作,在有了理論知識(shí)后也必須動(dòng)手實(shí)操才行。
要掌握好SQL,我們就得學(xué)會(huì)最基本的四條數(shù)據(jù)操作語(yǔ)句,分別是Insert,Select,Update和Delete。熟練掌握SQL是數(shù)據(jù)庫(kù)用戶的最大收獲。在本篇文章中,將會(huì)幫助你熟悉和掌握四條最基本的數(shù)據(jù)操作語(yǔ)句—SQL的核心功能并依次介紹比較操作符、選擇斷言以及三值邏輯。
一、SELECT語(yǔ)句
因?yàn)椴樵兒蜋z索數(shù)據(jù)是數(shù)據(jù)庫(kù)管理中最重要的功能,所以SELECT語(yǔ)句在SQL中是工作量最大的部分。SELECT語(yǔ)句可以從一個(gè)或多個(gè)表中選取特定的行和列。
SELECT語(yǔ)句的結(jié)果通常是生成另外一個(gè)表。在執(zhí)行過(guò)程中系統(tǒng)根據(jù)用戶的標(biāo)準(zhǔn)從數(shù)據(jù)庫(kù)中選出匹配的行和列,并將結(jié)果放到臨時(shí)的表中。在直接SQL(direct SQL)中,它將結(jié)果顯示在終端的顯示屏上,或者將結(jié)果送到打印機(jī)或文件中。也可以結(jié)合其他SQL語(yǔ)句來(lái)將結(jié)果放到一個(gè)已知名稱的表中。
select簡(jiǎn)單的查詢分為兩種
(字段也就是表結(jié)構(gòu)中的列的名稱)
第一種:
select 字段名 from 表名
此種查詢只列出你所需要查詢的字段,要查詢多個(gè)字段以“,”隔開
第二種:
select * from 表名
* 的意思是查詢出此表的所有字段
額外的內(nèi)容:distinct關(guān)鍵字
select distinct 字段名 from 表名
給查詢的結(jié)果去重
二、INSERT語(yǔ)句
用戶可以用INSERT語(yǔ)句將一行記錄插入到指定的一個(gè)表中。例如,要將雇員John Smith的記錄插入到本例的表中,可以使用如下語(yǔ)句:
INSERT INTO EMPLOYEES VALUES
('Smith','John','1980-06-10',
'Los Angles',16,45000);
通過(guò)這樣的INSERT語(yǔ)句,系統(tǒng)將試著將這些值填入到相應(yīng)的列中。這些列按照我們創(chuàng)建表時(shí)定義的順序排列。在本例中,第一個(gè)值“Smith”將填到第一個(gè)列LAST_NAME中;第二個(gè)值“John”將填到第二列FIRST_NAME中……以此類推。
我們說(shuō)過(guò)系統(tǒng)會(huì)“試著”將值填入,除了執(zhí)行規(guī)則之外它還要進(jìn)行類型檢查。如果類型不符(如將一個(gè)字符串填入到類型為數(shù)字的列中),系統(tǒng)將拒絕這一次操作并返回一個(gè)錯(cuò)誤信息。
如果SQL拒絕了你所填入的一列值,語(yǔ)句中其他各列的值也不會(huì)填入。這是因?yàn)镾QL提供對(duì)事務(wù)的支持。一次事務(wù)將數(shù)據(jù)庫(kù)從一種一致性轉(zhuǎn)移到另一種一致性。如果事務(wù)的某一部分失敗,則整個(gè)事務(wù)都會(huì)失敗,系統(tǒng)將會(huì)被恢復(fù)(或稱之為回退)到此事務(wù)之前的狀態(tài)。
insert插入數(shù)據(jù)行(記錄)的兩種簡(jiǎn)單實(shí)現(xiàn)方式
第一種:
insert into 表名 values(值1,值2...)
這種插入數(shù)據(jù)行的的值必須與表的字段名一一對(duì)應(yīng),否則數(shù)據(jù)會(huì)插入失敗給出錯(cuò)誤提示:
錯(cuò)誤提示:Column count doesn't match value count at row 1
第二種:
insert into 表名(字段名,字段名...) values(值1,值2...),這是指定字段名來(lái)插入數(shù)據(jù)
三、UPDATE語(yǔ)句
UPDATE語(yǔ)句允許用戶在已知的表中對(duì)現(xiàn)有的行進(jìn)行修改。
例如,我們剛剛發(fā)現(xiàn)Indiana Jones的等級(jí)為16,工資為$40,000.00,我們可以通過(guò)下面的SQL語(yǔ)句對(duì)數(shù)據(jù)庫(kù)進(jìn)行更新(并清除那些煩人的NULL)。
UPDATE EMPLOYEES
SET GRADE = 16, SALARY = 40000
WHERE FIRST_NAME = 'Indiana'
AND LAST_NAME = 'Jones';
語(yǔ)法:
update 表名 set 字段名 = 新值 where 字段名 = 舊值
大數(shù)據(jù)開發(fā)基礎(chǔ)之SQL語(yǔ)句基本操作
where 后面接條件,條件有多種多樣,后面我會(huì)一一說(shuō)明。在這里where的意思就是我要修改這個(gè)字段名下的這個(gè)舊值,新值寫在set后面
四、DELETE語(yǔ)句
DELETE語(yǔ)句用來(lái)刪除已知表中的行。如同UPDATE語(yǔ)句中一樣,所有滿足WHERE子句中條件的行都將被刪除。由于SQL中沒有UNDO語(yǔ)句或是“你確認(rèn)刪除嗎?”之類的警告,在執(zhí)行這條語(yǔ)句時(shí)千萬(wàn)要小心。如果決定取消Los Angeles辦事處并解雇辦事處的所有職員,這一卑鄙的工作可以由以下這條語(yǔ)句來(lái)實(shí)現(xiàn):
DELETE FROM EMPLOYEES
WHERE BRANCH_OFFICE = 'Los Angeles';
如同UPDATE語(yǔ)句中一樣,省略WHERE子句將使得操作施加到表中所有的行。
DELETE語(yǔ)句的語(yǔ)法流圖如下面所示:
DELETE FROM table
[WHERE predicate [ { logical-connector predicate} ] ];
語(yǔ)法:
delete from 表名 where 字段名 = 值
根據(jù)字段名找到值的這一行記錄就被刪除了
現(xiàn)在我們完成了數(shù)據(jù)操作語(yǔ)言(DML)的主要語(yǔ)句的介紹。SQL還提供了許多的功能,如求平均值、求和以及其他對(duì)表中數(shù)據(jù)的計(jì)算,因篇幅有限也只能講到這里了。