sql

csv是文本文件,用記事本就能打開,XLS是二進(jìn)制的文件只有用EXCEL才能打

數(shù)據(jù)模型
數(shù)據(jù)庫按照數(shù)據(jù)結(jié)構(gòu)來組織桃纯、存儲和管理數(shù)據(jù)酷誓,實際上,數(shù)據(jù)庫一共有三種模型:
層次模型
網(wǎng)狀模型
關(guān)系模型

基于關(guān)系模型的關(guān)系數(shù)據(jù)庫,在關(guān)系數(shù)據(jù)庫中态坦,關(guān)系是通過主鍵和外鍵來維護的

INT
整型
4字節(jié)整數(shù)類型盐数,范圍約+/-21億
BIGINT
長整型
8字節(jié)整數(shù)類型,范圍約+/-922億億
REAL
浮點型
4字節(jié)浮點數(shù)驮配,范圍約+/-1038
DOUBLE
浮點型
8字節(jié)浮點數(shù)娘扩,范圍約+/-10308
DECIMAL(M,N)
高精度小數(shù)
由用戶指定精度的小數(shù),例如壮锻,DECIMAL(20,10)表示一共20位琐旁,其中小數(shù)10位,通常用于財務(wù)計算
CHAR(N)
定長字符串
存儲指定長度的字符串猜绣,例如灰殴,CHAR(100)總是存儲100個字符的字符串
VARCHAR(N)
變長字符串
存儲可變長度的字符串,例如掰邢,VARCHAR(100)可以存儲0~100個字符的字符串
BOOLEAN
布爾類型
存儲True或者False
DATE
日期類型
存儲日期牺陶,例如,2018-06-22
TIME
時間類型
存儲時間辣之,例如掰伸,12:20:59
DATETIME
日期和時間類型
存儲日期+時間,例如怀估,2018-06-22 12:20:59

注意NULL表示字段數(shù)據(jù)不存在狮鸭。一個整型字段如果為NULL不表示它的值為0,同樣的多搀,一個字符串型字段為NULL也不表示它的值為空串''歧蕉。

商用數(shù)據(jù)庫,例如:Oracle康铭,SQL Server惯退,DB2等;
開源數(shù)據(jù)庫从藤,例如:MySQL催跪,PostgreSQL等锁蠕;
桌面數(shù)據(jù)庫,以微軟Access為代表叠荠,適合桌面應(yīng)用程序使用匿沛;
嵌入式數(shù)據(jù)庫扫责,以Sqlite為代表榛鼎,適合手機應(yīng)用和桌面程序。

總的來說鳖孤,SQL語言定義了這么幾種操作數(shù)據(jù)庫的能力:
DDL:Data Definition Language
DDL允許用戶定義數(shù)據(jù)者娱,也就是創(chuàng)建表、刪除表苏揣、修改表結(jié)構(gòu)這些操作黄鳍。通常,DDL由數(shù)據(jù)庫管理員執(zhí)行平匈。
DML:Data Manipulation Language
DML為用戶提供添加框沟、刪除、更新數(shù)據(jù)的能力增炭,這些是應(yīng)用程序?qū)?shù)據(jù)庫的日常操作忍燥。
DQL:Data Query Language
DQL允許用戶查詢數(shù)據(jù),這也是通常最頻繁的數(shù)據(jù)庫日常操作隙姿。

主鍵

主鍵是關(guān)系表中記錄的唯一標(biāo)識梅垄。主鍵的選取非常重要:主鍵不要帶有業(yè)務(wù)含義,而應(yīng)該使用BIGINT自增或者GUID類型输玷。主鍵也不應(yīng)該允許NULL队丝。
可以使用多個列作為聯(lián)合主鍵,但聯(lián)合主鍵并不常用欲鹏。

外鍵

外鍵并不是通過列名實現(xiàn)的机久,而是通過定義外鍵約束實現(xiàn)的:
ALTER TABLE 表 1
ADD CONSTRAINT 外鍵約束名
FOREIGN KEY (表1中的需要定義外鍵的列名)

REFERENCES 表2 (關(guān)聯(lián)的外鍵列名);

通過定義外鍵約束,關(guān)系數(shù)據(jù)庫可以保證無法插入無效的數(shù)據(jù)赔嚎。即如果classes表不存在id=99的記錄膘盖,students表就無法插入class_id=99的記錄。

要刪除一個外鍵約束尽狠,也是通過ALTER TABLE實現(xiàn)的:
ALTER TABLE 表名
DROP FOREIGN KEY 外鍵約束名;

刪除外鍵約束并沒有刪除外鍵這一列衔憨。刪除列是通過DROP COLUMN ...實現(xiàn)的

關(guān)系數(shù)據(jù)庫通過外鍵可以實現(xiàn)一對多、多對多和一對一的關(guān)系袄膏。外鍵既可以通過數(shù)據(jù)庫來約束践图,也可以不設(shè)置約束,僅依靠應(yīng)用程序的邏輯來保證沉馆。

索引

索引的效率取決于索引列的值是否散列码党,即該列的值如果越互不相同德崭,那么索引效率越高。反過來揖盘,如果記錄的列存在大量相同的值眉厨,例如gender列,大約一半的記錄值是M兽狭,另一半是F憾股,因此,對該列創(chuàng)建索引就沒有意義箕慧。
如果要經(jīng)常根據(jù)score列進(jìn)行查詢服球,就可以對score列創(chuàng)建索引:
ALTER TABLE students

ADD INDEX idx_score (score);
可以對一張表創(chuàng)建多個索引。索引的優(yōu)點是提高了查詢效率颠焦,缺點是在插入斩熊、更新和刪除記錄時,需要同時修改索引伐庭,因此粉渠,索引越多,插入圾另、更新和刪除記錄的速度就越慢霸株。
對于主鍵,關(guān)系數(shù)據(jù)庫會自動對其創(chuàng)建主鍵索引盯捌。使用主鍵索引的效率是最高的淳衙,因為主鍵會保證絕對唯一。

在設(shè)計關(guān)系數(shù)據(jù)表的時候饺著,看上去唯一的列箫攀,例如身份證號、郵箱地址等幼衰,因為他們具有業(yè)務(wù)含義靴跛,因此不宜作為主鍵。
但是渡嚣,這些列根據(jù)業(yè)務(wù)要求梢睛,又具有唯一性約束:即不能出現(xiàn)兩條記錄存儲了同一個身份證號。這個時候识椰,就可以給該列添加一個唯一索引绝葡。例如,我們假設(shè)students表的name不能重復(fù):

通過UNIQUE關(guān)鍵字我們就添加了一個唯一索引腹鹉。
也可以只對某一列添加一個唯一約束而不創(chuàng)建唯一索引:
ALTER TABLE students

ADD CONSTRAINT uni_name UNIQUE (name);

這種情況下藏畅,name列沒有索引,但仍然具有唯一性保證功咒。
無論是否創(chuàng)建索引愉阎,對于用戶和應(yīng)用程序來說绞蹦,使用關(guān)系數(shù)據(jù)庫不會有任何區(qū)別。這里的意思是說榜旦,當(dāng)我們在數(shù)據(jù)庫中查詢時幽七,如果有相應(yīng)的索引可用,數(shù)據(jù)庫系統(tǒng)就會自動使用索引來提高查詢效率溅呢,如果沒有索引澡屡,查詢也能正常執(zhí)行,只是速度會變慢藕届。因此挪蹭,索引可以在使用數(shù)據(jù)庫的過程中逐步優(yōu)化亭饵。

通過對數(shù)據(jù)庫表創(chuàng)建索引休偶,可以提高查詢速度。
通過創(chuàng)建唯一索引辜羊,可以保證某一列的值具有唯一性踏兜。
數(shù)據(jù)庫索引對于用戶和應(yīng)用程序來說都是透明的

SELECT語句其實并不要求一定要有FROM子句,可以用于計算

如果不加括號八秃,條件運算按照NOT碱妆、AND、OR的優(yōu)先級進(jìn)行昔驱,即NOT優(yōu)先級最高疹尾,其次是AND,最后是OR骤肛。加上括號可以改變優(yōu)先級纳本。
使用ORDER BY score DESC, gender表示先按score列倒序,如果有相同分?jǐn)?shù)的腋颠,再按gender列排序:

OFFSET是可選的繁成,如果只寫LIMIT 15,那么相當(dāng)于LIMIT 15 OFFSET 0淑玫。 offset 以0開始巾腕,OFFSET超過了查詢的最大數(shù)量并不會報錯,而是得到一個空的結(jié)果集
MySQL中絮蒿,LIMIT 15 OFFSET 30還可以簡寫成LIMIT 30, 15尊搬。

要特別注意:如果聚合查詢的WHERE條件沒有匹配到任何行,COUNT()會返回0土涝,而SUM()佛寿、AVG()、MAX()和MIN()會返回NULL:

分組:在結(jié)果1的基礎(chǔ)上再進(jìn)行分組回铛。

join:

簡單地說狗准,就是先確定一個主表作為結(jié)果集克锣,然后,把其他表的行有選擇性地“連接”在主表結(jié)果集上腔长,on 條件是s.class_id = c.id袭祟,表示students表的class_id列與classes表的id列相同的行需要連接;
根據(jù)條件
INNER JOIN只返回同時存在于兩張表的行數(shù)據(jù)捞附,
RIGHT OUTER JOIN返回右表都存在的行巾乳。如果某一行僅在右表存在,那么結(jié)果集就會以NULL填充剩下的字段鸟召。
LEFT OUTER JOIN則返回左表都存在的行胆绊。

關(guān)系數(shù)據(jù)庫的基本操作就是增刪改查,即CRUD:Create欧募、Retrieve压状、Update、Delete跟继。其中种冬,對于查詢,我們已經(jīng)詳細(xì)講述了SELECT語句的詳細(xì)用法舔糖。

而對于增娱两、刪、改金吗,對應(yīng)的SQL語句分別是:
INSERT:插入新記錄十兢;
UPDATE:更新已有記錄;
DELETE:刪除已有記錄摇庙。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末旱物,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子跟匆,更是在濱河造成了極大的恐慌异袄,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件玛臂,死亡現(xiàn)場離奇詭異烤蜕,居然都是意外死亡,警方通過查閱死者的電腦和手機迹冤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進(jìn)店門讽营,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人泡徙,你說我怎么就攤上這事橱鹏。” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵莉兰,是天一觀的道長挑围。 經(jīng)常有香客問我,道長糖荒,這世上最難降的妖魔是什么杉辙? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮捶朵,結(jié)果婚禮上蜘矢,老公的妹妹穿的比我還像新娘。我一直安慰自己综看,他們只是感情好品腹,可當(dāng)我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著红碑,像睡著了一般舞吭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上句喷,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天镣典,我揣著相機與錄音,去河邊找鬼唾琼。 笑死,一個胖子當(dāng)著我的面吹牛澎剥,可吹牛的內(nèi)容都是我干的锡溯。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼哑姚,長吁一口氣:“原來是場噩夢啊……” “哼祭饭!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起叙量,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤倡蝙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后绞佩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體寺鸥,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年品山,在試婚紗的時候發(fā)現(xiàn)自己被綠了胆建。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡肘交,死狀恐怖笆载,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤凉驻,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布腻要,位于F島的核電站,受9級特大地震影響涝登,放射性物質(zhì)發(fā)生泄漏闯第。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一缀拭、第九天 我趴在偏房一處隱蔽的房頂上張望咳短。 院中可真熱鬧,春花似錦蛛淋、人聲如沸咙好。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽勾效。三九已至,卻和暖如春叛甫,著一層夾襖步出監(jiān)牢的瞬間层宫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工其监, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留萌腿,地道東北人。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓抖苦,卻偏偏與公主長得像毁菱,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子锌历,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,802評論 2 345

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