美文网首页
第一次阶测试

第一次阶测试

作者: 优秀j | 来源:发表于2019-06-24 09:11 被阅读0次

    一、简答题

    1.简述你们公司使用的MySQL版本,并说明具体小版本及GA时间?

    5.7.20    2017年9月
    

    2.请介绍你熟悉的数据库关系系统的种类和代表产品名称?

    MySQL   Oracle    SQLServer   
    

    3.请简述MySQL二进制安装重点步骤?

    下载二进制安装包
    创建不可登录的mysql用户
    删除之前安装的(系统自带的)数据库
    yum install libaio-devel -y
    配置/etc/my.cnf的基础配置信息
    初始化
    启动
    

    4.怎么确认数据库启动成功了?

    登录测试一下
    检查端口
    检查进程
    

    5.简述你了解的MySQL分支版本情况?

    MySQL   mariaDB 
    

    6.请简述mysqld的程序结构(1条SQL语句的执行过程)

    连接层
    1、提供TCP/IP 和  socket连接
    2、验证用户名和密码,进行匹配授权库
    3、派发一个专门的连接线程,用于接收SQL,返回结果
    SQL层
    1、验证语法
    2、验证语义
    3、验证权限
    4、解析器:解析语法生成执行计划(解析树)
    5、优化器:根据解析器给出的执行计划,按照算法计找出消耗最低的的执行计划
    6、执行器:根据优化器给出的执行计划进行执行,找到数据位置
    7、缓存器(默认没开)
    8、日志记录(不用)
    存储引擎层
    根据执行器给出的数据位置,从磁盘中拿出来,返回SQL层解析成表,再交给连接层由专有的连接线程把数据返回给用户
    

    7.请简述你了解的MySQL的启动方式

    /application/mysql/bin/mysqld  
    mysqld_safe 
    systemctl start mysqld
    /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
    

    8.简述MySQL配置文件默认读取顺序

    mysqld --help --verbose|grep my.cnf
    /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
    

    9.mysqld_safe --default-files=/opt/my.cnf &是什么作用?

    
    

    10.忘记管理员root的密码处理过程,请对参数详细说明

    11.请列举SQL语句的常用种类

    DDL    数据定义语言
    DML    数据操作语言
    DCL    数据控制语言
    DQL    数据查询语言
    

    12.请说明聚集索引和辅助索引的区别

    聚集索引:设置主键默认生成聚集索引,聚集索引只能有一个,叶子节点存储的是整个数据行
    辅助索引:需要手动该设置辅助索引,辅助索引可以有多个,叶子节点存储的是某个列的值
    

    13.请简述以下语句执行计划可能存在的问题

    阐述以下语句可能存在的问题,并提出合理解决方案

    explain select * from city where countrycode='CHN' order by population;

    image

    简述出现以下结果的可能原因

    image

    14. 请简述,影响索引树高度的因素?

    数据类型
    索引列的数据行长度
    数据量
    

    15.请说明数据库启动失败的处理思路?

    查看命令行报错
    查看mysql错误日志
    

    16. MySQL索引的种类都有哪些?

    B树索引
    R树索引
    Hash索引
    full text
    GIS
    

    17. 你了解的MySQL存储引擎种类有哪些?

    MyISAM
    InnoDB
    memory
    

    18.InnoDB存储引擎核心特性

    
    

    二、操作题

    1.创建管理员用户:oldboy能通过10.0.0.0/24网段任意地址登录管理MySQL

    create user oldboy@'10.0.0.%';
    

    2.创建应用用户:wordpress能通过172.16.1.0/24网段任意地址登录操作wordpress库下的所有表

    create user wordpress@'172.16.1.%';
    grant all on wordpress.* to wordpress@'172.16.1.%' ;
    

    3.请写出/etc/my.cnf的基础配置信息

     [mysqld]
    user=mysql
    basedir=/application/mysql
    datadir=/data/mysq/data
    server_id=6
    port=3306
    log.error=/data/mysql/data/mysql.error.log
    

    4.请写出使用oldboy用户远程登录MySQL的具体语句

    mysql -uoldboy -p -h10.0.0.158 -P3306
    

    5.查看当前数据库的字符集

    show create database 库名;
    

    6. 创建GBK字符集的数据库oldboy,并查看已建库完整语句

    create database oldboy charset=GBK;
    

    7. 请分别介绍 NOT NULL default auto_increament 的作用

    NOT NULL                非空
    default                 默认
    auto_increament         自增
    

    8. 创建用户oldboy,使之可以管理数据库oldboy

    create user oldboy@'%';
    grant all on oldboy.* to oldboy@'%';
    

    9. 收回oldboy用户的drop权限

    revoke drop on oldboy.* from oldboy@'%';
    

    10. 查看创建的用户oldboy拥有哪些权限

    show grants for oldboy@'%';
    

    11. 查看建表结构及表结构的SQL语句

    desc 表名
    show create table 表名
    

    12. 插入一条数据“1,oldboy”

    insert into 表名(id,name) values(1,'oldboy');
    

    13.再批量插入2行数据“2,老男孩”,“3,oldboyedu”

    insert into 表名(id,name) values(2,'老男孩'),(3,'oldboyedu');
    

    14.查询名字为oldboy的记录

    select * from 表名 where name='oldboy';
    

    15. 查看数据库中所有引擎的类型

    show engines;
    

    16.查看数据库关于日志的参数配置

    select @@general_log_file;
    

    17.查看handler_read_key当前的状态信息

    show status like 'handler_read_key';
    

    18. 列出删除表中数据的方式

    alter table 表名 drop id;    删除一个列
    delete from 表名 where name='oldboy';      删除符合条件(name为oldboy)的行
    

    19.test表中,有id、name、shouji列。把id列设置为主键,在Name字段上创建普通索引

    不会。。。
    alter table test add index idx_name(name);
    

    20. 在手机字段上对前8个字符创建普通索引

    alter table 表名 add index idx_shouji(shouji(8));
    

    21.查看创建的索引及索引类型等信息

    show index from 表名;
    

    22.删除Name,shouji列的索引

    alter table 表名 drop index 索引名;
    alter table test drop index idx_name;
    alter table test drop index idx_shouji;
    

    23.对Name列的前6个字符以及手机列的前8个字符组建联合索引

    alter table test add index idx_name_shouji(name(6),shouji(8));
    

    24. 将shouji列索引替换为唯一键索

    
    

    25.如何查看world数据库下city表中population列的重复值情况

    
    

    26. 请列出explain命令中type中多种类型

    
    

    27.Select查询语句加强练习

    统计世界上每个国家的总人口数.

    select countrycode,sum(population)
    from city
    group by countrycode
    

    统计中国各个省的总人口数量

    select district,sum(population)
    from city
    where countrycode='chn'
    group by district
    
    

    统计世界上每个国家的城市数量

    select countrycode,count(district)
    from city
    group by countrycode
    

    统计中国每个省的总人口数,将总人口数小于100w进行从高到低排序显示

    select district,sum(population)
    from city
    where countrycode='chn'
    group by district
    having sum(population)<1000000
    order by sum(population) desc
    

    28.生成整个数据库下的所有表的单独备份语句

    29. SQL综合练习

    1. 查询平均成绩大于60分的同学的学号和平均成绩;

    select sno,avg(score)
    from score
    group by sno
    having avg(score)>60
    
    

    2. 查询所有同学的学号、姓名、选课数、总成绩;

    select score.sno,student.sname,count(score.cno),sum(score.score)
    from student
    join score
    on student.sno = score.sno
    join course
    on score.cno = course.cno
    group by score.sno,student.sname
    

    3. 查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分

    select course.cno,MAX(score),MIN(score)
    from score
    join course
    on score.cno = course.cno
    group by course.cno
    

    4. 统计各位老师,所教课程的及格率

    
    

    5. 查询每门课程被选修的学生数

    select course.cname,count(score.cno)
    from course
    join score
    on course.cno = score.cno
    group by course.cname
    
    

    6. 查询出只选修了一门课程的全部学生的学号和姓名

    select score.sno,student.sname
    from student
    join score
    on student.sno = score.sno
    join course
    on course.cno = score.cno
    group by score.sno,student.sname
    having count(course.cno) =1
    

    7. 查询选修课程门数超过1门的学生信息

    select score.sno,student.sname
    from student
    join score
    on student.sno = score.sno
    join course
    on course.cno = score.cno
    group by score.sno,student.sname
    having count(course.cno) >1
    

    8. 统计每门课程:优秀(85分以上),良好(70-85),一般(60-70),不及格(小于60)的学生列表

    
    

    9. 查询平均成绩大于85的所有学生的学号、姓名和平均成绩

    select score.sno,student.sname,avg(score)
    from score
    join student
    on score.sno = student.sno
    group by sno
    having avg(score)>85
    

    相关文章

      网友评论

          本文标题:第一次阶测试

          本文链接:https://www.haomeiwen.com/subject/fungqctx.html