美文网首页
数据库第一次模拟考试

数据库第一次模拟考试

作者: 吃可爱长大鸭 | 来源:发表于2019-12-09 17:20 被阅读0次

1.请写出数据库管理系统的种类?(2分)

RDBMS:Oracle、mysql、mssql(SQL Server)、PG(postgresql)

       数据安全性要求较高的应用场景

NoSQL:redis、mongodb、memcache、Hbase、neo4j

       针对性能要求较高,数据安全性要求不是太高的场景,一般是配合RDBMS使用的产品

2.请简述RDBMS和NoSQL的特性对比(2分)

特点对比:
关系型数据库:强大的查询功能 强一致性 二级索引
非关系型数据库:灵活模式   扩展性   性能

关系型数据库(RDBMS)的特点:

1.二维表

2.典型产品Oracle传统企业,MySQL互联网企业

3.数据存取是通过SQL(Structured Query Language结构化查询语言)

4.最大特点数据安全性方面强(ACID)

非关系型数据库(NoSQL:Not only SQL)的特点:

1.不是否定关系型数据库,而是做关系型数据库的补充。

3.请写出MySQL5.6级5.7版本选择规则(2分)

5.6   GA6个月以上的版本,小版本为双数

5.7   GA6个月以上的版本,选择5.7.17版本以上,小版本为双数

4.简述SQL的执行过程(连接层——SQL层——存储引擎层)(4分)

连接层

1、提供连接协议(socket、tcp/ip)

2、验证用户的合法性(用户名、密码、白名单)

3、提供一个专用连接线程(接收SQL、返回结果),将SQL语句交给SQL层继续处理

SQL层

1、接收到SQL语句,语法判断。

2、判断语义(判断语句类型:DML、DDL、DCL、DQL)

3、解析器将SQL语句解析成SQL接口能够识别方式(执行计划explain),解析完成后,交给优化器进行优化

4、优化器,选择他认为成本最低的执行计划。交给 执行器。

5、执行器根据优化器的选择,按照优化器建议执行SQL语句,生成执行结果。

5.1 具体:在哪个数据文件上的哪个数据页中?

5.2 将以上结果发送给下层继续处理

6、接收存储引擎层的数据,结构化成表的形式,通过连接层提供的专用线程,将表数据返回给用户。

7、查询缓存

7.1 query_cache, 使用memcache 或者redis 替代

8、日志记录(binlog)

存储引擎层

1、接收上层的执行结果

2、取出磁盘文件和相应数据

3、返回给SQL层,结构化之后生成表格,由专用线程返回给客户端

5.请写出源码安装的步骤(2分)

1.下载源码包

2.安装依赖

3.创建管理服务用户

4.解压源码包

5.进入解压成功的压缩包目录

6.cmake预编译

7.进行make编译

8.进行编译安装make install

9.软连接

10.拷贝配置文件

11.拷贝启动脚本

12.进入初始化脚本目录,进行初始化

13.修改程序目录属主属组

14.修改启动脚本权限

15.手动创建socket文件存放位置的目录

16.启动数据库

6.请写出mysql客户端连接方式?及连接命令?默认是什么连接方式?为什么?(3分)

1.TCP/IP连接

mysql -uroot -p123 -h127.0.0.1

并不是所有的-h都是TCP/IP连接

所有的远程连接都是TCP/IP连接

2.socket连接

mysql -uroot -p123 -S /tmp/mysql.sock

mysql -uroot -p123

mysql -uroot -p123 -hlocalhost

默认连接的是socket连接,因为不需要进行tcp/ip的三次握手,连接的时候速度更快。

7.请写出什么是分区表(2分)

一个区是由一个或者多个的页组成的,一个段是由多个区组成的,一个段里面只有一个区,且存放的是一类的数据,就是分区表。

8.简述MySQL5.6与MySQL5.7安装区别(3分)

cmake的时候加入了bostorg

mysql_install_db已经不再使用了,5.7改成了mysqld --initialize 完成实例初始化。如果 datadir 指向的目标目录下已经有数据文件,则会有[ERROR] Aborting;

在初始化时如果加上 --initial-insecure,则会创建空密码的 root@localhost 账号,否则会创建带密码的 root@localhost 账号,密码直接写在 log-error 日志文件中;新用户登入后需要立刻修改密码,否则无法继续后续的工作。

9.回答下列问题 (3分)

【建库建表】

创建wordpress数据库

create database wordpress;

使用wordpress库

use wordpress;

创建t1、t2表

create table t1 (id int);

create table t2 (id int);

创建blog库

create database blog;

使用blog库

use blog;

创建t1表

create table tb1 (id int);

【授权】

grant select on *.* to wordpress@’10.0.0.5%’ identified by ‘123’;

grant insert,delete,update on wordpress.* to wordpress@’10.0.0.5%’ identified by ‘123’;

grant all on wordpress.t1 to wordpress@’10.0.0.5%’ identified by ‘123’;

【问】

一个客户端程序使用wordpress用户登陆到10.0.0.51的MySQL后,

1)对t1表的管理能力?

all 

2)对t2表的管理能力?

select  insert  delete  update

3)对tb1表的管理能力?

select

10.什么是多实例?(2分)

实例就是MySQL的后台进程+线程+预分配的内存结构。

多实例就是多个后台进程+线程+预分配的内存结构。

11.请说出下列命令的含义(4分)

\h 或 help 或?      ****查看帮助**

\G                  ****格式化查看数据(key:value)**

\T 或 tee           **** 记录日志**

\c(5.7可以ctrl+c)  ****结束命令**

\s 或 status         ****查看状态信息**

\. 或 source        **** 导入SQL数据**

\u或 use            **** 使用数据库**

\q 或 exit 或 quit  **** 退出**

12.请列出MySQL自带客户端工具都有哪些?(2分)

mysql

mysqladmin

mysqldump

13.请根据要求写出下列SQL语句 (3分)

1)创建数据库名为oldboy,默认字符集utf8,校验规则为utf8_general_ci

create database testa charset utf8 default collate=utf8_general_ci;

2)删除数据库oldboy

drop  database  oldboy;

3)修改数据库的字符集为gbk 

alter database oldboy charset  gbk;

14.请按要求写出下列数据类型 (2分)

**整数类型:** **int**

**最小整数类型:** **   tinyint**

**字符类型:** **       varchar**

**枚举类型:** **       enum**

15.请写出char和varchar的区别?(1分)

varchar(20)   变长

char(20)      定长

16.建库建表题(规范创建)

插入数据

1.将自己班级小组所有人员信息插入到student表中(数据自定义)

2.将曾导、徐导、李导信息插入教师表中(数据自定义)

3.将数学、语文、英语学科插入到课程表中(数据自定义)

4.将分数插入到成绩表中(数据自定义)

建表和插入数据10分

create table student(

sno int(20) not null primary key auto_increment comment '学号',

sname varchar(20) not null  comment '学生姓名',

sage tinyint unsigned comment '学生年龄',

ssex enum('0','1') not null default '1' comment '学生性别',

sbirthday datetimedefault null comment '学生生日',

class varchar(20) not null  comment '学生班级'

) charset utf8 engine=innodb;
create table course(

cno int(20) not null primary key auto_increment comment '课程号',

cname varchar(20) not null  comment '课程名称',

tno varchar(20) not null  comment '教师编号'

) charset utf8 engine=innodb;
create table score (

sno int(20) not null primary key auto_increment comment '学号',

cno int(20) not null  primary key auto_increment comment '课程号',

mark float(5) not null  comment '成绩'

) charset utf8 engine=innodb;
create table teacher(

tno varchar(20) not null primary key auto_increment comment '教师编号'

tname varchar(20) not null comment '教室姓名',

tage tinyint unsigned comment '教师年龄',

tsex enum('0','1') not null default '1' comment '教师性别',

prof varchar(20)  comment '教室职称',

depart varchar(20) not null comment '教室部门'

) charset utf8 engine=innodb;

插入数据

1.将自己班级小组所有人员信息插入到student表中(数据自定义)

insert into student(sname,sage,class)  values('张三',30,'linux03');

2.将曾导、徐导、李导信息插入教师表中(数据自定义)

insert  into teacher(tname,tage,depart) values('曾导',20,'linux学院');

3.将数学、语文、英语学科插入到课程表中(数据自定义)

insert  into course(cname,tno) values('数学',1),('语文',2), ('英语',3);

4.将分数插入到成绩表中(数据自定义)

insert into  score(mark) values(80),(90),(68);

查询练习:(20分)

1.查询student表中的所有记录的sname、ssex和class列。

select sname,ssex,class from student;

2.查询教师所有的单位即不重复的depart列。

select distinct(depart) from teacher

3.查询student表的所有记录。

select * from student;

4.查询score表中成绩在60到80之间的所有记录。

select * from score where mark<=80 and >=60;

5.查询score表中成绩为85,86或88的记录。

select * from score where mark in(85,86,88);

6.查询student表中1班或性别为“女”的同学记录。

select * from student where class='1班' and ssex=0;

7.以class降序查询Student表的所有记录。

select * from student order by class desc;

8.查询”曾志高翔“教师任课的学生成绩。

select student.sname,score.mark,teacher.tname,course.cname from student,course,score,teacher where student.sno=score.sno and course.cno
and course.tno=teacher.tname='曾导';

9.查询语文课程所有男生的成绩并且查出对应课程的教师名,职称,及所在部门。

select student.sname,course.cname,score.mark,teacher.tname,teacher.prof,teacher.depart

 from  student,course,score,teacher where student.sno=score.sno

and course.cno=score.cno and score.tno=teacher.tno and course.cname='语文' and student.ssex=1;

10.查询2班的学生人数。

select count(sno) from student where class='2班';

17.索引的类型都有哪些?(2分)

1)BTREE:B+树索引

2)HASH:HASH索引

3)FULLTEXT:全文索引

4)RTREE:R树索引

18.mysql中创建索引的分类都有哪些?(3分)

主键索引

普通索引

唯一索引

前缀索引

联合索引

19.请写出在企业中一般索引扫描达到什么级别就认为SQL语句是OK的?(1分)

性能从最差到最好,我们认为至少要达到range级别才是OK的

range:索引范围扫描,对索引的扫描开始于某一点,返回匹配值域的行。

20.请写出不走索引的规则,4条以上?(3分)

没有查询条件,或者查询条件没有建立索引

查询结果集是原表中的大部分数据,应该是25%以上

索引本身失效,统计数据不真实

查询条件使用函数在索引列上或者对索引列进行运算,运算包括(+,-,*等)

隐式转换导致索引失效.这一点应当引起重视.也是开发中经常会犯的错误

<> ,not in 不走索引

like "%_" 百分号在最前面不走索引

单独引用联合索引里非第一位置的索引列

21.在企业中使用什么命令来优化SQL语句?select * user,host from mysql.user如何查看该SQL语句的索引扫描级别? (2分)

explain或desc

explain select * user,host from mysql.user

22.请介绍MySQL5.6版本默认的存储引擎是什么?(1分)

innodb

23.请简述MySQL5.6默认存储引擎与myisam的区别,核心特性?(4分)

物理上:

myisam:

-rw-rw---- 1 mysql mysql 10684 Jun 19 15:32 user.frm

-rw-rw---- 1 mysql mysql   464 Jun 21 17:26 user.MYD

-rw-rw---- 1 mysql mysql  2048 Jun 21 17:49 user.MYI

innodb:

-rw-rw---- 1 mysql mysql   8710 Jun 25 16:25 city.frm

-rw-rw---- 1 mysql mysql 671744 Jun 25 16:25 city.ibd

1\. 事务安全(MyISAM不支持事务,INNODB支持事务)

2\. 外键 MyISAM 不支持外键, INNODB支持外键. 

3\. 锁机制(MyISAM时表锁,innodb是行锁)

4\. 查询和添加速度(MyISAM批量插入速度快

5\. 支持全文索引(MyISAM支持全文索引,INNODB不支持全文索引)

6.MyISAM内存空间使用率比InnoDB低

24.请简述什么是共享表空间,什么是独立表空间?(2分)

共享表空间: Innodb的所有数据保存在一个单独的表空间里面,而这个表空间可以由很多个文件组成,一个表可以跨多个文件存在,所以其大小限制不再是文件大小的限制,而是其自身的限制。从Innodb的官方文档中可以看到,其表空间的最大限制为64TB,也就是说,Innodb的单表限制基本上也在64TB左右了,当然这个大小是包括这个表的所有索引等其他相关数据。

独立的表空间,仅存储该表的:数据,索引和插入缓冲BITMAP等信息。其余信息仍存储在默认表空间.

25.请简述事务的核心特性,分别是什么含义?(4分)

Atomic(原子性)

所有语句作为一个单元全部成功执行或全部取消。

Consistent(一致性)

如果数据库在事务开始时处于一致状态,则在执行该。事务期间将保留一致状态。

Isolated(隔离性)

事务之间不相互影响。

Durable(持久性)

事务成功完成后,所做的所有更改都会准确地记录在数据库中。所做的更改不会丢失。

26.请叙述出redo及undo在MySQL服务器突然断电的CSR步骤?(5分)

没有进行commit,也没有写入磁盘

数据从redo日志,undo日志,将数据加载到内存中对应的buffer,redo buffer没有数据变化信息,undo buffer有快照,回滚,将快照的数据写入磁盘。

没有进行commit,但写入磁盘了

数据加载到内存对应buffer,redo buffer有变化信息,回滚重做数据变化,undo buffer有快照,但没有commit标签,回滚,将快照数据写入磁盘。

进行commit,也写入到磁盘了。

数据加载到内存对应的buffer,redo buffer有变化信息,回滚重做数据变化,undo buffer有commit标签,将重做数据写入磁盘。

27.请写出MySQL5.6默认存储引擎及myisam存储引擎的锁粒度?(2分)

MyIsam:低并发锁(表级锁)

Innodb:高并发锁(行级锁)

28.请写出一个成功事务的生命周期(1分)

begin;

sql1

sql2

...

commit;

29.MySQL中varchar与char的区别以及varchar(50)中的50代表的涵义(1分)

varchar(20)   变长

char(20)      定长

30.补全语句:select vend_id,count() from products where prod_price>=10 group by vend_id ____ count()>=2;(2分)

having

相关文章

  • 数据库第一次模拟考试

    1.请写出数据库管理系统的种类?(2分) 2.请简述RDBMS和NoSQL的特性对比(2分) 3.请写出MySQL...

  • 给同学们的一封信(2)

    给同学们的一封信(2) ——第一次模拟考试结束后 亲爱的同学们, 大家晚上好! 今天我们结束了高三的第一次模拟考试...

  • 你什么都做了,差这一点就成了

    高考前都会有三次模拟考试,第一次模拟考试离高考不到三个月。老师们常说“你的第一次模考成绩几乎就是你的高考成绩”。于...

  • 第一次模拟考试

    高三的第一次模拟考试如期而至,已过两天。 都知道高三第一次模拟考试的重要性,一是题目是由一线高中老师反复琢磨命制而...

  • 1•关于我们的相遇

    逯同学第一次给我留下印象的时候是在高三的模拟考试。 当时全年级都处在紧张备考的氛围中,每一次模拟考试都被当...

  • 第一次科目二考试

    第一次考科目二那天,是我认为很倒霉的一天。虽然经历前一天的模拟考试,但心里还是胆战心惊,因为模拟考试发挥并...

  • 模拟考试

    孩子马上就要中考了,学校先后进行了三次模拟考试。 第一次模拟考试,孩子考得很好,年级46名,心情自然好,也对自己充...

  • 备考45天Topik考生的完美逆转经验

    第一次做Topik模拟考试,考完感觉就很不好,阅读和听力几乎都不懂。我的第二次Topik模拟考试准备时间大约是1个...

  • 社工模拟考试

    市民政局组织各县区进行社工模拟考试,让我们这些报考社工考试的人员报名参加。 明天是第一次模拟考试。 群里消息发出后...

  • 九年级座谈会

    九年级座谈会 今天九年级第一次模拟考试和体育模拟考试的成绩出来了,我们随机召开了九年级班主任座谈会...

网友评论

      本文标题:数据库第一次模拟考试

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