鲸英训练营 0531作业

一、单选题(每题5分,总分25分)

  1. 1. 在MySQL中,一般使用( A )语句来指定一个已有数据库作为当前工作数据库。

    A.USED

    B.USE

    C.BEGIN

    D.GO

  2. 在关系型数据库中,( B )能够唯一标识一个记录的属性或属性的组合。

    A.属性

    B.主码

    C.列

    D.元组

  3. 在MySQL的安装过程中,若选用"启用TCP/IP网络",则MySQL会默认选用的端口号是( B )

    A.1433

    B.3306

    C.52

    D.1587

  4. SQL语句"delete from student"的作用是(A )

    A.删除当前数据库中student表内的所有行

    B.删除当前数据库中整个student表,包括表结构

    C.由于没有where子句,因此不删除任何数据

    D.删除当前数据库中student表内的当前行

  5. 以下哪一个属于DML语句?( C )
    1. Create
    2. Drop
    3. Delete
    4. Grant

二、简答题(总分25分)

1.在mysql中常用存储引擎包括:MyISAM、InnoDB和MEMORY,请您写出每个存储引擎的特点。(10分)

1 InnoDB

从MySQL5.5.8,InnoDB成为MySQL默认的存储引擎。MySQL从3.23.34a开始支持InnoDB。

InnoDB支持事务,主要面向OLTP数据库应用。支持行锁,支持外键,并支持类似于Oracle的行锁定读,即默认读取操作不会产生锁。

InnoDB存储引擎中支持自动增长列AUTO_INCREMENT。自动增长列的值不能为空,且值必须唯一,且必须为主键。在执行插入操作时,若不指定自动增长列的值,或自动增长列的值为0或NULL,则插入的值为自动增长后的值。

若插入任意值,该值在该列中没有出现过,则可以直接插入。

InnoDB存储引擎中,创建的表的结构存储于.frm文件中。数据和索引存储在innodb_data_home和innodb_data_path表空间中。

对于表的数据存储,InnoDB存储引擎采用了聚集的方式,每张表的存储都是按主键顺序进行存放。若没有显示地在表定义时指定主键,InnoDB会为每一行生成一个6字节的ROWID,并以此作为主键。

InnoDB支持外键。外键所在的表为子表,外键依赖的表为父表。父表中被主表外键支持的字段必须为主键。当删除、更新浮标的某条信息时,子表也必须有相应的改变。

InnoDB通过多版本并发控制(MVCC)来获得高并发性,并实现了SQL标准的4种隔离机制,默认为REPEATABLE级别。同时使用一种被称为next-key locking的策略来避免幻读。InnoDB还提供了插入缓冲、二次写、自适应哈希索引、预读等高性能和高可用的功能。

2 MyISAM

MySQL5.5.8之前MyISAM是MySQL默认的存储引擎。

MyISAM不支持事务,不支持外键,支持全文索引,处理速度快。主要面向OLAP数据库应用。

MyISAM存储引擎的表存储成3个文件,文件名与表名相同,扩展名分别为:frm,MYD,MYI。

frm文件:存储表的结构。

myd文件:存储数据。

myi文件:存储存储索引。

MySQL 5.0版本之前,MyISAM默认支持的表大小为4GB,若需要支持大于4GB的MyISAM表时,则需要指定MAX_ROWS和AVG_ROW_LENGTH属性。从MySQL5.0开始,MyISAM默认支持256T的单表数据。

MyISAM的缓冲池只缓存索引文件,而不缓存数据文件。数据文件的缓存交给操作系统完成。这与大多数使用LRU算法缓存数据的数据库都不同。在MySQL5.1.23之前,无论32位系统或64位系统,缓存最大只能设置为4GB,在之后的版本中,64位的系统可以支持大于4GB的索引缓冲区。

3 MEMORY

MEMORY存储引擎(之前被称为HEAP存储引擎)将表中的数据存储在内存中。表结构以文件存储于磁盘。文件名与表名相同,后缀名为frm。服务器需要有足够的内存来维持MEMORY存储引擎的表的使用。如果不需要使用了,可以释放这些内容,或删除不需要的表。

MEMORY存储引擎默认使用哈希索引,可以按需求指定索引类型。

只支持表锁,并发性能较差。不支持VARCHAR、BLOB和TEXT的列类型。

MEMORY存储引擎通常很少用到。由于基于内存,所以响应速度非常快。但若内存出现异常就会影响到数据的完整性。若重启机器或者关机,或当mysqld守护进程崩溃时,所有的MEMORY数据都会丢失。

MEMORY表的大小主要取决于两个参数,分别是max_rows和max_heap_table_size:

max_rows可以在创建表时指定;

max_heap_table_size的大小默认为16MB,可以按需要进行扩大。

若数据超过了设置的值,则MySQL数据库会把其转换到MyISAM存储引擎表,存放在磁盘中。这导致访问性能的降低。

当数据有如下情况时,可以考虑使用MEMORY表:

临时的数据:目标数据只是临时需要,在其生命周期中必须立即可用。

相对无关的数据:存储在MEMORY表中的数据如果突然丢失,不会对应用服务产生实质的负面影响,而且不会对数据完整性有长期影响。

如果使用MySQL4.1及以之前版本,MEMORY的搜索比MyISAM表的搜索效果要低,因为MEMORY表只支持哈希索引,这需要使用整个键进行搜索。但是,4.1之后的版本同时支持散列索引和B树索引。B树索可以使用部分查询和通配查询,也可以使用 < 、> 和 >= 等操作符。

2.如果要在关系型数据库中修改数据,被修改的数据都会先存放在数据缓冲区高速缓存(内存)中,当检查点(checkpoint)到达后,才会将内存中的数据重新写入硬盘。为什么不直接写入到硬盘?如果数据驻留在内存中,此时数据库服务器宕机了,是不是就意味着数据丢失?为什么?(15分)

答:

(1)为什么不直接写入硬盘:效率低,存储速度慢且损伤硬盘寿命,所以先放在内存里;

(2)宕机后并未丢失;原因:可以通过binary log日志恢复数据到某一个具体的时间节点。

三、实操题(总分50分)

实验一:使用SQL语句创建一张名为"学生"的表,属性包括:学号、姓名、性别、班级和出生日期。学号的数据类型为char (10),姓名的数据类型为char (8),性别的数据类型为char (2),班级的数据类型为char (8),出生日期的数据类型为datetime。表创建完成后,往里面插入两行数据(插入的数据自行定义即可),并使用select语句进行全表查询。(25分)

mysql> set default_storage_engine=InnoDB;

Query OK, 0 rows affected (0.00 sec)

mysql> CREATE table students(

-> ID char(10),

-> name char(8),

-> sex char(2),

-> class char(8),

-> birth datetime

-> );

insert into students (ID,name,sex,class,birth) values ("002","Lucy","GL","8",'2002-01-01 10:10:30');


实验二:将虚拟机还原到"Linux安装配置好的初始状态",使用二进制安装的方法,安装并配置好MySQL。需要完成的步骤包括:1.安装MySQL软件;2.初始化MySQL数据库(安装数据库);3.配置环境变量;4.重置默认管理员密码;5.创建mysql账号,实现远程登录mysql。【以上5个步骤完成后,均需将最后结果截图】(25分)




环境变量更改:

直接启动:

重启后:

远程登录并创建数据库成功:



Linux下mysql的二进制安装与部分练习的更多相关文章

  1. linux下mysql多实例安装

    1.MySQL多实例介绍 1.1.什么是MySQL多实例 MySQL多实例就是在一台机器上开启多个不同的服务端口(如:3306,3307),运行多个MySQL服务进程,通过不同的socket监听不同的 ...

  2. linux下mysql多实例安装(转)

    转自:http://www.cnblogs.com/xuchenliang/p/6843990.html   1.MySQL多实例介绍 1.1.什么是MySQL多实例 MySQL多实例就是在一台机器上 ...

  3. linux下mysql基础从安装到基本使用

    在LINUX下安装MYSQL #需要的安装包(按照先后顺序) libdbi-devel--2.1 libdbi--2.1 libdbi-drivers- perl-DBI-.el5 perl-DBD- ...

  4. linux 下mysql多实例安装

    1.软件下载 https://dev.mysql.com/downloads/file/?id=479096 免编译二进制包 mysql-5.6.21-linux-glibc2.5-x86_64.ta ...

  5. linux下mysql 最新版安装图解教程

    1.查看当前安装的linux版本 命令:lsb_release -a 如下图所示 通过上图中的数据可以看出安装的版本为RedHat5.4,所以我们需要下载RedHat5.4对应的mysql安装包 2. ...

  6. Linux下Mysql5.6 二进制安装

    1.1下载二进制安装包 wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.40-linux-glibc2.12-x86_64.t ...

  7. linux下mysql开启二进制日志

    mysql的查询日志,慢查询日志,错误日志,网上的设置方法是正确的.但在二进制日志上设置有问题.正确的设置方法如下, 在/etc/my.cnf文件中[mysqld]下加上: server-id = 1 ...

  8. Linux下mysql 多实例安装配置

    首先我们要清楚什么是多实例?所谓多实例就是用多个配置文件来启动多个不同端口的进程,以不同的端口的形式为外提供服务.明白了多实例 我们下面的操作和配置就一目了然了首先我们要安装一套基础的应用程序,也就是 ...

  9. 三、Linux下mysql的完整安装

    参考资料:http://www.cnblogs.com/fly1988happy/archive/2011/11/21/2257682.html http://www.cnblogs.com/xion ...

  10. Linux下MySQL的数据库安装

    centos7 + mysql5.7 tar包解压安装 先执行wget https://dev.mysql.com//Downloads/MySQL-5.7/mysql-5.7.18-linux-gl ...

随机推荐

  1. 货店管理(delphi+sqlserver)

    之前给朋友做的货店管理程序,个人使用,数据量小,delphi开发的,sqlserver express版,fastReport做的报表(报表可以修改). 源代码全给他的,呵呵,他也可以简单修改了.   ...

  2. CodeForces Round 898 (div 4) H题解析

    CodeForces Round 898 (div 4)H. Mad  City 大致思路    对于有n条边和n个点,说明这个图里面只有一个环 并且两人同时开始和结束移动,所以可以得到当Valeri ...

  3. Apache APISIX 和 Kong 的选型对比

    从 API 网关核心功能点来看,两者均已覆盖: 功能 Apache APISIX Kong 动态上游 支持 支持 动态路由 支持 支持 健康检查和熔断器 支持 支持 动态SSL证书 支持 支持 七层和 ...

  4. Spring的IOC容器创建过程深入剖析

    前言 本次对于Spring的IOC容器的创建过程是基于其源码进行研究分析的,主要涉及BeanFactory的创建过程,Bean的解析与注册过程,Bean实例化的过程以及诸如ClassPathXmlAp ...

  5. golang操作ini文件包之go-ini

    官网:ini.unknwon.io/docs github:https://github.com/go-ini/ini ini 是 Windows 上常用的配置文件格式.MySQL 的 Windows ...

  6. 优化简历的开源工具「GitHub 热点速览」

    有读者留言问我是不是"跑路"了,上周没发「GitHub 热点速览」是因为在忙于编写<HelloGitHub 月刊>.这不,我带着诚意满满的开源项目又回来啦!首先要分享一 ...

  7. 网站刚上线,就被 DDoS 攻击炸了!

    今天是一个值得纪念的日子,你打开一罐可乐,看着自己刚刚上线的小网站,洋洋得意. 这是你第一次做的网站,上线之后,网站访问量突飞猛进:没过多久,你就拿到了千万的风投,迎娶了女神,走上了人生巅峰... 害 ...

  8. 【分块】LibreOJ 6277 数列分块入门1

    前言 分块是一种优雅的暴力,将数组按块长 \(\sqrt{n}\) 进行分块,可实现区间加法.区间求和和区间逆序对计数等场景,进行 \(m\) 次操作的时间复杂度:\(O(m\sqrt{n})\). ...

  9. 你真的懂System.out.println()吗?

    简介 众所周知,Java语言是面向对象的,那如果让你用一行代码体现出来呢? 如果你能自己读懂System.out.println(),就真正了解了Java面向对象编程的含义. 面向对象编程即创建了对象 ...

  10. 无法加载文件 C:\Users\admin\AppData\Roaming\npm\anyproxy.ps1

    无法加载文件 C:\Users\admin\AppData\Roaming\npm\anyproxy.ps1 我们右击开始菜单,以管理员身份打开power shell 运行命令: set-Execut ...