MySQL面试题 | 附答案解析(十三)
常用SQL語(yǔ)句
1. SQL語(yǔ)句主要分為哪幾類
數(shù)據(jù)定義語(yǔ)言DDL(Data Ddefinition Language)CREATE,DROP,ALTER
主要為以上操作 即對(duì)邏輯結(jié)構(gòu)等有操作的,其中包括表結(jié)構(gòu),視圖和索引。
數(shù)據(jù)查詢語(yǔ)言DQL(Data Query Language)SELECT
這個(gè)較為好理解 即查詢操作,以select關(guān)鍵字。各種簡(jiǎn)單查詢,連接查詢等 都屬于DQL。
數(shù)據(jù)操縱語(yǔ)言DML(Data Manipulation Language)INSERT,UPDATE,DELETE
主要為以上操作 即對(duì)數(shù)據(jù)進(jìn)行操作的,對(duì)應(yīng)上面所說的查詢操作 DQL與DML共同構(gòu)建了多數(shù)初級(jí)程序員常用的增刪改查操作。而查詢是較為特殊的一種 被劃分到DQL中。
數(shù)據(jù)控制功能DCL(Data Control Language)GRANT,REVOKE,COMMIT,ROLLBACK
主要為以上操作 即對(duì)數(shù)據(jù)庫(kù)安全性完整性等有操作的,可以簡(jiǎn)單的理解為權(quán)限控制等。
2. 超鍵、候選鍵、主鍵、外鍵分別是什么?
a.超鍵:在關(guān)系中能唯一標(biāo)識(shí)元組的屬性集稱為關(guān)系模式的超鍵。一個(gè)屬性可以為作為一個(gè)超鍵,多個(gè)屬性組合在一起也可以作為一個(gè)超鍵。超鍵包含候選鍵和主鍵。
b.候選鍵:是最小超鍵,即沒有冗余元素的超鍵。
c.主鍵:數(shù)據(jù)庫(kù)表中對(duì)儲(chǔ)存數(shù)據(jù)對(duì)象予以唯一和完整標(biāo)識(shí)的數(shù)據(jù)列或?qū)傩缘慕M合。一個(gè)數(shù)據(jù)列只能有一個(gè)主鍵,且主鍵的取值不能缺失,即不能為空值(Null)。
d.外鍵:在一個(gè)表中存在的另一個(gè)表的主鍵稱此表的外鍵。
3. SQL 約束有哪幾種?
a.NOT NULL: 用于控制字段的內(nèi)容一定不能為空(NULL)。
b.UNIQUE: 控件字段內(nèi)容不能重復(fù),一個(gè)表允許有多個(gè) Unique 約束。
c.PRIMARY KEY: 也是用于控件字段內(nèi)容不能重復(fù),但它在一個(gè)表只允許出現(xiàn)一個(gè)。
d.FOREIGN KEY: 用于預(yù)防破壞表之間連接的動(dòng)作,也能防止非法數(shù)據(jù)插入外鍵列,因?yàn)樗仨毷撬赶虻哪莻€(gè)表中的值之一。
e.CHECK: 用于控制字段的值范圍。
4. 六種關(guān)聯(lián)查詢
a.交叉連接(CROSS JOIN)
b.內(nèi)連接(INNER JOIN)
c.外連接(LEFT JOIN/RIGHT JOIN)
d.聯(lián)合查詢(UNION與UNION ALL)
e.全連接(FULL JOIN)
f.交叉連接(CROSS JOIN)
g.SELECT * FROM A,B(,C)或者SELECT * FROM A CROSS JOIN B (CROSS JOIN C)#沒有任何關(guān)聯(lián)條件
內(nèi)連接分為三類
a.等值連接:ON A.id=B.id
b.不等值連接:ON A.id > B.id
c.自連接:SELECT * FROM A T1 INNER JOIN A T2 ON T1.id=T2.pid
d.外連接(LEFT JOIN/RIGHT JOIN)
e.左外連接:LEFT OUTER JOIN, 以左表為主,先查詢出左表,按照ON后的關(guān)聯(lián)條件匹配右表,沒有匹配到的用NULL填充,可以簡(jiǎn)寫成LEFT JOIN
f.右外連接:RIGHT OUTER JOIN, 以右表為主,先查詢出右表,按照ON后的關(guān)聯(lián)條件匹配左表,沒有匹配到的用NULL填充,可以簡(jiǎn)寫成RIGHT JOIN
聯(lián)合查詢(UNION與UNION ALL)
SELECT * FROM A UNION SELECT * FROM B UNION …
a.就是把多個(gè)結(jié)果集集中在一起,UNION前的結(jié)果為基準(zhǔn),需要注意的是聯(lián)合查詢的列數(shù)要相等,相同的記錄行會(huì)合并如果使用UNION ALL,不會(huì)合并重復(fù)的記錄行
b.效率 UNION 高于 UNION ALL
全連接(FULL JOIN)
a.MySQL不支持全連接
b.可以使用LEFT JOIN 和UNION和RIGHT JOIN聯(lián)合使用
SELECT * FROM A LEFT JOIN B ON A.id=B.id UNIONSELECT * FROM A RIGHT JOIN B ON A.id=B.id
表連接面試題
有2張表,1張R、1張S,R表有ABC三列,S表有CD兩列,表中各有三條記錄。
R表
S表
最后,小編分類整理了許多java進(jìn)階學(xué)習(xí)材料和BAT面試給熱愛IT行業(yè)的你,如果需要資料的請(qǐng)轉(zhuǎn)發(fā)此文章后再私聊小編回復(fù)【java】就能領(lǐng)取2019年java進(jìn)階學(xué)習(xí)資料和BAT面試題以及《Effective Java》(第3版)電子版書籍。也可以加群:712263501領(lǐng)取海量學(xué)習(xí)資料進(jìn)行學(xué)習(xí)。
總結(jié)
以上是生活随笔為你收集整理的MySQL面试题 | 附答案解析(十三)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “绿杨陌上送行人”下一句是什么
- 下一篇: MySQL面试题 | 附答案解析(十四)