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 ‘aliyunzixun@xxx.com’identity by ‘test1’;
12)授予普通DBA用户(systop)管理empinfo数据库的权限(2分)
Grante * on empinfo.*to ‘aliyunzixun@xxx.com’identity by ‘systop’;
13)授予用户test3拥有employees表name列的更改权限(3分)
Grante update on empinfo.employees.name to ‘aliyunzixun@xxx.com’identity by ‘test3’;
14)为employees表开启事务功能的操作步骤(4分)
Begin transaction
执行事务体语句{...}
aliyunzixun@xxx.com>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