MySQL
文章平均质量分 89
东洛的克莱斯韦克
大二,河东院的菜鸟
展开
-
【MySQL进阶之路】视图
视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。视 图的数据变化会影响到基表,基表的数据变化也会影响到视图。order by 可以用在视图中,但是如果从该视图检索数据 select 中也含有 order by ,那么该视图中的 order by 将被覆盖。创建视图数目无限制,但要考虑复杂查询创建为视图之后的性能影响。视图不能添加索引,也不能有关联的触发器或者默认值。视图可以提高安全性,必须具有足够的访问权限。修改了视图,对基表数据有影响。修改了基表,对视图有影响。原创 2024-08-28 11:38:09 · 211 阅读 · 1 评论 -
【MySQL进阶之路】实现事务隔离的方案——多版本并发控制( MVCC )和Read View理论
多版本并发控制( MVCC )是一种用来解决 读-写冲突 的无锁并发控制为事务分配单向增长的事务ID,为每个修改保存一个版本,版本与事务ID关联,读操作只读该事务开始 前的数据库的快照。所以 MVCC 可以为数据库解决以下问题 在并发读写数据库时,可以做到在读操作时不用阻塞写操作,写操作也不用阻塞读操作,提高了数 据库并发读写的性能 同时还可以解决脏读,幻读,不可重复读等事务隔离问题,但不能解决更新丢失问题。原创 2024-08-28 11:37:51 · 1042 阅读 · 0 评论 -
【MySQL进阶之路】事务的隔离级别
其中隔离级别越严格,安全性越高,但数据库的并发性能也就越低,往往需要在两者之间找一个平 衡点。不可重复读的重点是修改和删除:同样的条件, 你读取过的数据,再次读取出来发现值不一样了幻读的重点在于新增:同样的条件, 第1次和第2次读出来的记录数不一样说明: mysql 默认的隔离级别是可重复读,一般情况下不要修改 上面的例子可以看出,事务也有长短事务这样的概念。事务间互相影响,指的是事务在并行执行的 时候,即都没有commit的时候,影响会比较大。隔离级别描述可能出现的问题。原创 2024-08-27 16:25:50 · 1041 阅读 · 1 评论 -
【MySQL进阶之路】什么是事务以及事务的操作
事务是由一条或多条DML语句构成的。其中多条DML语句的执行必须有两种状体——符合预期的完成对记录的增删改查操作和不执行操作。虽然DML语句的执行是有过程性的,但如果多条DML语句在MySQL服务的技术支持下,能表现出原子性,这一组DML就是事务,反过来说事务是具有原子性的——事务可以进行回滚,如果事务的操作异常中断,MySQL服务可以让数据进行回滚,从而保证事务操作的原子性。事务对应的一组DML语句在上层业务逻辑中不能是毫无意义的。原创 2024-08-27 15:00:16 · 882 阅读 · 0 评论 -
【MySQL进阶之路】索引操作——索引800万条数据示例
比较频繁作为查询条件的字段应该创建索引 唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件 更新非常频繁的字段不适合作创建索引 不会出现在where子句中的字段不该创建索引在创建表的时候,直接在字段名后指定 primary key在创建表的最后,指定某列或某几列为主键索引创建表以后再添加主键主键索引的特点: 一个表中,最多有一个主键索引,当然可以使符合主键 主键索引的效率高(主键不可重复) 创建主键索引的列,它的值不能为null,且不能重复 主键索引的列基本上是int。原创 2024-08-26 07:52:37 · 753 阅读 · 3 评论 -
【MySQL进阶之路】内外链接
内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选。如果联合查询,左侧的表完全显示我们就说是左外连接。如果联合查询,右侧的表完全显示我们就说是右外连接。外连接分为左外连接和右外连接。原创 2024-08-24 16:41:46 · 320 阅读 · 2 评论 -
【MySQL进阶之路】为什么索引能快速的在海量数据中查找
索引:提高数据库的性能,索引是物美价廉的东西了。不用加内存,不用改程序,不用调sql,只要执行 正确的 create index ,查询速度就可能提高成百上千倍。但是天下没有免费的午餐,查询速度的提高 是以插入、更新、删除的速度为代价的,这些写操作,增加了大量的IO。所以它的价值,在于提高一个 海量数据的检索速度。本文探讨索引怎么做到海量数据的快速查找。首先要谈IO问题,数据是在磁盘中的,如果要对数据进行增删查改工作,就必须把磁盘的数据加载到内存,操作系统就要和外设交互。原创 2024-08-24 16:27:46 · 1588 阅读 · 0 评论 -
【MySQL进阶之路】oracle 9i的经典测试雇员信息表案例——多表查询
在数据库的实际开发中,多表查询是一项非常基础且重要的技能。它允许你将来自不同表的数据结合起来,以满足复杂的业务需求。多表查询主要通过几种方式实现,包括但不限于连接(JOIN)、子查询(Subquery)、联合(UNION)等本文会配合案例,深入探讨多表查询准备工作,创建一个雇员信息表(来自oracle 9i的经典测试表) EMP员工表 DEPT部门表 SALGRADE工资等级表 如何显示每个部门的平均工资和最高工资员工表emp部门表dept工资表salgrade。原创 2024-08-23 10:30:10 · 1105 阅读 · 8 评论 -
【MySQL进阶之路】内置函数
ifnull(val1, val2) 如果val1为null,返回val2,否则返回val1的值。md5(str)对一个字符串进行md5摘要,摘要后得到一个32位字符串。password()函数,MySQL数据库使用该函数对用户加密。database()显示当前正在使用的数据库。user() 查询当前用户。原创 2024-08-23 07:24:08 · 556 阅读 · 0 评论 -
【MySQL进阶之路】 group by子句——分组查询
ORDER BY:虽然 GROUP BY 会对分组后的结果进行排序(基于分组列),但如果你想要按照聚合函数的结果(如平均值、总和等)进行排序,你需要使用 ORDER BY 子句。子句在 SQL 中用于将查询结果集按照一个或多个列进行分组。多列分组:GROUP BY 子句可以包含多个列,这意味着结果集将首先按照第一个列进行分组,然后在每个第一列分组内按照第二个列进行分组,依此类推。选择列表中的非聚合列:在 SELECT 语句中,除了聚合函数计算的列之外,只能包含 GROUP BY 子句中指定的列。原创 2024-08-22 07:09:23 · 815 阅读 · 5 评论 -
【MySQL进阶之路】数据的查询
结合 WHERE 子句 和 ORDER BY 子句,查询姓张的同学数学成绩,结果按数学成绩由高到低显示。多字段排序,排序优先级随书写顺序,查询同学各门成绩,依次按 数学降序,英语升序,语文升序的方式显示。对未知表进行查询时,最好加一条 LIMIT 1,避免因为表中数据过大,查询全表数据导致数据库卡死。数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩,用。从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用。ORDER BY 中可以使用表达式,查询同学及总分,由高到低。原创 2024-08-22 07:08:58 · 976 阅读 · 0 评论 -
【MySQL进阶之路】数据的插入,更新,删除
数据的插入,键值冲突问题,数据的替换,更新,删除,截断原创 2024-08-21 08:32:33 · 932 阅读 · 3 评论 -
【MySQL进阶之路】表的约束——主键,自增长,唯一键,外键
如果此时再向学生表插入 赵六,但他的班级id是3,这显然是不合法的,因为班级表中只有id为1 和 2 的两个班级,但由于没有外键的约束,此时依旧可以插入成功。:当对应的字段,不给值,会自动的被系统触发,系统会从当前字段中已经有的最大值 +1操作,得到一个新的不同的值。那如果我要在班级表中删掉id为1的班级依旧是不合法的,因为id为1的班级此时还有学生,但由于没有外键的约束,依旧可以删除成功。一般而言,我们建议将主键设计成为和当前业务无关的字段,这样,当业务调整的时候,我们可以尽量不会对 主键做过大的调整。原创 2024-08-21 08:32:05 · 1225 阅读 · 0 评论 -
【MySQL进阶之路】表的约束——非空约束,默认值,列描述, zerofill
表约束的空属性🔥默认值🔥非空约束和默认值🔥列描述🔥zerofill原创 2024-08-20 09:05:31 · 1016 阅读 · 6 评论 -
【MySQL进阶之路】数据类型
当我们的表的编码是utf8时,varchar(n)的参数n最大值是65532/3=21844[因为utf中,一个字符占 用3个字节],如果编码是gbk,varchar(n)的参数n最大是65532/2=32766(因为gbk中,一个字符 占用2字节)。定长的意义是,直接开辟好对应的空间 变长的意义是,在不超过自定义范围的情况下,用多少,开辟多少。当我们添加枚举值时,也可以添加对应的数字编号。固定长度字符串,L是可以存储的长度,单位为字符,最大长度值可以为255,这里的长度表示的不是自己,而值字符的个数。原创 2024-08-20 09:05:01 · 825 阅读 · 0 评论 -
【MySQL进阶之路】表结构的操作
数据库表结构的增删改查原创 2024-08-19 08:41:57 · 947 阅读 · 7 评论 -
【MySQL进阶之路】数据库的操作
数据库的增删改查,字符集和校验规则,数据库的备份和恢复以及MySQL服务的链接情况原创 2024-08-19 08:40:12 · 1839 阅读 · 81 评论 -
【MySQL进阶之路】MySQL基础——从零认识MySQL
MySQL是一种网络服务,有客户端和服务端。可以用 which命令查看路径。客户端一般在路径下,服务端一般在(以d结尾的进程一般都是守护进程)路径下。而数据存放的路径可以在/etc/my.cnf配置文件中配置,默认是MySQL是在文件系统的基础上搭建的一套完整的网络服务,用于高效的存储,管理数据。那存储数据用文件就可以了,为什么还要弄个数据库?单纯用文件管理数据有如下缺点文件的安全性并不是很可靠文件不利于数据查询和管理文件不利于存储海量数据文件在程序中控制不方便。原创 2024-08-16 06:33:38 · 3096 阅读 · 103 评论