• MySQL数据库相关


    1、内联,左外联,右外联,全连接,交叉连接的区别

    2、什么是视图?以及视图的使用场景有哪些?

    视图是一种虚拟的表,具有和物理表相同的功能
    只暴露部分字段给访问者,所以就建一个虚表,就是视图。
    查询的数据来源于不同的表,而查询者希望以统一的方式查询,这样也可以建立一
    个视图,把多个表查询结果联合起来,查询者只需要直接从视图中获取数据,不必
    考虑数据来源于不同表所带来的差异

    3、视图作用

    数据库视图隐藏了数据的复杂性。
    数据库视图有利于控制用户对表中某些列的访问。
    数据库视图使用户查询变得简单。

    4、说一下事务的特性?

    原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,
    要么均不执行。
    一致性(Consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行
    执行的结果相一致。
    隔离性(Isolation):事务的执行不受其他事务的干扰,事务执行的中间结果对其他
    事务必须是透明的。
    持久性(Durability):对于任意已交事务,系统必须保证该事务对数据库的改变不
    被丢失,即使数据库出

    5、SQL注入原理

    sql 注入漏洞产生的原因最常见的就是字符串拼接SQL 语句,这种漏洞可以利用注
    释语句绕过验证
    如 select name from userinfo where name=‘alex’ and password = ‘888’
    用户如果在 name 字段输入 alex’ or 1=1 --f 就可以成功绕过验证。
    要解决这个问题就不能在程序中拼接 sql 语句,例如使用 pymysql 的 execute 方法,
    这个方法会自动对用户输入的引号特殊字符做转义

    6、简单说一说 drop、delete 与 truncate 的区别

    delete 和 truncate 只删除表的数据不删除表的结构
    速度,一般来说: drop> truncate >delete
    delete 语句是 del,这个操作会放到rollback segement 中,事务提交之后才生效;
    如果有相应的 trigger,执行的时候将被触发。
    truncate,drop 是 ddl, 操作立即生效,原数据不放到 rollback segment 中,不能回滚. 操
    作不触发 trigger。
    使用场景:
    不再需要一张表的时候,用 drop
    想删除部分数据行时候,用 delete,并且带上 where 子句
    保留表而删除所有数据的时候用 truncate

    7、数据库怎么优化查询效率?

    1. 在where、join on、orderby使用到的字段上加上索引,防止查询时判断null,可能会导致全表扫描
    2. 避免使用or来连接查询条件,可能导致全表扫描,可以用union或者union all
    3. 避免使用like查询,否则会全表查询
    4. 不使用select *,只查询必须的字段
    5. 能用 UNION ALL 的时候就不用 UNION,UNION 过滤重复数据要耗费更多的 cpu资源
    6. 避免 Update 全部字段,否则频繁调用会引起明显的性能消耗,同时带来大量日志
      总结:
      1)避免模糊查询,or ,like
      2)在常用字段加索引,例如 WHERE、JOIN ON 和 ORDER BY 使用到字段上应该加索引
      3)尽量避免全局性的读写操作,例如 SELECT * 、Update 全部字段
  • 相关阅读:
    html文字一行时靠右,多行时靠左
    非 root 用户安装和配置 NodeJS
    空间精密定位与导航VR模拟培训软件突破了时空限制
    【Java集合】了解集合的框架体系结构及常用实现类,从入门到精通!
    vue.nextTick核心原理
    Mac 错误zsh: command not found: brew解决方法
    vb判断是否联网,判断网络状态调用gethostbyname API函数
    node版本切换(nvm)
    好心情心理咨询平台:独处≠孤独,独处对心理健康有多重要?
    30天啃透这份Framework 源码手册直接面进大厂
  • 原文地址:https://blog.csdn.net/Sun123234/article/details/132699804