程序员必备mysql高级知识(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。保留点越多越好。保留点在事务执行完成后自动释放。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/241908.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-12 12:44
下一篇 2024-12-12 12:44

相关推荐

  • 兼职程序员能挣钱吗?

    可以。不过,兼职程序员赚钱的关键就在于如何找到并利用合适的机会。 一、掌握技能 作为程序员,掌握必要的技能是兼职挣钱的前提。除了扎实的编程技能,了解相关工具和平台也非常重要。常见的…

    编程 2025-04-29
  • 兼职程序员外包平台的开发与实现

    随着社会经济和科技的快速发展,更多人选择通过互联网进入编程行业。兼职开发已成为一种新型就业方式,并且这种方式在新冠肺炎疫情袭来、大规模远程办公的背景下更为普遍。本文将从多个方面详细…

    编程 2025-04-28
  • Python元祖排序:从基础知识到高级应用

    Python元祖是一种不可变序列,通常用于将一组数据绑定在一起。元祖之间经常需要排序,本文将从基础知识到高级应用,为你详细讲解Python元祖排序。 一、排序方法 Python提供…

    编程 2025-04-28
  • Python 知乎:一个全新的知识分享平台

    Python 知乎,是一个全新的知识分享平台,它将知识分享变得更加轻松简单,为用户提供了一个学习、交流和分享的社区平台。Python 知乎致力于帮助用户分享、发现和表达他们的见解,…

    编程 2025-04-27
  • 计算机二级基础知识题库

    计算机二级基础知识题库考试为计算机二级考试的必修科目之一,其中包含了计算机的基本知识以及应用能力等内容。本文将从题库概述、考试内容、备考建议以及编程实例等几个方面进行介绍,希望对广…

    编程 2025-04-27
  • Isodata算法算高级算法吗?

    是的,Isodata算法算得上是一种高级算法。 一、Isodata算法的定义 Isodata算法是一种基于聚类的图像分割算法,广泛应用于图像处理领域。 该算法首先对图像进行预处理,…

    编程 2025-04-27
  • 传智播客黑马程序员怎么样

    传智播客是一家专业的IT培训机构,旗下的黑马程序员培训项目备受好评,那么传智播客黑马程序员怎么样呢?本文将从多个方面为大家详细阐述,让大家更加了解其优缺点。 一、学习方式 传智播客…

    编程 2025-04-27
  • Python高级用法:re.split函数双空格

    本文将详细介绍Python中re模块中的split函数双空格的用法及其应用场景。 一、split函数双空格概述 re.split() 是 Python re(正则表达式) 模块中的…

    编程 2025-04-27
  • 软件测试理论基础知识

    一、测试概述 软件测试是指在已知测试用例的前提下,检查软件是否满足规定的功能和质量要求的过程。 软件测试的目的是要发现并纠正可能存在的缺陷。它涉及软件开发周期的各个阶段,从需求分析…

    编程 2025-04-23
  • 如何使用getField函数:Java程序员的必备技能

    Java中有很多反射API可以帮助开发者在运行时获取或者修改某些属性或方法的值。getField方法就是Java反射中一个非常实用的方法。本文将详细介绍getField方法的用法以…

    编程 2025-04-23

发表回复

登录后才能评论