SQL句法

現(xiàn)在你大概了解什么是關(guān)系型數(shù)據(jù)庫,這樣對了解SQL的實質(zhì)很有幫助棉圈。簡單來說SQL就是一種編程語言吭敢,用它來編程可以創(chuàng)建和操作關(guān)系型數(shù)據(jù)庫。進一步講SQL是聲明式編程(Declarative programming)它描述目標的性質(zhì)缭受,讓計算機明白目標胁澳,而非流程。也就是說用SQL編程你要關(guān)注的是你要達到的目標效果而不是關(guān)注計算機怎么實現(xiàn)的過程米者。

下面用一個簡單的例子講解SQL語言和其他命令式編程語言的區(qū)別韭畸。當(dāng)使用諸如C Java等命令式編程語言時,你需要將解決方案分解到每一步蔓搞。比如當(dāng)你口渴了想喝水胰丁。用命令式編程可能是:第一步,找到一個植被喂分,第二步走到飲水機旁锦庸,第三步按下出水按鈕,第四步用紙杯接水蒲祈。而如果是聲明式編程直接告訴計算機你的目標和結(jié)果就行甘萧,即給我一杯水。SQL內(nèi)置了算法梆掸,并且自帶優(yōu)化程序扬卷,只要給指令,程序內(nèi)部會將指令分解成每一步執(zhí)行想要得到的結(jié)果酸钦。

除非你是專家級別用戶怪得,如果你是一個普通的數(shù)據(jù)庫使用者只要關(guān)注你想要提取什么樣的數(shù)據(jù)即可,完全不用考慮算法問題。



了解了SQL語言是聲明式編程汇恤,我們接下來看一下它的句法庞钢。SQL語言由DDL、DML因谎、DCL基括、TCL構(gòu)成。DDL(Data Definition Language)為數(shù)據(jù)定義語言财岔。DML(data manipulation language)為數(shù)據(jù)操縱語言风皿。DCL(data control language)為數(shù)據(jù)控制語言。TCL(transaction control language)為事物控制語言匠璧。.



與其說DDL是一種語言還不如說它是一種句法桐款。這種句法就是一系列的可以幫助用戶定義和修改數(shù)據(jù)結(jié)構(gòu)的語句。

語句1:創(chuàng)建語句(CREATE statement)

1.創(chuàng)建數(shù)據(jù)庫

CREATE DATABASE database_name夷恍;

2.創(chuàng)建表

CREATE TABLE object_name(column_name data_type);

其中object_name是表格名魔眨,column_name是字段名,data_type是數(shù)據(jù)類型酿雪。我們以創(chuàng)建Sales表為例遏暴。CREATE TABLE Sales(purchase_number INT);創(chuàng)建表時,SQL支持表名和數(shù)據(jù)庫名相同.


創(chuàng)建Sales表


語句2:修改語句(ALTER statement)

1.增加(ADD)

如增加字段--

ALTER TABLE Sales

ADD COLUMN date_of_purchase DATE;

語句3:刪除語句(DELETE statement)

如刪除表--

DROP TABLE Sales;

另外,可以使用TRUNCATE達到刪除目的,語句為TRUNCATE TABLE Customers;.和DROP 刪除整個數(shù)據(jù)表不一樣,TRUNCATE TABLE Customers; .只是刪除整個數(shù)據(jù)表的數(shù)據(jù),但是數(shù)據(jù)表還存在于數(shù)據(jù)庫內(nèi).

語句4:重命名語句(RENAME statement)

如給存在的表重命名--

RENAME TABLE Sales TO sale_data;

注:前述提到的CREATE ADD ALTER 是SQL的關(guān)鍵字(key words或 reserved words) ,不能作為數(shù)據(jù)表中變量的名字.比如CREATE TABLE add(purchase_number INT)是不合法的.



DML即數(shù)據(jù)操縱語言,通過DML,我們可以操縱數(shù)據(jù)庫的數(shù)據(jù).最常見的就是SELECT語句.SELECT 語句幫助使用者從數(shù)據(jù)庫例查詢相應(yīng)數(shù)據(jù).?

1. 提取數(shù)據(jù)信息

SELECT * FROM Sales;

該語句可以提取出整個數(shù)據(jù)表所有字段和記錄的信息.

SELECT ... FROM Sales;

該語句用于提取部分數(shù)據(jù)信息

2.插入數(shù)據(jù)

INSERT...INTO...VALUES;

比如INSERT INTO Sales (purchase_number, date_of_purchase) VALUES(1,'2017-10-11');

如果Sales只有purchase_number, date_of_purchase兩個字段,INSERT INTO Sales? VALUES(1,'2017-10-11');效果一樣.

3.更新數(shù)據(jù)

UPDATE Sales SET date_of_purchase = '2017-12-12' WHERE purchase_number = 1;

4.刪除數(shù)據(jù)

DELETE FROM sales;(此語句等同于TRUNCATE TABLE sales;)

DELETE FROM sales

WHERE?

purchase_number = 1;

DDL中的TRUNCATE和DML中的DELETE語句都能實現(xiàn)刪除數(shù)據(jù)的效果.TRUNCATE刪除全部數(shù)據(jù)保留表.DELETE可以精確具體地刪除表中的某一部分數(shù)據(jù).



DDL和DML是最常用的SQL語言.DCL和TCL較少用.

DCL包含GRANT和REVOKE語句.此二語句用于管理數(shù)據(jù)庫用戶的權(quán)限.同一個數(shù)據(jù)庫由無數(shù)個不同的用戶使用,他們獲取的權(quán)限是不一樣的.GRANT語句為用戶授權(quán)不同程度的權(quán)限.

如GRANT type_of_permission ON database_name.table_name TO 'username'@'localhost'

localhost是本地主機,大的公司企業(yè)并不使用本地主機而是將數(shù)據(jù)庫建在遠程云端.

REVOKE語句用于撤銷數(shù)據(jù)庫用戶的使用權(quán)限.如REVOKE type_of_permission ON database_name.table_name TO 'username'@'localhost'



TCL語言

在實際工作中,數(shù)據(jù)的每次一修改并不一定馬上自動地存儲進數(shù)據(jù)庫里,TCL語言中的COMMIT語句用于將修改(包括INSERT DELETE UPDATE)永久地存儲到數(shù)據(jù)庫里.

比如使用UPDATE更新數(shù)據(jù):

UPDATE customers

SET last_name = 'Johnson'

WHERE customer_id =4

COMMIT;

使用了COMMIT以外,所有含有此數(shù)據(jù)的其他表的相應(yīng)數(shù)據(jù)也會被更改保存.

TCL中的ROLLBACK語句可以讓你對COMMIT的語句進行反悔,回到COMMIT前的狀態(tài).

UPDATE customers

SET last_name = 'Johnson'

WHERE customer_id =4

COMMIT;

ROLLBACK;

這樣操作后,數(shù)據(jù)回到之前的狀態(tài).

版權(quán)聲明:本文章里引用的數(shù)據(jù)來源于網(wǎng)絡(luò),僅供學(xué)習(xí)交流使用指黎,版權(quán)歸原作者朋凉。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市醋安,隨后出現(xiàn)的幾起案子杂彭,更是在濱河造成了極大的恐慌,老刑警劉巖吓揪,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件亲怠,死亡現(xiàn)場離奇詭異,居然都是意外死亡磺芭,警方通過查閱死者的電腦和手機赁炎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钾腺,“玉大人徙垫,你說我怎么就攤上這事》虐簦” “怎么了姻报?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長间螟。 經(jīng)常有香客問我吴旋,道長损肛,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任荣瑟,我火速辦了婚禮治拿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘笆焰。我一直安慰自己劫谅,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布嚷掠。 她就那樣靜靜地躺著捏检,像睡著了一般。 火紅的嫁衣襯著肌膚如雪不皆。 梳的紋絲不亂的頭發(fā)上贯城,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天,我揣著相機與錄音霹娄,去河邊找鬼能犯。 笑死,一個胖子當(dāng)著我的面吹牛犬耻,可吹牛的內(nèi)容都是我干的悲雳。 我是一名探鬼主播,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼香追,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了坦胶?” 一聲冷哼從身側(cè)響起透典,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎顿苇,沒想到半個月后峭咒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡纪岁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年凑队,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片幔翰。...
    茶點故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡漩氨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出遗增,到底是詐尸還是另有隱情叫惊,我是刑警寧澤,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布做修,位于F島的核電站霍狰,受9級特大地震影響抡草,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蔗坯,卻給世界環(huán)境...
    茶點故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一康震、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧宾濒,春花似錦腿短、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至谚咬,卻和暖如春鹦付,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背择卦。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工敲长, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人秉继。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓祈噪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親尚辑。 傳聞我的和親對象是個殘疾皇子辑鲤,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,658評論 2 350

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