首页 > 代码库 > MySql 笔试题

MySql 笔试题

MySql 笔试题

------前两天刚做了一套Mysql笔试题,分享给大家------------------

第一部分、单选题(共40分)

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)查询部门编号是135的员工的记录(2分)

Select *from employees where dept_id int(1,3,5);

 

 

6)查询名字以“张”开头的员工的记录(2分)

Select *from employees where name like ‘%’;

 

 

7)查询性别为“M”且在200811日入职的员工的记录(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 ‘test1@localhost’identity by ‘test1’;

 

 

12)授予普通DBA用户(systop)管理empinfo数据库的权限(2分)

Grante * on empinfo.*to ‘systop@localhost’identity by ‘systop’;

 

 

 

13)授予用户test3拥有employeesname列的更改权限(3分)

Grante update on empinfo.employees.name to ‘test3@localhost’identity by ‘test3’;

 

 

14)为employees表开启事务功能的操作步骤(4分)

Begin transaction

执行事务体语句{...}

if@error>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

MySql 笔试题