資料庫面試測試題(一) 簡述當前主流RDBMS軟體有哪些?開源且跨平臺的資料庫軟體有哪些? 參考答案 當前主流的資料庫伺服器軟體有: Oracle 、 DB2 、 SQL SERVER 、MySQL 等 ,其中只有MySQL是既開源又跨平臺的資料庫服務軟體。 簡述MySQL資料庫的服務進程名、預設端 ...
資料庫面試測試題(一)
簡述當前主流RDBMS軟體有哪些?開源且跨平臺的資料庫軟體有哪些?
參考答案
當前主流的資料庫伺服器軟體有: Oracle 、 DB2 、 SQL SERVER 、MySQL 等 ,其中只有MySQL是既開源又跨平臺的資料庫服務軟體。
簡述MySQL資料庫的服務進程名、預設埠、預設資料庫目錄?
參考答案
服務進程名:mysqld
預設監聽埠號:3306
預設資料庫目錄:/var/lib/mysql
簡述MySQL預設的4個庫叫什麼名字?哪個庫里的數據不占用物理磁碟空間?
參考答案
MySQL預設的4個庫分別是 information_schema 、performance_schema 、mysql 、sys 其中information_schema庫不占用物理磁碟空間。
簡述MySQL資料庫中插入、更新、查詢、刪除表記錄的指令格式。
參考答案
1)插入記錄指令格式
//一次插入一條記錄 給記錄的所有欄位賦值insert into 庫.表 values(值列表);//一次插入多條記錄 給記錄的所有欄位賦值insert into 庫.表 values(值列表),(值列表); insert into 庫.表(欄位名列表) values(值列表); //一次插入1條記錄 給記錄的指定欄位賦值insert into 庫.表(欄位名列表) values(值列表),(值列表); //一次插入多條記錄 給記錄的指定欄位賦值
2)更新記錄指令格式
//批量修改update 表名 set 欄位名=值,欄位名="值"; //修改符合條件的記錄欄位的值update 表名 set 欄位名=值,欄位名="值" where 條件;
3)查詢記錄指令格式:
//查詢所有記錄指定欄位的值。select 欄位列表 from 表名; //查詢與條件匹配記錄指定欄位的值。select 欄位列表 from 表名 where 條件表達式列表;
4)刪除表記錄指令格式:
//刪除表的所有記錄。delete from 表名;//只刪除符合條件的記錄 delete from 表名 where 條件;
查詢綜合練習題,按要求寫出對應查詢語句。
1、添加記錄編號欄位id 在所有欄位上方,欄位值可以自動增長。
2、顯示uid 是四位數的用戶的用戶名和uid號。
3、顯示名字是以字母r 開頭 且是以字母d結尾的用戶名和uid號。
4、查看gid 小於10的用戶使用shell的種類。
5、查看shell不是/bin/bash用戶中uid號最大用戶名及uid號。
6、統計uid是3位數的用戶的個數。
參考答案
1、添加記錄編號欄位id 在所有欄位上方,欄位值可以自動增長。
alter table userdb.userlist add id int(2) primary key auto_increment first;
2、顯示uid 是四位數的用戶的用戶名和uid號。
select name,uid from userdb.userlist where uid >=1000 and uid<=9999; 或 select name,uid from userdb.userlist where uid between 1000 and 9999; 或 select name,uid from userdb.userlist where uid regexp ‘^....$’;
3、顯示名字是以字母r 開頭 且是以字母d結尾的用戶名和uid號。
select name,uid from userdb.userlist where name regexp ‘^r.*d$’;或select user from mysql.user where user regexp '^r' and user regexp 'd$';
4、查看uid 小於10的用戶使用shell的種類。
select shell from userdb.userlist where uid<10 group by shell;或Select distinct shell from userdb.userlist where uid<10;
5、查看shell不是/bin/bash用戶中uid號最大用戶名及uid號。
select name,uid from userdb.userlist where shell!=”/bin/bash” order by uid desc limit 1;
6、統計uid是3位數的用戶的個數。
select count(name) from userdb.userlist where uid >=100 and uid<=999;
請列出MySQL常用的數據類型,並寫出定義這些數據類型所使用的命令。
參考答案
MySQL常用的數據類型有:字元類型、數值類型、日期時間類型、枚舉類型
字元類型: char 、 varchar 、 blob、 text
數值類型: tinyint 、smallint 、int 、bigint 、float 、 double
日期時間類型: year 、 date 、 time 、 datetime 、 timestamp
枚舉類型: enum 、set
定義數據類型命令:create 庫名.表名(欄位名 數值類型,欄位名 數值類型 。。。); 或 alter 庫名.表名 modify 欄位名 數值類型
簡述數據導入命令格式。
參考答案
mysql> LOAD DATA INFILE "/目錄名/文件名" INTO TABLE 庫名.表名 FIELDS TERMINATED BY "符號" LINES TERMINATED BY "\n";
簡述主鍵的使用規則。
參考答案
1)欄位值不允許重覆,且不允許賦NULL值
2)一個表中只能有一個primary key欄位
3)多個表頭做主鍵,稱為複合主鍵,必須一起創建
4)主鍵的標誌是PRI
5)主鍵通常與auto_increment 連用6)通常把行號表頭設置為主鍵
簡述創建外鍵語法格式及使用規則。
參考答案
語法格式
CREATE TABLE 庫名.表名 (表頭名列表, FOREIGN KEY(表頭名) REFERENCES 庫名.表名(表頭名) ON UPDATE CASCADE ON DELETE CASCADE )ENGINE=innodb;
使用規則:
1)表存儲引擎必須是innodb
2)欄位類型要一致
3)被參照欄位必須要是索引類型的一種(primary key)
簡述讀取binlog日誌內容恢複數據格式
參考答案
mysqlbinlog /目錄名/binlog日誌文件名 | mysql -uroot -p密碼
簡述什麼是binlog日誌
參考答案
binlog日誌也稱做二進位日誌,記錄除查詢之外的所有SQL命令,可用於數據的備份和恢復,是配置mysql主從同步的必要條件
簡述備份策略
參考答案
完全備份:備份所有數據
增量備份:備份上次備份後,新產生的數據
差異備份:備份完全備份後,新產生的數據
簡述innobackupex的特點及增量恢複數據的步驟
參考答案
特點:線上備份不鎖表,備份執行過程中同時允許對錶做讀寫訪問
增量恢複數據步驟如下:
1)準備恢複數據
2)合併數據
3)停止資料庫服務並清空資料庫目錄
4)拷貝數據
5)修改資料庫目錄所有者/組用戶為mysql
6)啟動mysqld服務
寫出用戶授權命令語法格式。
參考答案
GRANT 許可權列表 ON 庫名.表名 TO 用戶名@'客戶端地址' IDENTIFIED BY '密碼' ;
資料庫授權綜合練習,按題目要求寫出對應的授權命令。
1、查看當前資料庫伺服器有哪些授權用戶?
2、授權管理員用戶可以在網路中的任意主機登錄,對所有庫和表有完全許可權登陸密碼123456
3、授權webadmin用戶可以從網路中的所有主機登錄,對bbsdb庫擁有完全許可權,登錄密碼為 123456
4、不允許資料庫管理員在資料庫伺服器本機登錄。
參考答案
1.select user from mysql.user;
2.grant all on *.* to root@“%” identified by “123456”;
3.grant all on bbsdb.* to webadmin@“%” identified by “123456” ;
4.delete from mysql.user where host=”localhost” and user=”root”;
flush privileges;
寫出撤銷用戶授權命令語法格式。
參考答案
revoke 許可權列表 on 資料庫名 from 用戶名@”客戶端地址”;
簡述什麼是索引及索引的優/缺點
參考答案
1)什麼是索引
類似書的目錄
為快速查找數據而排好序的一種數據結構。
所有的數據類型都可以被索引。
Mysql索引主要有三種結構:Btree、B+Tree 、Hash 。
2)索引優點
可以提高MySQL的檢索速度
索引減小了服務需要掃描的數據量
索引可以幫助伺服器避免排序和臨時表
索引可以將隨機IO變成順序IO
3)索引缺點
雖然索引大大提高了查詢速度,同時卻會降低更新表的速度,如對錶進行INSERT、UPDATE和DELETE。因為更新表時,MySQL不僅要保存數據,還要保存索引文件。
建立索引會占用磁碟空間的索引文件。一般情況這個問題不太嚴重,但如果你在一個大表上創建了多種組合索引,索引文件的會膨脹很快。
如果某個數據列包含許多重覆的內容,為它建立索引就沒有太大的實際效果。
對於非常小的表,大部分情況下簡單的全表掃描更高效。
簡述什麼是視圖及視圖的優點。
參考答案
1)什麼是視圖
只有表結構的虛擬表。
資料庫服務只存放了視圖的定義,視圖中的數據存放在原表中。
使用視圖查詢數據時,會從原表中取出對應的數據。
原表中的數據發生改變,視圖中的數據也會發生改變,反之亦然。
視圖中的數據由創建視圖時的SELECT語句決定。
2)視圖的優點
1. 簡單
用戶無需關心視圖中的數據如何查詢獲得的
視圖中的數據已經是過濾好的符合條件的結果集
安全:用戶只能看到視圖中的數據
2. 數據獨立
一旦視圖結構確定,可以屏蔽表結構對用戶的影響
寫出創建存儲過程的命令格式
參考答案
delimiter //
create procedure 庫名.名稱()
begin 代碼塊
end//
delimiter ;