首页 > 编程知识 正文

程序员必备mysql高级知识(mysql必备基础知识)

时间:2023-12-07 13:39:23 阅读:312908 作者:OXHH

本文目录一览:

  • 1、高级mysql dba必备哪些技能
  • 2、程序员面试宝典之Mysql数据库Innodb引擎的4个隔离级别
  • 3、高级程序员应必备哪些知识
  • 4、数据库(mysql)关键知识

高级mysql dba必备哪些技能

高级操作

1.Mysql 主从同步配置

2.Mysql 双master 配置

3.Mysql 双master+丛库+keepalived 配置高可用数据库

客户端

作为DBA,一定不要用各种GUI工具,mysql自带命令行client才是你的最佳武器

可选项

1.mysql 分区配置,因为限制太多,实际中分表都是程序做

2.高性能 mysql

a).drizzle

b).MariaDB

c).handlersocket

基本知识

1.mysql的编译安装

2.mysql 第3方存储引擎安装配置方法

3.mysql 主流存储引擎(MyISAM/innodb/MEMORY)的特点

4.字符串编码知识

5.MySQL用户账户管理

6.数据备份/数据入导出

7.mysql 支持的基本数据类型

8.库/表/字段/索引 的创建/修改/删除

9.基本sql 语法:select/insert/update/delete,掌握最基本的语法即可,什么inner join,left join的了解就行 mysql的应用场景大多都是高并发访问/业务逻辑简单,join/子查询/视图/触发器 基本上不用

10.sql 聚集查询:group by/having

11.如何用explain 分析优化查询

12.常见 sql 优化技巧

a).select xx from yyy limited ...,

b).order by random

c).select count(*) from

13.各种show xxx 指令,大概有20种,每个都尝试用一次

14.show VARIABLES; 大概有240项,逐条看懂,可以打印出来贴墙上

程序员面试宝典之Mysql数据库Innodb引擎的4个隔离级别

题目:请阐述Mysql Innodb引擎的4个隔离级别

难度:三星

面试频率:五星

这道题真的是一道数据库的高频题,数据库题除了索引的原理之外就是这道题的面试频率最高。

1.Read uncommitted(读未提交):,最低的隔离级别,可以一个事务读到其他事务没有提交的数据,也称脏读,这个隔离级别很少人用

2.Read committed(读已提交):相比于读未提交,这个隔离级别只能读到其他事物已经提交了的数据,这个隔离级别用得比较多。但是不是Mysql默认的隔离级别

3.Repeatable read(可重复读): 在读已提交隔离级别中,2次读取同一个变量如果其他事务修改了它的值,会读到的不一样。而在这个隔离级别中,顾名思义,一个事务开始读了。多次读到的值可以保证是一样的

4.Serializable 序列化 在这个隔离级别下,所有的事务都将串行操作,是隔离级别最高的也是效率最低的,很少人用

面试官追问:Innodb引擎默认隔离级别是哪个

答:可重复读

面试官追问:可重复读的实现原理

答:使用了MVCC多版本控制(类似乐观锁),Innodb引擎会给每一行数据加一个版本号信息,当一个事务修改一个数据时会增加它的版本号+1,当一个事务开始的时候会缓存下此时的版本号,后面读取的时候只会读取这个版本号的数据,因此别的事务提交了修改数据的版本号大于它,因此不会被读到

面试官追问:事务的隔离级别如何设置:

答:在Mysql命令行下调用命令 set global.tx_isolation,但这样Mysql重启失效,修改my.cnf来永久设置

面试官追问:可重读读有什么问题

答:会出现幻读,幻读是指事务读取到一个值无法准确继续后续操作。例如读取一个值,没有则插入,但是等插入的时候其他事务已经插入了,这就会导致插入失败,解决办法:sql语句显示加锁 :select xxxx for update,其他事务修改数据则会阻塞

高级程序员应必备哪些知识

作为高级程序员必须具备以下条件:

(1)必须一个或二个操作系统如:Windows的知识;

(2)熟悉操作系统课程体系、汇编语言课程体系和微机原理课程体系三个基础内容;

(3)必须熟悉一种或二种编程语言;

(4)必须熟练掌握网络编程技术、数据结构、数据库技术

(5)尽量要认识像QQ:105510061这样的单片机高手

(6)熟练掌握如异步串口、USB的原理和使用;

(7)有丰富的屏幕编程经验;

(8)要有敢于研究、探讨问题的勇气,正确评估系统的能力

(9)这些你可能不全明白,不要怕请教老程序员QQ:105510061

数据库(mysql)关键知识

Mysql是目前互联网使用最广的关系数据库,关系数据库的本质是将问题分解为多个分类然后通过关系来查询。 一个经典的问题是用户借书,三张表,一个用户,一个书,一个借书的关系表。当需要查询某个用户借书情况或者是书被那些人借了,就用关系查询来实现。

关系数据库范式

来自英文Normal form,简称NF。要想设计—个好的关系,必须使关系满足一定的约束条件,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。总共有六种范式:第一范式(1NF)、第二范式(2NF)、 第三范式 (3NF)、巴斯-科德范式(BCNF)、 第四范式 (4NF)和 第五范式 (5NF,又称完美范式)。

1NF是指数据库表的每一列都是不可分割的原子数据项。2NF必须满足1NF,要求数据库表中的每行记录必须可以被唯一地区分。3NF在2NF基础上,任何非主 属性 不依赖于其它非主属性(在2NF基础上消除传递依赖)。BCNF是在3NF基础上,任何非主属性不能对主键子集依赖(在3NF基础上消除对主码子集的依赖), 满足BCNF不再会有任何由于函数依赖导致的异常,但是我们还可能会遇到由于多值依赖导致的异常。4NF的定义很简单:已经是BC范式,并且不包含多值依赖关系。5NF处理的是无损连接问题,这个范式基本没有实际意义,因为无损连接很少出现,而且难以察觉。而域键范式试图定义一个终极范式,该范式考虑所有的依赖和约束类型,但是实用价值也是最小的,只存在理论研究中。

Catalog和Schema

是数据库对象命名空间中的层次,主要用来解决命名冲突的问题。从概念上说,一个数据库系统包含多个Catalog,每个Catalog又包含多个Schema,而每个Schema又包含多个数据库对象(表、视图、字段等)。但是Mysql的数据库名就是Schema,不支持Catalog。

Mysql的数据库引擎主要有两种MyISAM和InnoDB,MyISAM支持全文检索,InnoDB支持事务。

SQL中的通配符‘%’代表任意字符出现任意次数。‘_’代表任意字符出现一次。SQL与正则表达式结合查询一般用在WHERE table_name REGEXP '^12.34'。子查询是从里到外执行。

数据库联结(join)涉及到外键,外键是指一个表的列是另一个表的主键,那么它就是外键。笛卡尔积联结(不指定联结条件时)生成的记录条目是单纯的第一个表的行乘以第二个表的列数。用得最多的是等值联结也叫内部联结。

高级联结还有自连接,是指查询中的两张表是同一张表,它通常作为外部语句用来代替从相同表中检索数据时使用的子查询。自然联结使每个列只返回一次。外部联结是指联结包含了那些在相关表中没有关联行的行。例如列出所有产品及其订购数量,包括没有人订购的产品。LEFT OUTER JOIN指选择左边表的所有行。

组合查询是指采用UNION等将两个查询结果取并集。

视图是查看存储在别处的数据的一种工具,它本身并不包含数据,因此表的数据修改了,视图返回的数据也将随之修改,因此如果使用了复杂或嵌套视图会对性能有较大的影响。视图的作用之一是隐藏复杂的SQL通常会涉及到联结查询。

存储过程类似于批处理,包含了一条或多条SQL语句。语法:

CREATE PROCEDURE name()

BEGIN

SQL

END

-------------------------

CALL name()//来调用存储过程

游标有DECLARE定义,游标与存储过程是绑定的,存储过程处理完成,游标就会消失。游标被打开后可以使用FETCH语句访问每一行。

触发器是在某个时间发生时自动执行某条SQL语句。语法:

CREATE TRIGGER name AFTER INSERT ON talbe_name FOR EACH ROW

事务处理可以维护数据库的完整性,保证批量的操作要么完全执行,要么完全不执行。包括事务、回退、提交、保留点几个关键术语。ROLLBACK只能在一个事务处理内使用。他不能回退CREATE和DROP操作。使用COMMIT保证事务提交。复杂的事务处理需要部分提交或回退,因此我们需要使用保留点SAVEPOINT。可以使用ROLLBACK TO savepoint_name。保留点越多越好。保留点在事务执行完成后自动释放。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。