數(shù)據(jù)庫程序員面試分類真題24_第1頁
數(shù)據(jù)庫程序員面試分類真題24_第2頁
數(shù)據(jù)庫程序員面試分類真題24_第3頁
數(shù)據(jù)庫程序員面試分類真題24_第4頁
數(shù)據(jù)庫程序員面試分類真題24_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

數(shù)據(jù)庫程序員面試分類真題24簡答題1.

如何確定MySQL是否處于運(yùn)行狀態(tài)?如何開啟MySQL服務(wù)?正確答案:分為Linux和Windows來討論。

1)在Linux下啟動(dòng)MySQL服務(wù):(江南博哥)

在Linux下,也可以通過“netstat-nip|grepmysqld”來查看MySQL服務(wù)的狀態(tài):

[root@testdb/]#netstat

-nlp|grepmysqld

tcp

0

0:::3306

:::*

LISTEN

13853/mysqld

unix2

[ACC]

STREAM

LISTENING

38511

13853/mysqld

/var/lib/mysq157/mysql.sock

也可以使用mysqld_safe命令啟動(dòng)MySQL數(shù)據(jù)庫,通過mysqladmin來關(guān)閉MySQL數(shù)據(jù)庫:

在數(shù)據(jù)庫啟動(dòng)的時(shí)候可以加上從指定參數(shù)文件進(jìn)行啟動(dòng),如下:

mysqld_safe--defaults-file=/etc/f&

2)在Windows下啟動(dòng)MySQL服務(wù):

D:\MySQL\MySQL-advanced-5.6.21-win32\bin>netstartmysql

MySQL服務(wù)正在啟動(dòng)...

MySQL服務(wù)已經(jīng)啟動(dòng)成功。

進(jìn)入Windows的服務(wù)可以看到:

[考點(diǎn)]啟動(dòng)

2.

創(chuàng)建GBK字符集的數(shù)據(jù)庫NEWLHR,并查看已建庫的完整語句。正確答案:[考點(diǎn)]創(chuàng)建數(shù)據(jù)庫

3.

如何查看當(dāng)前數(shù)據(jù)庫里有哪些用戶?正確答案:可以通過查詢mysql.user表來查詢數(shù)據(jù)庫的用戶。[考點(diǎn)]創(chuàng)建數(shù)據(jù)庫

4.

如何查看數(shù)據(jù)庫的版本、當(dāng)前登錄用戶和當(dāng)前的數(shù)據(jù)庫名稱?正確答案:通過VERSION()函數(shù)可以查詢版本,通過USER()函數(shù)可以查詢當(dāng)前登錄數(shù)據(jù)庫的用戶,通過DATABASE()函數(shù)可以獲取當(dāng)前連接的數(shù)據(jù)庫名稱,如下:

[考點(diǎn)]創(chuàng)建數(shù)據(jù)庫

5.

如何連接到MySQL數(shù)據(jù)庫?正確答案:連接到MySQL數(shù)據(jù)庫有多種寫法,假設(shè)MySQL服務(wù)器的地址為30,可以通過如下幾種方式來連接MySQL數(shù)據(jù)庫:

1)mysql-p。

2)mysql-uroot-p。

3)mysql-uroot-h30-p。[考點(diǎn)]連接數(shù)據(jù)庫

6.

哪個(gè)命令可以查看所有數(shù)據(jù)庫?正確答案:運(yùn)行命令:showdatabases;。[考點(diǎn)]連接數(shù)據(jù)庫

7.

如何切換到某個(gè)特定的數(shù)據(jù)庫?正確答案:運(yùn)行命令:usedatabase_name;。[考點(diǎn)]連接數(shù)據(jù)庫

8.

列出數(shù)據(jù)庫內(nèi)所有的表。正確答案:在當(dāng)前數(shù)據(jù)庫運(yùn)行命令:showtables;。[考點(diǎn)]連接數(shù)據(jù)庫

9.

在MySQL中,VARCHAR與CHAR的區(qū)別是什么?VARCHAR(50)中的50代表的含義是什么?正確答案:CHAR是一種固定長度的類型,VARCHAR則是一種可變長度的類型。

CHAR列的長度固定為創(chuàng)建表時(shí)聲明的長度。長度可以為0~255的任何值。當(dāng)保存CHAR值時(shí),在它們的右邊填充空格以達(dá)到指定的長度。當(dāng)檢索到CHAR值時(shí),尾部的空格被刪除掉。在存儲(chǔ)或檢索過程中不進(jìn)行大小寫轉(zhuǎn)換。

VARCHAR列中的值為可變長字符串。長度可以指定為0~65535之間的值。VARCHAR的最大有效長度由最大行大d,~ll使用的字符集確定。在MySQL4.1之前的版本,VARCHAR(50)的“50”指的是50字節(jié)(Byte)。如果存放UTF8漢字時(shí),那么最多只能存放16個(gè)(每個(gè)漢字3字節(jié))。從MySQL4.1版本開始,VARCHAR(50)的“50”指的是50字符(Character),無論存放的是數(shù)字、字母還是UTF8漢字(每個(gè)漢字3字節(jié)),都可以存放50個(gè)。

CHAR和VARCHAR類型聲明的長度表示保存的最大字符數(shù)。例如,CHAR(30)可以占用30個(gè)字符。對(duì)于MyISAM表,推薦CHAR類型;對(duì)于InnoDB表,推薦VARCHAR類型。另外,在進(jìn)行檢索的時(shí)候,若列值的尾部含有空格,則CHAR列會(huì)刪除其尾部的空格,而VARCHAR則會(huì)保留空格。[考點(diǎn)]數(shù)據(jù)類型

10.

MySQL中運(yùn)算符“<=>”的作用是什么?正確答案:比較運(yùn)算符“<=>”表示安全的等于,這個(gè)運(yùn)算符和“=”類似,都執(zhí)行相同的比較操作,不過“<=>”可以用來判斷NULL值,在兩個(gè)操作數(shù)均為NULL時(shí),其返回值為1而不為NULL,而當(dāng)一個(gè)操作數(shù)為NULL時(shí),其返回值為0而不為NULL。示例如下:

[考點(diǎn)]數(shù)據(jù)類型

11.

MySQL數(shù)據(jù)類型有哪些屬性?正確答案:數(shù)據(jù)類型的屬性包括auto_increment、binary、default、index、notnull、null、primarykey、unique和zerofill,具體見下表。屬性列auto_increment1)auto_increment能為新插入的行賦予一個(gè)唯一的整數(shù)標(biāo)識(shí)符,該屬性只用于整數(shù)類型2)auto_increment一般從1開始,每行增加1??梢酝ㄟ^“ALTERTABLETB_NAMEAUTO_INCREMENT=n;”語句強(qiáng)制設(shè)置自動(dòng)增長列的初始值,但是該強(qiáng)制的默認(rèn)值是保留在內(nèi)存中的。如果該值在使用之前數(shù)據(jù)庫重新啟動(dòng),那么這個(gè)強(qiáng)制的默認(rèn)值就會(huì)丟失,需要在數(shù)據(jù)庫啟動(dòng)以后重新設(shè)置3)可以使用LAST_INSERT_ID()查洵當(dāng)前線程最后插入記錄使用的值。如果一次插入了多條記錄,那么返回的是第一條記錄使用的自動(dòng)增長值4)MySQL要求將auto_increment屬性用于作為主鍵的列5)每個(gè)表只允許有一個(gè)auto_increment列6)自動(dòng)增長列可以手工插入,但是插入的值如果是空或者0,那么實(shí)際插入的將是自動(dòng)增長后的值7)對(duì)于InnoDB表,自動(dòng)增長列必須是索引。如果是組合索引,也必須是組合索引的第一列,但是對(duì)于MylSAM表,自動(dòng)增長列可以是組合索引的其他列,這樣插入記錄后,自動(dòng)增長列是按照組合索引的前幾列進(jìn)行排序后遞增的binarybinary屬性只用于CHAR和VARCHAR值。當(dāng)為列指定了該屬性時(shí),將以區(qū)分大小寫的方式排序和比較defaultdefault屬性確保在沒有任何值可用的情況下,賦予某個(gè)常量值,這個(gè)值必須是常量,因?yàn)镸ySQL不允許插入函數(shù)或表達(dá)式值。此外,此屬性無法用于BLOB或TEXT列。如果已經(jīng)為此列指定了NULL屬性,那么當(dāng)沒有指定默認(rèn)值時(shí)默認(rèn)值將為NULL,否則默認(rèn)值將依賴于字段的數(shù)據(jù)類型index如果所有其他因素都相同,要加速數(shù)據(jù)庫查詢,那么使用索引通常是最重要的一個(gè)步驟。索引一個(gè)列會(huì)為該列創(chuàng)建一個(gè)有序的鍵數(shù)組,每個(gè)鍵指向其相應(yīng)的表行。以后針對(duì)輸入條件可以搜索這個(gè)有序的鍵數(shù)組,與搜索整個(gè)未索引的表相比,這將在性能方面得到極大的提升notnull如果將一個(gè)列定義為notnull,那么將不允許向該列插入null值。建議在重要情況下始終使用notnull屬性,因?yàn)樗峁┝艘粋€(gè)基本驗(yàn)證,確保已經(jīng)向奩洵傳遞了所有必要的值null為列指定null屬性時(shí),該列可以保持為空,而不論行中其他列是否已經(jīng)被填充。null精確的說法是“無”,而不是空字符串或0primarykeyprimarykey屬性用于確保指定行的唯一性。指定為主鍵的列中,值不能重復(fù),也不能為空。為指定為主鍵的列賦予auto_increment屬性是很常見的,因?yàn)榇肆胁槐嘏c行數(shù)據(jù)有任何關(guān)系,而只是作為一個(gè)唯一標(biāo)識(shí)符。主鍵又分為以下兩種:1)單字段主鍵。如果輸入數(shù)據(jù)庫中的每行都已經(jīng)有不可修改的唯一標(biāo)識(shí)符,一般會(huì)使用單字段主鍵。注意,此主鍵一旦設(shè)置就不能再修改2)多字段主鍵。如果記錄中任何一個(gè)字段都不可能保證唯一性,那么就可以使用多字段主鍵。這時(shí),多個(gè)字段聯(lián)合起來確保唯一性。如果出現(xiàn)這種情況,那么指定一個(gè)auto_increment整數(shù)作為主鍵是更好的辦法unique被賦予unique屬性的列將確保所有值都有不同的值,只是null值可以重復(fù)。一般會(huì)指定一個(gè)列為unique,以確保該列的所有值都不同zerofillzerofill屬性可用于任何數(shù)值類型,用0填充所有剩余字段空間。例如,無符號(hào)int的默認(rèn)寬度是10;因此,當(dāng)“零填充”的int值為4時(shí),將表示它為0000000004[考點(diǎn)]數(shù)據(jù)類型

12.

MySQL如何實(shí)現(xiàn)插入時(shí),如果不存在則插入,如果存在則更新的操作?正確答案:在Oracle中由MERGEINTO來實(shí)現(xiàn)記錄已存在就更新的操作,mysql沒有MERGEINTO語法,但是有REPLACEINTO的寫法,同樣實(shí)現(xiàn)記錄已存在就更新的操作。

SQLServer中的實(shí)現(xiàn)方法是

ifnotexists(select1fromtwhereid=1)

insertintot(id,

update_time)values(1,getdate())

else

updatetsetupdate_time=getdate()whereid=1

MySQL的REPLACEINTO有3種形式:

1.REPLACEINTOTBL_NAUE(COL_NAME)VALUES(')

2.REPLACEINTOTBL_NAME(COL_NAME)SELECT'

3.REPLACEINTOTBL_NAMESETCOL_NAME=VALUE'

其中,“INTO”關(guān)鍵字可以省略,不過最好加上“INTO”,這樣意思更加直觀。另外,對(duì)于那些沒有給予值的列,MySQL將自動(dòng)為這些列賦上默認(rèn)值。

13.

用哪些命令可以查看MySQL數(shù)據(jù)庫中的表結(jié)構(gòu)?正確答案:查看MySQL表結(jié)構(gòu)的命令有如下幾種:

1)DESC表名。

2)SHOWCOLUMNSFROM表名。

3)DESCRIBE表名。

4)SHOWCREATETABLE表名。

5)USEINFORMATION_SCHEMA。

14.

如何創(chuàng)建TABB表,完整拷貝TABA表的結(jié)構(gòu)和索引,而且不要數(shù)據(jù)?正確答案:CREATETABLETABBLIKETABA;。

15.

如何查看某一用戶的權(quán)限?正確答案:SHOWGRANTSFORUSERNAME;。

16.

如何得知當(dāng)前BINARYLOG文件和POSITION值?正確答案:SHOWMASTERSTATUS;。

17.

用什么命令切換BINARYLOG?正確答案:FLUSHLOGS;。

18.

用什么命令整理表數(shù)據(jù)文件的碎片?正確答案:OPTIMIZETABLETABLENAME;。

19.

如何得到TA_LHR表的建表語句?正確答案:SHOWCREATETABLETA_LHR;。

20.

MySQL和Oracle如何修改命令提示符?正確答案:MySQL的默認(rèn)提示符為“mysql”,可以使用prompt命令來修改,如下:

全局:exportMYSQL_PS1="(\u@\h)[\d]>"

蘭前會(huì)話:prompt(\u@\h)[\d]\R:\m:\s>\_

其中,“\u”代表用戶名,“\h”代表服務(wù)器地址,“\d”代表當(dāng)前數(shù)據(jù)庫,“\R:\m:\s”代表時(shí)分秒,例如,23:10:10。

Oracle的默認(rèn)命令提示符為“SQL”,可以使用“SETSQLPROMPT”命令來修改,如下:

SQL>SHOWSQLPROMPT

sqlprompt"SQL>"

SQL>SETSQLPROMPT"_USEW'@'_CONNECT_IDENTIFIER>"

SYS@lhrdb>

SYS@lhrdb>SHOWS

溫馨提示

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

評(píng)論

0/150

提交評(píng)論