• MySQL相关问题


    一.MySQL中常用的数据库引擎 并且说明每个引擎的作用和局别

      InnoDB引擎  Myisam引擎

    区别:

      1.InnoDB支持事务和行级锁   Myisam不支持

      2.InnoDB使用共享空间  Myisam表储存两个文件  MYD和MYI

      3.InnoDB支持热备份 支持崩溃后的安全恢复 Myisam不支持

      4.InnoDB支持外键 Myisam支持全文索引

    二.为什么要释放MySQL链接?pdo方式链接MySQL会比MySQL,MySQLi更安全

      如果不释放链接,链接就会越来越多,最终就会超过MySQL的最大连接数

      pdo采用预处理机制 可以防止sql的注入

    三.MySQL和NoSQL的局别是什么?MySQL和redis怎样结合使用可以指数级提升数据库查询效率

      MySQL是关系型服务器 NoSQL是非关系型数据库

      将redis作为缓存每次获取需要查询数据时,先从Redis里看一下是否存在 如果存在就直接返回如果不存在就从MySQL中查询,将查询的结果保存在redis中一份下次在取值时就直接从redis中获取

    四.常用的mysql命令?

       create database <数据库名>

      show databases;

      drop database <数据库名>

      select database();

      create table <表名> ( <字段名1> <类型1> [,..<字段名n> <类型n>]);

      drop table <表名>

      insert into <表名> [( <字段名1>[,..<字段名n > ])] values ( 值1 )[, ( 值n )]

      select <字段1,字段2,...> from < 表名 > where < 表达式 >

      delete from 表名 where 表达式

      update MyClass set name='Mary' where id=1;

      alter table 表名 add字段 类型 其他;

      mysqldump -u user_name -p123456 database_name > outfile_name.sql

      mysqldump -u user_name -p database_name table_name > outfile_name.sql

      五.数据库设计经验,为什么进行分表? 什么是数据库垂直拆分? 水平拆分? 分区等等?可以举例说明

      当数据表的数据量很大时,查询速度就会降低,为了提高查询速度,需要对表格进行分表。分为水平拆分和垂直拆分。

      水平拆分: 按照行来对表格进行拆分。可以降低在查询时需要读的数据和索引的页数。比如可以按照常用的数据和不常用的数据进行水平拆分。

      水平拆分的缺点:给应用增加了复杂度,通常查询时需要多个表名,查询所有数据都需要union操作。

      垂直分表: 按照列来对表格进行拆分。比如一个表中某些列常用,某些列不常用。可以使数据行变小,一个数据页能存储更多数据,查询时减少I/O次数

      垂直分表缺点:管理冗余列,查询所有数据需要JOIN操作

      有些分表的策略基于应用层的逻辑算法,一旦逻辑算法改变,整个分表逻辑都会改变,扩展性较差

    六.数据库优化问题

    七.MySQL中myisam与innodb的区别,至少5点(3分)

      1 ) 不同:

    1. innodb表引擎,是默认事务型引擎。5.1版本前,myisam是默认存储引擎。
    2. Innodb数据存储在共享表空间,myisam表存储在两个文件.MYD,MYI
    3. Innodb对主键查询的性能高
    4. Innodb支持行级锁,myisam只支持表级锁
    5. Innodb支持外键,myisam不支持外键
    6. Innodb支持热备份,支持崩溃后的安全恢复,myisam不支持崩溃后的安全恢复

       2) innodb引擎的4大特性

    1. 支持事务
    2. 支持行级锁
    3. 支持外键
    4. 支持热备份和崩溃后的安全恢复

       3  ) 两者select count(*)哪个更快,为什么

      Myisam的效率高。Myisam会保存表的总行数,只需要读出保存好的行数即可。Innode表不像myisam有个内置计数器,不会保存表的具体行数,需要扫描整个表来计算有多少行。

     

     

      MySQL 查询问题

        1.统计年龄最大的  ------select  max(age)from stu;

        2.按班级分组统计年龄最大的  -------select max(age) from stu group by classid;

        3.统计总人数,最大年龄,最小年龄,平均年龄,年龄总和  ------select  count(*),max(age),avg(age),sum(age) from stu;

        4.按班级分组统计总人数,最大年龄,最小年龄,平均年龄,年龄总和 ---------- select  count(*),max(age),avg(age),sum(age) from stu group by classid;

        5.按班级分组,统计每个班的平均年龄,并获取平均年龄23以上的信息

          select classid,count(*),max(age),min(age),avg(age) ag from  stu  group  by classid having  ag >=23;

        6.统计每个班级男生的平均年龄

        select  classid,avg(age)from  stu where sex =‘m’group by classid;

     

        嵌套子查询

  • 相关阅读:
    Spring 中的邮件任务
    Spring 定时任务
    java中同步交互 与 异步交互
    Springboot 版本包冲突
    Derby 配置环境变量
    Springboot中的Web服务Tomcat改为Jetty
    二叉树中和为某一值的路径
    0-Java中this和super的用法总结
    树9:二叉搜索树的后序遍历
    位运算-输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
  • 原文地址:https://www.cnblogs.com/wwlong/p/10154991.html
Copyright © 2020-2023  润新知