2019-06-24 (未完成,待续)
2019-06-24 本文已影响0人
Ffvc
Mysql第一阶段考试
一、简答题
1.简述你们公司使用的MySQL版本,并说明具体小版本及GA时间?
5.7的版本
5.7.18
5.7.26
5.7.20
GA时间2017年9月13日
2.请介绍你熟悉的数据库关系系统的种类和代表产品名称?
关系型数据库:
Mysql、Oracle、MSSQL
非关系型数据库:
mongodb、Redis
NewSQL:
TiDB、
3.请简述MySQL二进制安装重点步骤?
创建用户
卸载mariaDB
配置环境变量
创建数据路径并授权
初始化数据库
配置启动文件
4.怎么确认数据库启动成功了?
netstat -lnp | grep 3306
ss -lnp | grep 3306
ps -ef | grep mysql
5.简述你了解的MySQL分支版本情况?
6.请简述mysqld的程序结构(1条SQL语句的执行过程)
连接层:
验证用户密码,连接协议,提供连接线程
SQL:
验证语义、语法、权限、解析、优化、执行
存储引擎层:
类似Linux文件系统,从磁盘读取数据
7.请简述你了解的MySQL的启动方式
systemctl start mysqld
/etc/init.d/mysqld start
8.简述MySQL配置文件默认读取顺序
9.mysqld_safe --default-files=/opt/my.cnf &是什么作用?
指定配置文件并后台运行
10.忘记管理员root的密码处理过程,请对参数详细说明
关闭数据库:
/etcinit.d/mysqld stop
维护模式登陆:
myqld_safe --skip-grant-tables --skip-networking &
登陆数据库:
mysql
刷新权限:
flush privileges;
重新设定密码:
alter user root@'localhost' identified by '123';
重启数据库:
/etc/init.d/mysqld srestart
11.请列举SQL语句的常用种类
DDL:定义语言
DQL:查询语言
DML:操作语言
DCL:控制语言
12.请说明聚集索引和辅助索引的区别
(1)聚集索引只有一个,非空且唯一,辅助索引可以有多个
(2)聚集索引叶子节点存储的是整行数据
(3)Mysql是根据聚集索引组织存储数据,数据存储时是按照聚集索引顺序进行存储
13.请简述以下语句执行计划可能存在的问题
阐述以下语句可能存在的问题,并提出合理解决方案
image.png
Using filesort ,索引设置不合理导致的
解决方案为:
重新设置联合索引
alter table city add index idx_co_po(countrycode,population);
简述出现以下结果的可能原因
image.png图1:
type为ALL,说明查询未走索引
解决方案:
alter table tab add index idx_telnum(telnum);
图2:
key_len为63
14. 请简述,影响索引树高度的因素
(1)数据行数
(2)索引列值的长度
(3)数据类型:char、varchar
(4)enum
15.请说明数据库启动失败的处理思路?
Mysql不能正常启动一般去情况都是undating PID文件导致的。
首先先查找错误日志:主机名.err
找到[error]记录,分析相关的报错 信息。
可能的原因会有:
配置文件的路径不对
sock文件被删除
相关目录权限不对
等
16. MySQL索引的种类都有哪些?
算法分类:
B树索引
R树索引
hash索引
17. 你了解的MySQL存储引擎种类有哪些?
innodb存储引擎:
frm ibd
myisam存储引擎:
frm MYI MYD
TokuDB
18.InnoDB存储引擎核心特性
事务
自动故障修复
热备
MVCC
行级锁
外键
二、操作题
1.创建管理员用户:oldboy能通过10.0.0.0/24网段任意地址登录管理MySQL。
create user oldboy@'10.0.0.%' identified by '123';
2.创建应用用户:wordpress能通过172.16.1.0/24网段任意地址登录操作wordpress库下的所有表。
grant delete,incert,select,update on wordpress.* to wrodpress@'172.16.1.%';
3.请写出/etc/my.cnf的基础配置信息
[mysqld]
user=mysql
basedir=/application/mysql
datadir=/data/mysql/data
server_id=6
socket=/tmp/mysql.sock
port=3306
[mysql]
socket=/tmp/mysql.sock
4.请写出使用oldboy用户远程登录MySQL的具体语句
mysql -uoldboy -p -h
5.查看当前数据库的字符集
show charset;
6. 创建GBK字符集的数据库oldboy,并查看已建库完整语句
create database oldboy charset GBK;
7. 请分别介绍 NOT NULL default auto_increament 的作用。
NOT NULL:非空
default:默认值(一般为0)
auto_increament:自增
8. 创建用户oldboy,使之可以管理数据库oldboy
grant ALL to oldboy.* to oldboy@'localhost' identified by '123';
9. 收回oldboy用户的drop权限
revoke drop on oldboy.* from oldboy@'localhost';
10. 查看创建的用户oldboy拥有哪些权限
show grants for oldboy@'localhost';
11. 查看建表结构及表结构的SQL语句
show create table 表名;
12. 插入一条数据“1,oldboy”
insert into 表名 values (1,'oldboy');
13.再批量插入2行数据“c”,“3,oldboyedu”
insert into 表名 values
(2,'老男孩')
(3,'oldlboyedu')
14.查询名字为oldboy的记录
select * from 表名 where name='oldboy';
15. 查看数据库中所有引擎的类型
show engings;
16.查看数据库关于日志的参数配置
log_error=/data/mysql/data/mysql.log
log_bin=/data/mysql/data/mysql-bin
17.查看handler_read_key当前的状态信息
show status like 'handler_read_key';
18.列出删除表中数据的方式
delete from 表名 where 列名;
trucate
19.test表中,有id、name、shouji列。把id列设置为主键,在Name字段上创建普通索引。
create table test (
id int not null primary key comment '学号',
name varchar(255) not null comment '姓名',
shouji varchar(11) not null comment '手机号',
)engine innodb charset utf8md4;
alter table test add index idx_name(name);
20. 在手机字段上对前8个字符创建普通索引
alter table test add index idx_sh(shouji(8));
21.查看创建的索引及索引类型等信息
show index from test;
22.删除Name,shouji列的索引
alter table test drop index idx_name;
alter table test drop index idx_sh;
23.对Name列的前6个字符以及手机列的前8个字符组建联合索引
alter table test add index idx_na_sh(name(6),shouji(8));
24. 将shouji列索引替换为唯一键索
alter table test add unique index idx_sh(shouji)
25.如何查看world数据库下city表中population列的重复值情况
select population,count(id) from world.city group by population having count(id)>1 order by count(id) desc;
26. 请列出explain命令中type中多种类型
27.Select查询语句加强练习
统计世界上每个国家的总人口数.
select countrycode,sum(population) from world.city group by countrycode;
统计中国各个省的总人口数量
select District,sum(population) from world.city where countrycode='CHN' group by District;
统计世界上每个国家的城市数量
select countrycode,count(id) from world.city group by countrycode;
统计中国每个省的总人口数,将总人口数小于100w进行从高到低排序显示
select District,sum(population) from world.city where countrycode='CHN' group by District having sum(population)<1000000 order by sum(population) desc;
28.生成整个数据库下的所有表的单独备份语句
select concat("mysqldump -uroot -p123 ",table_schema," ",table_name," >/tmp/",table_schema,"_",table_name,".sql") from information_schema.tables where table_schema not in ('sys','performance','information_scheema');