Mysql基础面试题及查询联系
一、 基礎(chǔ)知識
1. 什么是數(shù)據(jù)庫?
數(shù)據(jù)庫(Database)是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的倉庫
2. 什么是關(guān)系型數(shù)據(jù)庫,主鍵,外鍵,索引分別是什么?
關(guān)系型數(shù)據(jù)庫是由多張能互相聯(lián)接的二維行列表格組成的數(shù)據(jù)庫
主關(guān)鍵字(primary key)是表中的一個或多個字段,它的值用于唯一地標識表中的某一條記錄
外鍵表示了兩個關(guān)系之間的相關(guān)聯(lián)系。以另一個關(guān)系的外鍵作主關(guān)鍵字的表被稱為主表,具有此外鍵的表被稱
為主表的從表。外鍵又稱作外關(guān)鍵字
在關(guān)系數(shù)據(jù)庫中,索引是一種單獨的、物理的對數(shù)據(jù)庫表中一列或多列的值進行排序的一種存儲結(jié)構(gòu),它是某
個表中一列或若干列值的集合和相應(yīng)的指向表中物理標識這些值的數(shù)據(jù)頁的邏輯指針清單
3. 表的連接查詢方式有哪些,有什么區(qū)別?
交叉連接即笛卡兒乘積,是指兩個關(guān)系中所有元組的任意組合
使用內(nèi)連接時,如果兩個表的相關(guān)字段滿足連接條件,就從這兩個表中提取數(shù)據(jù)并組合成新的記錄
自連接是一種特殊的內(nèi)連接,它是指相互連接的表在物理上為同一張表,但可以在邏輯上分為兩張表
外連接是只限制一張表中的數(shù)據(jù)必須滿足連接條件,而另一張表中的數(shù)據(jù)可以不滿足連接條件的連接方式
4. SQL 的 select 語句完整的執(zhí)行順序?
1、from 子句組裝來自不同數(shù)據(jù)源的數(shù)據(jù);
2、where 子句基于指定的條件對記錄行進行篩選;
3、group by 子句將數(shù)據(jù)劃分為多個分組;
4、使用聚集函數(shù)進行計算;
5、使用 having 子句篩選分組;
6、計算所有的表達式;
7、select 的字段;
8、使用 order by 對結(jié)果集進行排序。
5. 說一下 Mysql 數(shù)據(jù)庫存儲的原理?
儲存過程是一個可編程的函數(shù),它在數(shù)據(jù)庫中創(chuàng)建并保存。它可以有 SQL 語句和一些特殊的控制結(jié)構(gòu)組成。
當希望在不同的應(yīng)用程序或平臺上執(zhí)行相同的函數(shù),或者封裝特定功能時,存儲過程是非常有用的。數(shù)據(jù)庫中的存
儲過程可以看做是對編程中面向?qū)ο蠓椒ǖ哪M。它允許控制數(shù)據(jù)的訪問方式。存儲過程通常有以下優(yōu)點:
1、存儲過程能實現(xiàn)較快的執(zhí)行速度
2、存儲過程允許標準組件是編程。
3、存儲過程可以用流程控制語句編寫,有很強的靈活性,可以完成復雜的判斷和較復雜的運算。
4、存儲過程可被作為一種安全機制來充分利用。
5、存儲過程能夠減少網(wǎng)絡(luò)流量
6. 事務(wù)的特性?
1、原子性(Atomicity):事務(wù)中的全部操作在數(shù)據(jù)庫中是不可分割的,要么全部完成,要么均不執(zhí)行。
2、一致性(Consistency):幾個并行執(zhí)行的事務(wù),其執(zhí)行結(jié)果必須與按某一順序串行執(zhí)行的結(jié)果相一致。
3、隔離性(Isolation):事務(wù)的執(zhí)行不受其他事務(wù)的干擾,事務(wù)執(zhí)行的中間結(jié)果對其他事務(wù)必須是透明的。
4、持久性(Durability):對于任意已提交事務(wù),系統(tǒng)必須保證該事務(wù)對數(shù)據(jù)庫的改變不被丟失,即使數(shù)據(jù)庫出現(xiàn)
故障
7. 數(shù)據(jù)庫索引
數(shù)據(jù)庫索引,是數(shù)據(jù)庫管理系統(tǒng)中一個排序的數(shù)據(jù)結(jié)構(gòu),以協(xié)助快速查詢、更新數(shù)據(jù)庫表中數(shù)據(jù)。索引的實現(xiàn)
通常使用 B_TREE。B_TREE 索引加速了數(shù)據(jù)訪問,因為存儲引擎不會再去掃描整張表得到需要的數(shù)據(jù);相反,它
從根節(jié)點開始,根節(jié)點保存了子節(jié)點的指針,存儲引擎會根據(jù)指針快速尋找數(shù)據(jù)。
8. 數(shù)據(jù)庫怎么優(yōu)化查詢效率?
1、儲存引擎選擇:如果數(shù)據(jù)表需要事務(wù)處理,應(yīng)該考慮使用 InnoDB,因為它完全符合 ACID 特性。如果不需
要事務(wù)處理,使用默認存儲引擎 MyISAM 是比較明智的
2、分表分庫,主從。
3、對查詢進行優(yōu)化,要盡量避免全表掃描,首先應(yīng)考慮在 where 及 order by 涉及的列上建立索引
4、應(yīng)盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃描
5、應(yīng)盡量避免在 where 子句中使用!= 或<> 操作符,否則將引擎放棄使用索引而進行全表掃描
6、應(yīng)盡量避免在 where 子句中使用 or 來連接條件,如果一個字段有索引,一個字段沒有索引,將導致引擎
放棄使用索引而進行全表掃描
7、Update 語句,如果只更改 1、2 個字段,不要 Update 全部字段,否則頻繁調(diào)用會引起明顯的性能消耗,
同時帶來大量日志
8、對于多張大數(shù)據(jù)量(這里幾百條就算大了)的表 JOIN,要先分頁再 JOIN,否則邏輯讀會很高,性能很差。
9. 你用的 Mysql 是哪個引擎,各引擎之間有什么區(qū)別?
主要 MyISAM 與 InnoDB 兩個引擎,其主要區(qū)別如下:InnoDB 支持事務(wù),MyISAM 不支持,這一點是非常
之重要。事務(wù)是一種高級的處理方式,如在一些列增刪改中只要哪個出錯還可以回滾還原,而 MyISAM 就不可以了;
MyISAM 適合查詢以及插入為主的應(yīng)用,InnoDB 適合頻繁修改以及涉及到安全性較高的應(yīng)用;
InnoDB 支持外鍵,MyISAM 不支持;
MyISAM 是默認引擎,InnoDB 需要指定;
InnoDB 不支持 FULLTEXT 類型的索引;
InnoDB 中不保存表的行數(shù),如 select count() from table 時,InnoDB;需要掃描一遍整個表來計算有多少行,
但是 MyISAM 只要簡單的讀出保存好的行數(shù)即可。注意的是,當 count()語句包含 where 條件時 MyISAM 也需要
掃描整個表;
對于自增長的字段,InnoDB 中必須包含只有該字段的索引,但是在 MyISAM 表中可以和其他字
段一起建立聯(lián)合索引;清空整個表時,InnoDB 是一行一行的刪除,效率非常慢。MyISAM 則會重建表;
InnoDB 支持行鎖(某些情況下還是鎖整表,如 update table set a=1 where user like ‘%lee%’
10.如何對查詢命令進行優(yōu)化?
a. 應(yīng)盡量避免全表掃描,首先應(yīng)考慮在 where 及 order by 涉及的列上建立索。
b. 應(yīng)盡量避免在 where 子句中對字段進行 null 值判斷,避免使用!=或<>操作符,避免使用 or
連接條件,或在 where 子句中使用參數(shù)、對字段進行表達式或函數(shù)操作,否則會導致權(quán)標掃描
c. 不要在 where 子句中的“=”左邊進行函數(shù)、算術(shù)運算或其他表達式運算,否則系統(tǒng)將可能無
法正確使用索引。
d. 使用索引字段作為條件時,如果該索引是復合索引,那么必須使用到該索引中的第一個字段作為
條件時才能保證系統(tǒng)使用該索引,否則該索引將不會被使用。
e. 很多時候可考慮用 exists 代替 in。
f. 盡量使用數(shù)字型字段。
g. 盡可能的使用 varchar/nvarchar 代替 char/nchar。
h. 任何地方都不要使用 select from t ,用具體的字段列表代替“”,不要返回用不到的任何字段。
i. 盡量使用表變量來代替臨時表。
j. 避免頻繁創(chuàng)建和刪除臨時表,以減少系統(tǒng)表資源的消耗。
k. 盡量避免使用游標,因為游標的效率較差。
l. 在所有的存儲過程和觸發(fā)器的開始處設(shè)置 SET NOCOUNT ON ,在結(jié)束時設(shè)置 SET NOCOUNT OFF。
m. 盡量避免大事務(wù)操作,提高系統(tǒng)并發(fā)能力。
n. 盡量避免向客戶端返回大數(shù)據(jù)量,若數(shù)據(jù)量過大,應(yīng)該考慮相應(yīng)需求是否合理。
11.數(shù)據(jù)庫的優(yōu)化?
1.優(yōu)化索引、SQL 語句、分析慢查詢;
2.設(shè)計表的時候嚴格根據(jù)數(shù)據(jù)庫的設(shè)計范式來設(shè)計數(shù)據(jù)庫;
3.使用緩存,把經(jīng)常訪問到的數(shù)據(jù)而且不需要經(jīng)常變化的數(shù)據(jù)放在緩存中,能節(jié)約磁盤 IO
4.優(yōu)化硬件;采用 SSD,使用磁盤隊列技術(shù)(RAID0,RAID1,RDID5)等
5.采用 MySQL 內(nèi)部自帶的表分區(qū)技術(shù),把數(shù)據(jù)分層不同的文件,能夠提高磁盤的讀取效率;
6.垂直分表;把一些不經(jīng)常讀的數(shù)據(jù)放在一張表里,節(jié)約磁盤 I/O;
7.主從分離讀寫;采用主從復制把數(shù)據(jù)庫的讀操作和寫入操作分離開來;
8.分庫分表分機器(數(shù)據(jù)量特別大),主要的的原理就是數(shù)據(jù)路由;
9.選擇合適的表引擎,參數(shù)上的優(yōu)化
10.進行架構(gòu)級別的緩存,靜態(tài)化和分布式;
11.不采用全文索引;
12.采用更快的存儲方式,例如 NoSQL 存儲經(jīng)常訪問的數(shù)據(jù)。
12.Sql 注入是如何產(chǎn)生的,如何防止?
程序開發(fā)過程中不注意規(guī)范書寫 sql 語句和對特殊字符進行過濾,導致客戶端可以通過全局變量 POST 和 GET
提交一些 sql 語句正常執(zhí)行。產(chǎn)生 Sql 注入。下面是防止辦法:
a. 過濾掉一些常見的數(shù)據(jù)庫操作關(guān)鍵字,或者通過系統(tǒng)函數(shù)來進行過濾。
b. 在 PHP 配置文件中將 Register_globals=off;設(shè)置為關(guān)閉狀態(tài)
c. SQL 語句書寫的時候盡量不要省略小引號(tab 鍵上面那個)和單引號
d. 提高數(shù)據(jù)庫命名技巧,對于一些重要的字段根據(jù)程序的特點命名,取不易被猜到的
e. 對于常用的方法加以封裝,避免直接暴漏 SQL 語句
f. 開啟 PHP 安全模式:Safe_mode=on;
g. 打開 magic_quotes_gpc 來防止 SQL 注入
h. 控制錯誤信息:關(guān)閉錯誤提示信息,將錯誤信息寫到系統(tǒng)日志。
i. 使用 mysqli 或 pdo 預處理。
13.NoSQL 和關(guān)系數(shù)據(jù)庫的區(qū)別?
a. SQL 數(shù)據(jù)存在特定結(jié)構(gòu)的表中;而 NoSQL 則更加靈活和可擴展,存儲方式可以省是 JSON 文檔、哈希表
或者其他方式。
b. 在 SQL 中,必須定義好表和字段結(jié)構(gòu)后才能添加數(shù)據(jù),例如定義表的主鍵(primary key),索引(index),觸發(fā)
器(trigger),存儲過程(stored procedure)等。表結(jié)構(gòu)可以在被定義之后更新,但是如果有比較大的結(jié)構(gòu)變更的話就會
變得比較復雜。在 NoSQL 中,數(shù)據(jù)可以在任何時候任何地方添加,不需要
先定義表。
c. SQL 中如果需要增加外部關(guān)聯(lián)數(shù)據(jù)的話,規(guī)范化做法是在原表中增加一個外鍵,關(guān)聯(lián)外部數(shù)據(jù)表。而在
NoSQL 中除了這種規(guī)范化的外部數(shù)據(jù)表做法以外,我們還能用如下的非規(guī)范化方式把外部數(shù)據(jù)直接放到原數(shù)據(jù)集
中,以提高查詢效率。缺點也比較明顯,更新審核人數(shù)據(jù)的時候?qū)容^麻煩。
d. SQL 中可以使用 JOIN 表鏈接方式將多個關(guān)系數(shù)據(jù)表中的數(shù)據(jù)用一條簡單的查詢語句查詢出來。
NoSQL 暫未提供類似 JOIN 的查詢方式對多個數(shù)據(jù)集中的數(shù)據(jù)做查詢。所以大部分 NoSQL 使用非規(guī)范化的
數(shù)據(jù)存儲方式存儲數(shù)據(jù)。
e. SQL 中不允許刪除已經(jīng)被使用的外部數(shù)據(jù),而 NoSQL 中則沒有這種強耦合的概念,可以隨時刪除任何數(shù)
據(jù)。
f. SQL 中如果多張表數(shù)據(jù)需要同批次被更新,即如果其中一張表更新失敗的話其他表也不能更新成
功。這種場景可以通過事務(wù)來控制,可以在所有命令完成后再統(tǒng)一提交事務(wù)。而 NoSQL 中沒有事務(wù)這個概念,
每一個數(shù)據(jù)集的操作都是原子級的。
g. 在相同水平的系統(tǒng)設(shè)計的前提下,因為 NoSQL 中省略了 JOIN 查詢的消耗,故理論上性能上是優(yōu)于 SQL 的。
14.MySQL 與 MongoDB 本質(zhì)之間最基本的差別是什么
差別在多方面,例如:數(shù)據(jù)的表示、查詢、關(guān)系、事務(wù)、模式的設(shè)計和定義、速度和性能。MongoDB 是由 C++
語言編寫的,是一個基于分布式文件存儲的開源數(shù)據(jù)庫系統(tǒng)。在高負載的情況下,添加更多的節(jié)點,可以保證服務(wù)
器性能。
MongoDB 旨在為 WEB 應(yīng)用提供可擴展的高性能數(shù)據(jù)存儲解決方案。
MongoDB 將數(shù)據(jù)存儲為一個文檔,數(shù)據(jù)結(jié)構(gòu)由鍵值(key=>value)對組成。MongoDB 文檔類似于 JSON 對象。
字段值可以包含其他文檔,數(shù)組及文檔數(shù)組。
MongoDB 是一個面向文檔的數(shù)據(jù)庫,目前由 10gen 開發(fā)并維護,它的功能豐富齊全,所以完全可以替代
MySQL。
與 MySQL 等關(guān)系型數(shù)據(jù)庫相比,MongoDB 的優(yōu)點如下:
①弱一致性,更能保證用戶的訪問速度。
②文檔結(jié)構(gòu)的存儲方式,能夠更便捷的獲取數(shù)據(jù)。
③內(nèi)置 GridFS,支持大容量的存儲。
④內(nèi)置 Sharding。
⑤第三方支持豐富。(這是與其他的 NoSQL 相比,MongoDB 也具有的優(yōu)勢)
⑥性能優(yōu)越:
MongoDB 本身它還算比較年輕的一個產(chǎn)品,所以它的問題,就是成熟度肯定沒有傳統(tǒng) MySQL 那么成熟穩(wěn)定。
所以在使用的時候:
盡量使用穩(wěn)定版,不要在線上使用開發(fā)版,這是一個大原則;
另外一點,備份很重要,MongoDB 如果出現(xiàn)一些異常情況,備份一定是要能跟上。除了通過傳統(tǒng)的復制的方
式來做備份,離線備份也還是要有,不管你是用什么方式,都要有一個完整的離線備份。往往最后出現(xiàn)了特殊情況,
它能幫助到你;另外,MongoDB 性能的一個關(guān)鍵點就是索引,索引是不是能有比較好的使用效率,索引是不是能
夠放在內(nèi)存中,這樣能夠提升隨機讀寫的性能。如果你的索引不能完全放在內(nèi)存中,一旦出現(xiàn)隨機讀寫比較高的時
候,它就會頻繁地進行磁盤交換,這個時候,MongoDB 的性能就會急劇下降,會出現(xiàn)波動。
另外,MongoDB 還有一個最大的缺點,就是它占用的空間很大,因為它屬于典型空間換時間原則的類型。那
么它的磁盤空間比普通數(shù)據(jù)庫會浪費一些,而且到目前為止它還沒有實現(xiàn)在線壓縮功能,在 MongoDB 中頻繁的進
行數(shù)據(jù)增刪改時,如果記錄變了,例如數(shù)據(jù)大小發(fā)生了變化,這時候容易產(chǎn)生一些數(shù)據(jù)碎片,出現(xiàn)碎片引發(fā)的結(jié)果,
一個是索引會出現(xiàn)性能問題。
另外一個就是在一定的時間后,所占空間會莫明其妙地增大,所以要定期把數(shù)據(jù)庫做修復,定期重新做索引,
這樣會提升 MongoDB 的穩(wěn)定性和效率。在最新的版本里,它已經(jīng)在實現(xiàn)在線壓縮,估計應(yīng)該在 2.0 版左右,應(yīng)該
能夠?qū)崿F(xiàn)在線壓縮,可以在后臺執(zhí)行現(xiàn)在 repair DataBase 的一些操作。
如果那樣,就解決了目前困擾我們的大問題。
15.Mysql 數(shù)據(jù)庫中怎么實現(xiàn)分頁?
select * from table limit (start-1)*limit,limit; 其中 start 是頁碼,limit 是每頁顯示的條數(shù)。
16.Mysql 數(shù)據(jù)庫的操作?
修改表-修改字段,重命名版:
alter table 表名 change 原名新名類型及約束;
alter table students change birthday birth datetime not null;
修改表-修改字段,不重名版本:
alter table 表名 modify 列名類型和約束;
alter table students modify birth date not null
全列插入:insert into 表名 values(…)
insert into students values(0,“郭靖”, 1,“內(nèi)蒙”,“2017-6”);
部分插入:值的順序與給出的列順序?qū)?yīng):
insert into students(name, birthday) values(“黃蓉”,“2017-8”);
修改:update 表名 set 列 1=值 1,列 2=值 2.。。where
update students set gender=0, homwtown=“古墓”, where id = 5;
備份:mysqldump -uroot -p 數(shù)據(jù)庫名 > python.sql,
恢復:mysql -uroot -p 數(shù)據(jù)庫名< python.sql
17.優(yōu)化數(shù)據(jù)庫?提高數(shù)據(jù)庫的性能?
1.對語句的優(yōu)化
①用程序中,保證在實現(xiàn)功能的基礎(chǔ)上,盡量減少對數(shù)據(jù)庫的訪問次數(shù);通過搜索參數(shù),盡量減少對表的訪問
行數(shù),最小化結(jié)果集,從而減輕網(wǎng)絡(luò)負擔;
②能夠分開的操作盡量分開處理,提高每次的響應(yīng)速度;在數(shù)據(jù)窗口使用 SQL 時,盡量把使用的索引放在選
擇的首列;算法的結(jié)構(gòu)盡量簡單;
③在查詢時,不要過多地使用通配符如 SELECT * FROM T1 語句,要用到幾列就選擇幾列如:SELECT
COL1,COL2 FROM T1;
④在可能的情況下盡量限制盡量結(jié)果集行數(shù)如:SELECT TOP 300 COL1,COL2,COL3 FROMT1,因為某些情況
下用戶是不需要那么多的數(shù)據(jù)的。
⑤不要在應(yīng)用中使用數(shù)據(jù)庫游標,游標是非常有用的工具,但比使用常規(guī)的、面向集的 SQL 語句需要更大的
開銷;按照特定順序提取數(shù)據(jù)的查找。
2. 避免使用不兼容的數(shù)據(jù)類型
例如 float 和 int、char 和 varchar、binary 和 varbinary 是不兼容的。
數(shù)據(jù)類型的不兼容可能使優(yōu)化器無法執(zhí)行一些本來可以進行的優(yōu)化操作。
例如:
SELECT name FROM employee WHERE salary > 60000
在這條語句中,如 salary 字段是 money 型的,則優(yōu)化器很難對其進行優(yōu)化,因為 60000 是個整型數(shù)。我們應(yīng)當在
編程時將整型轉(zhuǎn)化成為錢幣型,而不要等到運行時轉(zhuǎn)化。若在查詢時強制轉(zhuǎn)換,查詢速度會明顯減慢。
3.避免在 WHERE 子句中對字段進行函數(shù)或表達式操作。
若進行函數(shù)或表達式操作,將導致引擎放棄使用索引而進行全表掃描。
4.避免使用!=或<>、IS NULL 或 IS NOT NULL、IN ,NOT IN 等這樣的操作符
5.盡量使用數(shù)字型字段
6.合理使用 EXISTS,NOT EXISTS 子句。
7.盡量避免在索引過的字符數(shù)據(jù)中,使用非打頭字母搜索。
8.分利用連接條件
9.消除對大型表行數(shù)據(jù)的順序存取
10. 避免困難的正規(guī)表達式
11. 使用視圖加速查詢
12. 能夠用 BETWEEN 的就不要用 IN
13. DISTINCT 的就不用 GROUP BY
14. 部分利用索引
15. 能用 UNION ALL 就不要用 UNION
16. 不要寫一些不做任何事的查詢
17. 盡量不要用 SELECT INTO 語句
18. 必要時強制查詢優(yōu)化器使用某個索引
19. 雖然 UPDATE、DELETE 語句的寫法基本固定,但是還是對 UPDATE 語句給點建議:
a) 盡量不要修改主鍵字段。
b) 當修改 VARCHAR 型字段時,盡量使用相同長度內(nèi)容的值代替。
c) 盡量最小化對于含有 UPDATE 觸發(fā)器的表的 UPDATE 操作。
d) 避免 UPDATE 將要復制到其他數(shù)據(jù)庫的列。
e) 避免 UPDATE 建有很多索引的列。
f) 避免 UPDATE 在 WHERE 子句條件中的列。
18.存儲過程和函數(shù)的區(qū)別?
相同點:存儲過程和函數(shù)都是為了可重復的執(zhí)行操作數(shù)據(jù)庫的 sql 語句的集合。
1)存儲過程和函數(shù)都是一次編譯,就會被緩存起來,下次使用就直接命中已經(jīng)編譯好的 sql 語句,不需要重復
使用。減少網(wǎng)絡(luò)交互,減少網(wǎng)絡(luò)訪問流量。
不同點:標識符不同,函數(shù)的標識符是 function,存儲過程是 proceduce。
1)函數(shù)中有返回值,且必須有返回值,而過程沒有返回值,但是可以通過設(shè)置參數(shù)類型(in,out)來實現(xiàn)多個參
數(shù)或者返回值。
2)存儲函數(shù)使用 select 調(diào)用,存儲過程需要使用 call 調(diào)用。
3)select 語句可以在存儲過程中調(diào)用,但是除了 select…into 之外的 select 語句都不能在函數(shù)中使用。
4)通過 in out 參數(shù),過程相關(guān)函數(shù)更加靈活,可以返回多個結(jié)果。
19.Mysql 開啟 General-log 日志?
Show variables like ‘general%’;
Set global general_log=1;
Set global general_log=0;
二、 查詢聯(lián)系
1.Student-Sourse-SC-Teacher 表關(guān)系如下:
? Student(sid,Sname,Sage,Ssex)學生表
? Course(cid,Cname,tid)課程表
? SC(sid,cid,score)成績表
? Teacher(tid,Tname)教師表
寫出 sql 語句:
? 查詢課程“001“課程比”002“課程成績高的所有學生的學號
? 修改學號為 20131201 的語文成績?yōu)?100‘
? 插入一條名為“李四”的教師記錄
? 刪除學習“葉平”老師課程的 sc 表記錄
2.員工信息 A-員工親屬信息表 B 表關(guān)系如下:
? 員工信息表A:員工標號(codecode,PK),員工姓名(codename),員工性別(codesex),聯(lián)系電話(codetel),
備注(remarks)
? 員工親屬信息表 B:員工編碼(codecode),親屬編碼(recodecode,PK),親屬姓名(recodename),
聯(lián)系電話(recodetel),備注(remarks)
寫出 sql 語句:
? 向員工信息表中插入一條數(shù)據(jù):(001,張三,男,010-62570007,北京市海淀區(qū))
? 查詢出親屬數(shù)量大于 1 的員工編碼,員工姓名,員工親屬數(shù)量有部分員工親屬信息重復錄入(親屬編碼不
同,其他相同),出現(xiàn)這種情況的員工編碼,重復的親屬編碼,親屬姓名查詢出來。
3.部門表 dept-雇員表 emp 表關(guān)系如下:
? 部門表 dept:部門標號(DEPTNO),部門名稱(DNAME),所在位置(LOC)
? 雇員表 emp:員工標號(Empno),員工名稱(Emname),員工工位(Job),經(jīng)理(Mgr),雇傭日期(Hiredate),
薪水(Sal),部門編號(Deptno)
寫出 sql 語句:
? 找出部門名稱為 ACCOUNTING 的部門下的所有員工名稱?
? 找出部門名稱為 SALES 的部門下每月需要發(fā)出的薪水總額?
? 找出部門名稱為 SALES 的部門的部門經(jīng)理?
? 找出部門名稱為 RESEARCH 的部門下雇傭日期為 1980-12-17 的員工?
4.Student-coures-Studentcourse 表關(guān)系如下:
? student(sno,sname,age,sdept) 學生表
? course(cno,cname,teacher) 課程表
? Studentcourse(sno,cno,grade)選課表
寫出 sql 語句:
? 查詢所有課程都及格的學生號和姓名
? 查詢平均分不及格的課程號和平均成績
? 找出各門課程的平均成績,輸出課程號和平均成績
? 找出沒有選擇 c2 課程的學生信息
總結(jié)
以上是生活随笔為你收集整理的Mysql基础面试题及查询联系的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux 命令行批处理图片,批量去除截
- 下一篇: 模拟电子线路复习笔记(五) —— 低频功