zoukankan      html  css  js  c++  java
  • Linux下mysql的二进制安装与部分练习

    鲸英训练营 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分)

     

     

     

     

     

     

    环境变量更改:

    直接启动:

     

     

     

     

    重启后:

     

     

     

     

     

     

     

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

     

    不积跬步,无以至千里;不积小流,无以成江海。
  • 相关阅读:
    (网页)中的简单的遮罩层
    (后端)shiro:Wildcard string cannot be null or empty. Make sure permission strings are properly formatted.
    (网页)jQuery的时间datetime控件在AngularJs中使用实例
    Maven Myeclipse 搭建项目
    MyBatis 环境搭建 (一)
    java 常用方法
    XML 基础
    JS BOM
    js 事件
    js 的使用原则
  • 原文地址:https://www.cnblogs.com/CCTVCHCH/p/15062781.html
Copyright © 2011-2022 走看看