SQL語法

SQL

什么是SQL

RDBMS 指的是關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。RDBMS 是 SQL 的基礎(chǔ)辆它。RDBMS 中的數(shù)據(jù)存儲在被稱為表(tables)的數(shù)據(jù)庫對象中。表是相關(guān)的數(shù)據(jù)項的集合挂疆,它由列和行組成旷痕。

  • SQL 指結(jié)構(gòu)化查詢語言
  • SQL 使我們有能力訪問數(shù)據(jù)庫
  • SQL 是一種 ANSI 的標準計算機語言

一定要記住避消,SQL 對大小寫不敏感低滩!

SQL功能

  • SQL 面向數(shù)據(jù)庫執(zhí)行查詢
  • SQL 可從數(shù)據(jù)庫取回數(shù)據(jù)
  • SQL 可在數(shù)據(jù)庫中插入新的記錄
  • SQL 可更新數(shù)據(jù)庫中的數(shù)據(jù)
  • SQL 可從數(shù)據(jù)庫刪除記錄
  • SQL 可創(chuàng)建新數(shù)據(jù)庫
  • SQL 可在數(shù)據(jù)庫中創(chuàng)建新表
  • SQL 可在數(shù)據(jù)庫中創(chuàng)建存儲過程
  • SQL 可在數(shù)據(jù)庫中創(chuàng)建視圖
  • SQL 可以設(shè)置表、存儲過程和視圖的權(quán)限

SQL語法

SELECT語句

SELECT 語句用于從表中選取數(shù)據(jù)岩喷。結(jié)果被存儲在一個結(jié)果表中(稱為結(jié)果集)恕沫。

語法

SELECT column_name(s) FROM table_name

以及

SELECT * FROM table_name

我們看到列名(column_name)參數(shù)可以是多個列,使用SELECT語句返回的結(jié)果集只包含語句中輸入的相應(yīng)列名稱的列纱意。星號(*)是選取所有列的快捷方式婶溯。

WHERE 子句

WHERE 子句用于規(guī)定選擇的標準。如需有條件地從表中選取數(shù)據(jù),可將 WHERE 子句添加到 SELECT 語句爬虱。

語法

SELECT 列名稱 FROM 表名稱 WHERE 列 運算符 值

運算符

操作符 描述
等于
<>(!=) 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
BETWEEN 在某個范圍內(nèi)
LIKE 搜索某種模式

SQL 使用單引號來環(huán)繞文本值隶债,數(shù)值,請不要使用引號跑筝。

示例

SELECT * FROM Persons WHERE City='Beijing'

AND 和 OR 運算符

用于基于一個以上的條件對記錄進行過濾死讹。可在 WHERE 子語句中把兩個或多個條件結(jié)合起來曲梗。

  • 如果第一個條件和第二個條件都成立赞警,則 AND 運算符顯示一條記錄。
  • 如果第一個條件和第二個條件中只要有一個成立虏两,則 OR 運算符顯示一條記錄愧旦。

示例

SELECT * FROM Persons WHERE FirstName='Thomas' AND LastName='Carter'

我們也可以把 AND 和 OR 結(jié)合起來(使用圓括號來組成復(fù)雜的表達式):

SELECT * FROM Persons WHERE (FirstName='Thomas' OR FirstName='William')
AND LastName='Carter'

INSERT INTO 語句

INSERT INTO 語句用于向表格中插入新的行。

語法

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

或者

INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

當我們使用第二種方法時定罢,在表中插入新的一行笤虫,并且在該行中為指定的列寫入指定的值。沒有指定的列就沒有值祖凫。

Update 語句

Update 語句用于修改表中的數(shù)據(jù)琼蚯。

語法

UPDATE 表名稱 SET 列名稱 = 新值 WHERE 列名稱 = 某值

使用更新語句時,我們可以在指定列名稱=新值這個參數(shù)時惠况,同時給定兩個或者多個(前提是同一行的)遭庶。也就是說更新語句可以同時更新同一行內(nèi)的多個列的值。

示例

UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing'
WHERE LastName = 'Wilson'

DELETE 語句

DELETE 語句用于刪除表中的行稠屠。

語法

DELETE FROM 表名稱 WHERE 列名稱 = 值

或者峦睡,刪除所有行∪ú海可以在不刪除表的情況下刪除所有的行榨了。這意味著表的結(jié)構(gòu)、屬性和索引都是完整的:

DELETE FROM table_name
//DELETE * FROM table_name

SQL LIKE 操作符

LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式弊知。

語法

SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern

運用

一般LIKE操作符都是配合SQL通配符一起來操作的

SELECT * FROM Persons
WHERE City LIKE 'N%'

表示我們要在表中搜索City列的值以N開頭的所有行

關(guān)鍵詞NOT

通過NOT關(guān)鍵詞阻逮,我們可以搜索指定范圍以外的數(shù)據(jù)。

SELECT * FROM Persons
WHERE City NOT LIKE '%lon%'

表示搜索Persons表中City列的值不含lon的所有行

SQL 通配符

在搜索數(shù)據(jù)庫中的數(shù)據(jù)時秩彤,SQL 通配符可以替代一個或多個字符。SQL 通配符必須與 LIKE 運算符一起使用事哭。

通配符 描述
% 替代一個或者多個字符
_ 僅替代一個字符
[charlist] 字符列中的任何單一字符
[^charlist]或者[!charlist] 不在字符列中的任何單一字符

IN 操作符

IN 操作符允許我們在 WHERE 子句中規(guī)定多個值漫雷。

語法

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...)

示例

SELECT * FROM Persons
WHERE LastName IN ('Adams','Carter')

SQL BETWEEN 操作符

BETWEEN 操作符在 WHERE 子句中使用,作用是選取介于兩個值之間的數(shù)據(jù)范圍鳍咱。操作符BETWEEN ... AND 會選取介于兩個值之間的數(shù)據(jù)范圍降盹。這些值可以是數(shù)值、文本或者日期谤辜。

語法

SELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2

示例

SELECT * FROM Persons
WHERE LastName
BETWEEN 'Adams' AND 'Carter'

表示需以字母順序顯示介于 "Adams"(包括)和 "Carter"(不包括)之間的人蓄坏。

不同的數(shù)據(jù)庫對 BETWEEN...AND 操作符的處理方式是有差異的价捧。某些數(shù)據(jù)庫會列出介于 "Adams" 和 "Carter" 之間的人,但不包括 "Adams" 和 "Carter" 涡戳;某些數(shù)據(jù)庫會列出介于 "Adams" 和 "Carter" 之間并包括 "Adams" 和 "Carter" 的人结蟋;而另一些數(shù)據(jù)庫會列出介于 "Adams" 和 "Carter" 之間的人,包括 "Adams" 渔彰,但不包括 "Carter" 嵌屎。

關(guān)鍵詞NOT

SELECT * FROM Persons
WHERE LastName
NOT BETWEEN 'Adams' AND 'Carter'

使用 NOT 操作符,顯示范圍之外的人恍涂。(范圍指定不包括Carter時宝惰,Carter會在顯示范圍內(nèi))

SQL CREATE DATABASE 語句

CREATE DATABASE 語句用于創(chuàng)建數(shù)據(jù)庫。

語法

CREATE DATABASE database_name

SQL CREATE TABLE 語句

CREATE TABLE 語句用于創(chuàng)建數(shù)據(jù)庫中的表再沧。

語法

CREATE TABLE 表名稱
(
列名稱1 數(shù)據(jù)類型,
列名稱2 數(shù)據(jù)類型,
列名稱3 數(shù)據(jù)類型,
....
)

數(shù)據(jù)類型

數(shù)據(jù)類型 描述
integer(size)尼夺、int(size)、smallint(size)炒瘸、tinyint(size) 僅容納整數(shù)汞斧。在括號內(nèi)規(guī)定數(shù)字的最大位數(shù)。
decimal(size,d)什燕、numeric(size,d) 容納帶有小數(shù)的數(shù)字粘勒。"size" 規(guī)定數(shù)字的最大位數(shù)。"d" 規(guī)定小數(shù)點右側(cè)的最大位數(shù)屎即。
char(size) 容納固定長度的字符串(可容納字母庙睡、數(shù)字以及特殊字符)。在括號中規(guī)定字符串的長度技俐。
varchar(size) 容納可變長度的字符串(可容納字母乘陪、數(shù)字以及特殊的字符)。在括號中規(guī)定字符串的最大長度雕擂。
date(yyyymmdd) 容納日期啡邑。

示例

CREATE TABLE Persons
(
Id_P int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

SQL PRIMARY KEY 約束

PRIMARY KEY 約束唯一標識數(shù)據(jù)庫表中的每條記錄。

  • 主鍵必須包含唯一的值井赌。
  • 主鍵列不能包含 NULL 值谤逼。

每個表都應(yīng)該有一個主鍵,并且每個表只能有一個主鍵仇穗。

示例

CREATE TABLE Persons
(
Id_P int NOT NULL PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

主要配合AUTO INCREMENT 字段使用

SQL AUTO INCREMENT 字段

Auto-increment 會在新記錄插入表中時生成一個唯一的數(shù)字流部。

我們通常希望在每次插入新記錄時,自動地創(chuàng)建主鍵字段的值纹坐。
我們可以在表中創(chuàng)建一個 auto-increment 字段枝冀。

默認地,AUTO_INCREMENT 的開始值是 1,每條新記錄遞增 1果漾。

示例

CREATE TABLE Persons
(
P_Id int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (P_Id)
)

上述示例是基于MySQL的語法

參考

SQL 教程

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末球切,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子绒障,更是在濱河造成了極大的恐慌吨凑,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,207評論 6 521
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件端盆,死亡現(xiàn)場離奇詭異怀骤,居然都是意外死亡,警方通過查閱死者的電腦和手機焕妙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,455評論 3 400
  • 文/潘曉璐 我一進店門蒋伦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人焚鹊,你說我怎么就攤上這事痕届。” “怎么了末患?”我有些...
    開封第一講書人閱讀 170,031評論 0 366
  • 文/不壞的土叔 我叫張陵研叫,是天一觀的道長。 經(jīng)常有香客問我璧针,道長嚷炉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,334評論 1 300
  • 正文 為了忘掉前任探橱,我火速辦了婚禮申屹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘隧膏。我一直安慰自己哗讥,他們只是感情好,可當我...
    茶點故事閱讀 69,322評論 6 398
  • 文/花漫 我一把揭開白布胞枕。 她就那樣靜靜地躺著杆煞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪腐泻。 梳的紋絲不亂的頭發(fā)上决乎,一...
    開封第一講書人閱讀 52,895評論 1 314
  • 那天,我揣著相機與錄音贫悄,去河邊找鬼瑞驱。 笑死,一個胖子當著我的面吹牛窄坦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 41,300評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼鸭津,長吁一口氣:“原來是場噩夢啊……” “哼彤侍!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起逆趋,我...
    開封第一講書人閱讀 40,264評論 0 277
  • 序言:老撾萬榮一對情侶失蹤盏阶,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后闻书,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體名斟,經(jīng)...
    沈念sama閱讀 46,784評論 1 321
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,870評論 3 343
  • 正文 我和宋清朗相戀三年魄眉,在試婚紗的時候發(fā)現(xiàn)自己被綠了砰盐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,989評論 1 354
  • 序言:一個原本活蹦亂跳的男人離奇死亡坑律,死狀恐怖岩梳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情晃择,我是刑警寧澤冀值,帶...
    沈念sama閱讀 36,649評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站宫屠,受9級特大地震影響列疗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜浪蹂,卻給世界環(huán)境...
    茶點故事閱讀 42,331評論 3 336
  • 文/蒙蒙 一抵栈、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧乌逐,春花似錦竭讳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,814評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至洛波,卻和暖如春胰舆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蹬挤。 一陣腳步聲響...
    開封第一講書人閱讀 33,940評論 1 275
  • 我被黑心中介騙來泰國打工缚窿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人焰扳。 一個月前我還...
    沈念sama閱讀 49,452評論 3 379
  • 正文 我出身青樓倦零,卻偏偏與公主長得像误续,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子扫茅,可洞房花燭夜當晚...
    茶點故事閱讀 45,995評論 2 361

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