3-面試題匯總-數據庫相關._第1頁
3-面試題匯總-數據庫相關._第2頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、北京市海淀區(qū)清河清景園3 號樓 1 單元 9 層 郵編:100085電話52717923 52717924http:/面試題匯總一一數據庫相關1、寫出三種以上 MySQL 數據庫存儲引擎的名稱(提示:不區(qū)分大小寫)2、說出你所知道的三種以上開源數據庫的名稱(提示:想想目前國外流行的開源數據庫)3、 MySQL 數據庫中的字段類型 varchar 和 char 的主要區(qū)別是什么?那種字段的查找效率要 高,為什么?4、說出 MySQL 4.0 和 MySQL 4.1 版本的最主要的兩個區(qū)別。如果你使用過MySQL 5,請說說 MySQL 5 跟 MySQL 4 的主要區(qū)

2、別。(后半題選作)5、MySQL 數據庫基本的三個優(yōu)化法則是什么?(提示:從服務配置、應用、開發(fā)角度考慮)6、優(yōu)化 MYSQL 數據庫的方法。(1) .數據庫設計方面,這是 DBA 和 Architect 的責任,設計結構良好的數據庫,必要的時候,去正 規(guī)化(英文是這個:de normalize,中文翻譯成啥我不知道),允許部分數據冗余,避免 JOIN 操作,以 提高查詢效率(2) .系統(tǒng)架構設計方面,表散列,把海量數據散列到幾個不同的表里面快慢表,快表只留最新數據,慢表是歷史存檔集群,主服務器 Read & write,從服務器 read only,或者 N 臺服務器,各機器 互為

3、Master和超越 PHP Programmer 的要求了,會更好,不會沒關系檢查有沒有少加索引(4) .寫高效的 SQL 語句,看看有沒有寫低效的 SQL 語句,比如生成笛卡爾積的全連接啊,大量的 GroupBy 和 order by,沒有 limit 等等.必要的時候,把數據庫邏輯封裝到 DBMS 端的存儲過程 里面緩存查詢結果,explain 每一個 sql 語句(5) .所得皆必須,只從數據庫取必需的數據,比如查詢某篇文章的評論數,select count(*) .where article_id = ? 就可以了 ,不要先 select * . where article_id =

4、?然后 msql_num_rows. 只傳送必須的SQL 語句,比如修改文章的時候,如果用戶只修改了標題,那就 update . set title =? where article_id = ?不要 set content = ?(大文本)(6) .必要的時候用不同的存儲引擎.比如 InnoDB 可以減少死鎖.HEAP 可以提高一個數量級的查詢速度.7、談談事務處理如同是個編程語言都會有答應 Hello World 的例子一樣,是本數據庫的教材都會講 A 給 B 的賬 戶轉賬 50美元的例子,回答這個就好了 .不過據我所知,用 MySQL 的企業(yè),很少用 MySQL 來實 現(xiàn)事務處理.何況現(xiàn)

5、在 Oracle 收購了 InnoDB 的公司.答:事務就是一系列的操作,這些操作完成一項任務。只要這些操作里有一個操作沒有成功 事務就操作失敗,發(fā)生回滾事件。即撤消前面的操作,這樣可以保證數據的一致性。而且可以把操作暫時放在緩存里,等所有操作都成功有提交數據庫,這樣保證費時的操作都是有效操作。北京星模實訓學校培養(yǎng) IT 界的明星模特北京市海淀區(qū)清河清景園3 號樓 1 單元 9 層 郵編:100085電話52717923 52717924http:/title 文章標題content 文章內容 category_id 文章分類 id hits 點擊量創(chuàng)建上表,寫出

6、MySQL 語句9、同樣上述內容管理系統(tǒng):表comment 記錄用戶回復內容,字段如下comment_id 回復 idid 文章 id,關聯(lián) message 表中的 idcomment_content 回復內容現(xiàn)通過查詢數據庫需要得到以下格式的文章標題列表,并按照回復數量排序,回復最高的排在最前面文章 id 文章標題點擊量 回復數量用一個 SQL 語句完成上述查詢,如果文章沒有回復則回復數量顯示為010、 上述內容管理系統(tǒng),表category 保存分類信息,字段如下category_id in t(4) n ot n ull auto_i ncreme nt;categroy_ name va

7、rchar(40) not n ull;用戶輸入文章時,通過選擇下拉菜單選定文章分類寫出如何實現(xiàn)這個下拉菜單11、數據庫設計題:請設計一套圖書館借書管理系統(tǒng)的數據庫表結構;可以記錄基本的用戶信息、圖書信息、借還書信息;數據表的個數不超過6 個;請畫表格描述表結構(需要說明每個字段的字段名、字段類型、字段含義描述);在數據庫設計中應:a.保證每個用戶的唯一性;b.保證每種圖書的唯一性;每種圖書對應不等本數的多本圖書;保證每本圖書的唯一性;c.借書信息表中,應同時考慮借書行為與還書行為,考慮借書期限;d.保證借書信息表與用戶表、圖書信息表之間的參照完整性;e.限制每個用戶最大可借書的本數f.若有新

8、用戶注冊或新書入庫,保證自動生成其唯一性標識g.為以下的一系列報表需求提供支持:北京星模實訓學校培養(yǎng) IT 界的明星模特&某內容管理系統(tǒng)中,表id 文章 idmessage 有如下字段北京市海淀區(qū)清河清景園3 號樓 1 單元 9 層 郵編:100085電話52717923 52717924http:/(無特定說明,不需編寫實現(xiàn)語句,而需在數據庫設計中,保證這些報表可以用最多一條SQL 語句實現(xiàn))/ 北京星模實訓學校培養(yǎng) IT 界的明星模特北京市海淀區(qū)清河清景園3 號樓 1 單元 9 層 郵編:100085電話52717923 52

9、717924http:/XHSIGMOa)日統(tǒng)計報表:當日借書本數、當日還書本數報表;b)實時報表:i.當前每種書的借出本數、可借本數;ii.當前系統(tǒng)中所有超期圖書、用戶的列表及其超期天數iii. 當前系統(tǒng)中所有用戶借書的本數,分用戶列出(包括沒有借書行為的用戶);請編寫實現(xiàn)此需求的 SQL 語句:數據庫應用:請撰寫一系列的 SQL 語句,分別描述完整的借書行為與還書行為;并保證這一系列的SQL語句的執(zhí)行完整性下題是測驗能力之最重要測試,如不能完成我們將無法給出評判結果!所以請寫出詳細的回答,并保證答案是可以執(zhí)行的程序。在兩日內將結果通過電子郵件寄到 郵箱結合第二題中你的設計,用一種數據庫實現(xiàn)

10、,要求使用三層結構或者多層結構,要求采用面向對象的思想進行編程,有可能的話,設計一套模板機制來實現(xiàn)之。功能:列出當前借出圖書的情況,按日期排列編號用戶姓名書名書的編號借出日期1. 張進大染坊 12576587 2004-9-12. 劉興 西游記 32131098 2004-9-212、 SQL 中 LEFT JOIN 的含義是 (16) 。 如果 tbl_user 記錄了學生的姓名 (name) 和學號(ID) ,tbl_score記錄了學生(有的學生考試以后被開除了,沒有其記錄)的學號(ID)和考試成績(score)以及考試科目(subject),要想打印出各個學生姓名及對應的的各科總成績,

11、則可以用 SQL 語句(17)。自然左外連接select n ame, coun t(score) as sum_score from tbl_user left join tbl_score ontbl_user.ID=tbl_score .ID group by tbl_user.IDcreate database php in terview; use php in terviewcreate table tbl_user(IDn ameprimary key (ID);intvarchar(50)not null,not n ull.北京市海淀區(qū)清河清景園3 號樓 1 單元 9 層 郵

12、編:100085電話52717923 52717924http:/create table tbl_scoreinsert into tbl_user (ID, n ame) values (1, beimu);insert into tbl_user (ID, n ame) values (2, aihui);insert into tbl_score (ID, score, subject) values (1, 90, 語文); insert into tbl_score (ID, score, subject)values (1, 80,數學); inser

13、t into tbl_score (ID, score, subject) values (2, 86,數學); insert into tbl_score(ID, score, subject) values (2, 96, 語文);select A.id,sum(B.score) as sumscore from tbl_user A left join tbl_score B on A.ID=B.IDgroup by A.id13、 寫出發(fā)貼數最多的十個人名字的SQL,利用下表:members(id,user name,posts,pass,email)14、 防止 SQL 注射漏洞一般

14、用 _ 函數。15、 查詢在線人數,并能處理異常掉線的SQL.WHERE_16、MYSQL 取得當前時間的函數是?,格式化日期的函數是17、寫出 SQL 語句的格式:插入,更新,刪除(4 分)表名 UserName Tel Con te nt Date張三大專畢業(yè) 2006-10-11張三本科畢業(yè) 2006-10-15張四中專畢業(yè) 2006-10-15(a) 有一新記錄(小王高中畢業(yè) 2007-05-06)請用 SQL 語句新增至表中(b) 請用 sql 語句把張三的時間更新成為當前系統(tǒng)時

15、間(c) 請寫出刪除名為張四的全部記錄18、 請寫出數據類型(int char varchar datetime text)的意思;請問 varchar 和 char 有什么區(qū)別19、MySQ 自增類型(通常為表 ID 字段)必需將其設為字段20、 取得查詢結果集總數的函數是?北京星模實訓學校培養(yǎng) IT 界的明星模特(IDscoresubject);intdec(6,2)varchar(20)not null,not null,not n ull北京市海淀區(qū)清河清景園3 號樓 1 單元 9 層 郵編:100085電話52717923 52717924http:/21

16、、以下請用 PHPMYADMIN 完成(一) 創(chuàng)建新聞發(fā)布系統(tǒng),表名為 message 有如下字段(3 分)id 文章 idtitle 文章標題content 文章內容category_id 文章分類 idhits 點擊量(二) 同樣上述新聞發(fā)布系統(tǒng):表 comment 記錄用戶回復內容,字段如下(4 分)comment_id 回復 idid 文章 id,關聯(lián) message 表中的 idcomment_content 回復內容現(xiàn)通過查詢數據庫需要得到以下格式的文章標題列表,并按照回復數量排序,回復最高的排在最前面文章 id 文章標題點擊量回復數量用一個 SQL 語句完成上述查詢,如果文章沒有

17、回復則回復數量顯示為0(三) 上述內容管理系統(tǒng),表category 保存分類信息,字段如下(3 分)category_id in t(4) not n ull auto_ in creme nt;categroy_ name varchar(40) not nu II;用戶輸入文章時,通過選擇下拉菜單選定文章分類寫出如何實現(xiàn)這個下拉菜單22、請簡述數據庫設計的范式及應用。一般第 3 范式就足以,用于表結構的優(yōu)化,這樣做既可以避免應用程序過于復雜同時也避免 了 SQL語句過于龐大所造成系統(tǒng)效率低下。23、一個表中的 Id 有多個記錄,把所有這個id 的記錄查出來,并顯示共有多少條記錄數,用SQL

18、 語句及視圖、存儲過程分別實現(xiàn)。r以下為引用的內容:DELIMITER /CREATE PROCEDURE ProcGet(IN ID_a INT(11)BEGINDECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN END;SELECT COUNT(*) AS Sum FROM News Where ID = ID_a;北京星模實訓學校培養(yǎng) IT 界的明星模特北京市海淀區(qū)清河清景園3 號樓 1 單元 9 層 郵編:100085電話52717923 52717924http:/END;/CALL ProcGet(88)24、表中有

19、A B C 三列,用 SQL 語句實現(xiàn):當 A 列大于 B 列時選擇 A 列否則選擇 B 列,當 B 列大于C 列時選擇 B 列否則選擇 C 列。phperzcomDELIMITER /CREATE PROCEDURE ProcOut()BEGINDECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN END;DECLARE Sum_a INT(11);DECLARE Sum_b INT(11);DECLARE Sum_c INT(11);-獲取 A 列中的總值-獲取 B 列中的總值-獲取 C 列中的總值 Sum_b THENSELECT A FROMtable

20、_name;ELSEIF Sum_b Sum_c THENSELECT B FROMtable_name;ELSESELECT C FROMtable_name;END IF;END;/CALL ProcOut()25、請簡述項目中優(yōu)化 sql 語句執(zhí)行效率的方法,從哪些方面,sql 語句性能如何分析?26、兩張表 city 表和 province 表。分別為城市與省份的關系表。city:idCityProvinceid1廣州12深圳13惠州14長沙25-武漢3.廣州provi nee:dProvince1廣東2湖南3湖北(1)寫一條 sql 語句關系兩個表,實現(xiàn):顯示城市的基本信息。?(2)

21、顯示字段:城市 id ,城市名,所屬省份。如:Id (城市 id )Cityname(城市名)Privence(所屬省份)OOOOOOOOOOOOOOOOOO/ 北京星模實訓學校培養(yǎng) IT 界的明星模特北京市海淀區(qū)清河清景園3 號樓 1 單元 9 層 郵編:100085電話52717923 52717924http:/北京市海淀區(qū)清河清景園3 號樓 1 單元 9 層 郵編:100085電話52717923 52717924http:/顯示字段:省份 id,省份名,包含多少個城市。27、SQL 查詢語句如下:select * from ta

22、ble where (ID = 10) or (ID = 32) or (ID = 22) or (ID = 76) or (ID=13) or (ID = 44)讓結果按 10,32,22,76,13,44 的順序檢索出來,請問如何書寫? ( sql 能力)28、 創(chuàng)建一個數據庫,里面有一張表(見后面),并將其授權給所有 192.168.1.*網段的用戶 表需求:每天文件訪問情況,包括文件名、訪問IP、訪問時間、客戶端瀏覽器名稱,考慮如何高效地查找每天什么時段訪問量最高29、創(chuàng)建 poll 表,用于記錄單選投票用戶的數據字段包括 id Autoincreace , ip , time , i

23、id(用戶選則的選項,int 型)寫出 create上述 table 的完整 sql 語句建表語句如下,但是,-搞不明白,怎么用time 關鍵字?CREATE TABLE poll (id SMALLINT( 12 ) UNSIGNED NOT NULL AUTO_INCREMENT ,ip VARCHAR( 16 ) NOT NULL ,time DATETIME DEFAULT now() NOT NULL , iid INT( 15 ) NOT NULL ,PRIMARY KEY ( id );30、 寫出將一個選擇 2 號選項的 ip 為 的用戶在當前時間的投票記錄

24、到數據庫的SQLinsert into poll (id,ip,time,iid) values( , ,now(), 2);31、 寫出滿足下邊條件的SQL 語句item 表的結構為 id(就是 poll 表中的 iid) , descp(用戶選擇的選項的文字)請查詢并返回 10 條記錄,包括 ip 和用戶選擇的選項的文字select ip,descp from poll,item where poll.iid = item.id limit 1032、 現(xiàn)在因為投票人數太多,網站時常出現(xiàn) too many conn ection 的錯誤,請?zhí)峁┙鉀Q方案 方法一:加大 M

25、ySql 的最大連接數mysql 的最大連接數默認是100,這個數值對于并發(fā)連接很多的數據庫應用是遠遠不夠的,當連接請求大于默認連接數后,就會出現(xiàn)無法連接數據庫的錯誤,因此我們需要把它適當調大一些,編輯my.i ni北京星模實訓學校培養(yǎng) IT 界的明星模特(2)如果要統(tǒng)北京市海淀區(qū)清河清景園3 號樓 1 單元 9 層 郵編:100085電話52717923 52717924http:/修改 max_c onn ecti on s=1000北京市海淀區(qū)清河清景園3 號樓 1 單元 9 層 郵編:100085電話52717923 527179

26、24http:/mysql 數據庫,改為直接寫文件,詳細方法參照問題若非要用 mysql,還可方法三:由于用 mysql 語句調用數據庫時,在每次之執(zhí)行語句前,打開數據庫,所以你在使用mysql 語句的時候,記得在每次調用完mysql 之后就關閉 mysql臨時變量33、在成功解決連接數的問題后,發(fā)現(xiàn)程序運行緩慢,經查發(fā)現(xiàn)是mysql 并發(fā)太多,表被鎖定的現(xiàn)象嚴重,請?zhí)峁┙鉀Q方案對于訪問量大的,本來就不推薦使用數據庫, 可以考慮直接寫到文本中, 根據預測的訪問量, 先定義假若是 100 個文件文件名依次為 1.txt,2.txt 100.txt,每有用戶投票的時候,隨 機往其中的一個文件中寫入

27、投票信息。統(tǒng)計的時候,再對所有文本文件中的數據進行分析。必要的時候,再導入數據庫。34、現(xiàn)在開始要求同一 ip 不能重復投票,請指出如何對數據表進行相應的修改把 IP 字段屬性改為全局唯一就0K 了,用以下語句修改,若改之前先數據庫中沒有重復的記錄則ALTER TABLE poll ADD UNIQUE (ip );有重復記錄則做一下操作,a. 改名備份數據CREATE DATABASE pollbak ;RENAME TABLE poll.poll TO pollbak.poll ;DROP DATABASE poll ;b. 建一新表CREATE TABLE poll (id smalli

28、nt(12) unsigned NOT NULL auto_increment,ip varchar(16) NOT NULL default” ,time datetime NOT NULL default 0000-00-00 00:00:00,iid int(15) NOT NULL default 0 ,PRIMARY KEY (id),UNIQUE KEY ip (ip)TYPE=MylSAM AUTO_INCREMENT=1 ;3,還原有效數據in sert into poll select from pollbak;/由于唯一約束,自動剔除重復的投票35、 原有數據已經有很多重復

29、ip 的數據了,所以我們把它導出為一個txt ,格式和上邊的poll 一致,用 TAB 鍵間隔,請寫一段程序,刪除ip 有重復的記錄,并統(tǒng)計每個投票選項的投票數不知道可用數據庫不?不用數據庫也可以實現(xiàn)。時間有限,只給出部分代碼如下北京星模實訓學校培養(yǎng) IT 界的明星模特方法二,不用5會做一個臨時的變量用來北京市海淀區(qū)清河清景園3 號樓 1 單元 9 層 郵編:100085電話52717923 52717924http:/假設導出的文件為 poll.txt;程序 poll.php 代碼如下:北京市海淀區(qū)清河清景園3 號樓 1 單元 9 層 郵編:100085電話:01

30、0-81998356 52717923 52717924http:/XiriGMO?php/讀取文本并放入數組$apoil = file( poll.txt ” );/對每一行數據進行分割,從而獲取了一個二維數組for ($i=0;$icou nt($apoll);$i+)$poll$i = split(“ “ ,$apoll$i);/對該二維數組分析$temp_ip ;/用來保存出現(xiàn)過的 ip$temp_iid;用來保存出現(xiàn)過的投票編號$temp_iid_cou nt;用來保存出現(xiàn)過的編號對應的票數/若 ip 在前面出現(xiàn)過,則什么也不做for ($l=0;$lcou nt($temp_ip);$l+)if ($poll$i1=$temp_ip$l)$ip_repeat=1;if ($ip_repeat!=1)/ip在前面沒有重復過,可以處理相應的流程$temp_ip=$poll$i1;/判斷投票類型在前面有沒有出現(xiàn)過for($ii=0;$ii若可以用數據庫,處理就相對簡單了一點,前部分處理跟前一段代碼同。主要就是用for循環(huán)把每一行的數據加入數據表,添加前先判斷該IP 在數據庫中有無記錄。有則不操作。數據導入數據庫后,要得到投票信息就再簡單不過了,不過也跟 mysql 數據庫版本有一

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論