1. 程式人生 > >mysql面試題1

mysql面試題1

1、mysql中唯一索引的關鍵字是( C  )
A. fulltext index  B.only  index   C.unique index D.index
2、下面關於索引描述中錯誤的一項是( C   )
A.索引可以提高資料查詢的速度 B.索引可以降低資料的插入速度
C.innodb儲存引擎支援全文索引 D.刪除索引的命令是drop index
3、支援主外來鍵,索引及事務的儲存引擎為是( B )
A.MYISAM B.INNODB C.MEMORY D.CHARACTER
4、對事務的描述中不正確的是( C )
A.事務具有原子性 B.事務具有隔離性   
C.事務回滾使用commit命令      D.事務具有可靠性
5、 mysql中,備份資料庫的命令是( A )
A.mysqldump B.mysql C.backup D.copy
6、 實現批量資料匯入的命令是( A )
 A.mysqldump B.mysql C.backup D.return
7、 建立使用者的命令是( D )
A. join user B.create user C.create root    D.mysql   user
8、 修改自己的mysql伺服器密碼的命令是( C )
A.mysql B.grant C.set password D.change  password
9、 找回mysql伺服器root密碼的很重要的一步是跳過許可權表的檢查啟動mysql,該命令是 ( D )
A. mysql  -u root –proot  B. mysqladmin   -uroot   -proot 
C. net  start  mysql      D. mysqld-nt   --skip-grant-tables 
10、聯合查詢使用的關鍵字是(  B )
A.UNION B.JOIN C.ALL D.FULL
11、有訂單表orders,包含使用者資訊userid, 產品資訊 productid, 以下( D   )語句能夠返回至少被訂購過兩回的productid? 
A. select productid from orders where count(productid)>1
B. select productid from orders where max(productid)>1
C. select productid from orders where having count(productid)>1 group by productid
D. select productid from orders group by productid having count(productid)>1
12、子查詢中可以使用運算子ANY, 它表示的意思是( B )
A. 滿足所有的條件 B. 滿足至少一個條件
C. 一個都不用滿足 D. 滿足至少5個條件
13、事務中能實現回滾的命令是( C )
A.TRANSACTION B.COMMIT C.ROLLBACK D.SAVEPOINT
14、mysql中,還原資料庫的命令是( B )
A.mysqldump B.mysql C.backup D.return
15、mysql中儲存使用者全域性許可權的表是( D )
A. table_priv B.procs_priv C.columns_priv D.user
16、刪除使用者的命令是( A )
A. drop  user     B.delete  user C.drop  root D.truncate  user
17、給名字是zhangsan的使用者分配對資料庫studb中的stuinfo表的查詢和插入資料許可權的語句是( B )
A.grant select,insert on studb.stuinfo for‘zhangsan’@’localhost’
B.grant select,insert on studb.stuinfo   to‘zhangsan’@’localhost’
C.grant‘zhangsan’@’localhost’ to  select,insert  for studb.stuinfo 
D.grant ‘zhangsan’@’localhost’ to  studb.stuinfo  on select,insert 
18、下列選項( A   )是mysql複製技術不支援的複製型別
  A.基於sql語句的複製方式           B.基於行的複製方式
  C.基於資料檔案的複製方式          D.sql語句和行相結合的方式
19、下列的函式中不可以處理日期和時間的函式是(  B )
A round       B WeekDay      C Curdate     D DayofMonth    
20、mysql中的約束不包括( A )
A.檢查約束 B.預設約束 C.非空約束 D.唯一約束
第二部分、簡答題(共18分)
1、在mysql中常用儲存引擎有哪幾種(最少三種),每個引擎特點區別?(6分)
1.InnoDB :InnoDB給mysql的表提供了事務、回滾、奔潰修復的能力和多版本病夫控制事務安全。
2.MyISAM :佔用空間小,處理速度快。不支援事務的完整性和併發性。
3.MEMORY :MEMORY使用儲存在記憶體中的內容來建立表,而且所有資料也放在記憶體中。
2、忘記MySQL管理員root的密碼如何解決?寫出步驟和指令(6分)
1.跳過許可權 mysql --skip-grant-tables
2.修改資料庫名為mysql裡user表 update mysql.user set Password=PASSWORD(root) where User=’root’ AND host=’localhost’
3.重新整理 載入許可權表 FULSH PRIIVILEGES
3、簡述mysql主從複製的原理和主、從伺服器上的my.cnf檔案的修改內容及注意事項(6分)
兩臺伺服器實現在主伺服器上的資料庫實現資料的插入,在從伺服器的資料庫實現資料的讀取,這樣可以應對高併發,大流量,減輕資料庫壓力,提高使用者體驗。實現原理是基於強大的mysql配置,就可以實現。注意的是,配置的時候倆
第三部分、程式設計題(共42分)
有一個關於公司員工資訊的資料庫empinfo。部門表和員工基本資訊表是其中的兩個表,表中資訊如下:
部門表depts ( dept_id、dept_name、description)
說明:dept_id  部門編號  dept_name 部門名稱 description 部門描述
員工表employees(id、name、gender、dept_id、join_time、salary、address、age、des)
說明:id員工號 name員工姓名gender性別 dept_id所在部門join_time加入時間salary工資 address地址  age年齡des描述
1)分析各個表之間的關係(主外來鍵引用關係),寫出建表語句(6分)
create table depts(dept_id int primary key ,dept_name nvachar(50),description nvarchar(100));
create table employees(id int primary,name nvarchar(50),gender char(10),dept_id int,join_time datetime,salary decemical(2,9),address nvarchar(50),age int,des nvarchar(100),constraint e_fk foreign key(dept_id) references depts(dept_id));
2)為員工表employees新增一個欄位image用於記錄員工頭像(2分)
Alter table employees add image nvarchar(100) not null;
3)查詢除了名字叫張三以外的員工的記錄(2分)
Select *from employees where name not int(‘張三’)
4)查詢薪水在2000-5000之間的員工記錄(2分)
Select *from employees where salary >2000 and salary <5000;
5)查詢部門編號是1、3、5的員工的記錄(2分)
Select *from employees where dept_id int(1,3,5);
6)查詢名字以“張”開頭的員工的記錄(2分)
Select *from employees where name like ‘張%’;
7)查詢性別為“M”且在2008年1月1日入職的員工的記錄(2分)
Select *from employees where gender=’M’AND join_time=’2018-1-1’;
8)查詢出平均月薪最高的部門編號與名字(3分)
Select dept_id,name where group by dept_id having out max(avg(salary));
9)為employees表的name列建立索引(2分)
Create index index_employees on employees (name);
 
10)建立檢視, EMP_V_10, 包括10號部門的資訊和所有職員資訊(3分)
Create view EMP_V_10 as select employees.*,depts.* from employees,depts where dept_id=10;
11)建立一個使用者test1使他只擁有查詢employees表的許可權(2分)
Grante select on empinfo.employees to ‘

[email protected]’identity by ‘test1’;
12)授予普通DBA使用者(systop)管理empinfo資料庫的許可權(2分)
Grante * on empinfo.*to ‘[email protected]’identity by ‘systop’;
13)授予使用者test3擁有employees表name列的更改許可權(3分)
Grante update on empinfo.employees.name to ‘[email protected]’identity by ‘test3’;
14)為employees表開啟事務功能的操作步驟(4分)
Begin transaction
執行事務體語句{...}
[email protected]
>0
Begin
Rollback transaction
End
Else
Begin
Commit transaction
End
End
15)寫出將empinfo資料庫備份到遠端伺服器182.21.32.129的方法和步驟(5分)
備份-傳送-匯入
Mysqldump -u root -p --all-database >empinfo.sql
Scp empinfo.sql 182.21.32.129 /tmp
Mysql -u root -p < /tmp/empinfo.sql