MySQL
文章平均质量分 80
洒家肉山大魔王
学习是一辈子的事情,去身上的戾气也是一辈子的修炼。
展开
-
常见的字符集总结
MySQL 字符编码集中有两套 UTF-8 编码实现:utf8和utf8mb4。如果使用utf8的话,存储emoji 符号和一些比较复杂的汉字、繁体字就会出错。为什么会这样呢?这篇文章可以从源头给你解答。何为字符集?字符是各种文字和符号的统称,包括各个国家文字、标点符号、表情、数字等等。字符集就是一系列字符的集合。字符集的种类较多,每个字符集可以表示的字符范围通常不同,就比如说有些字符集是无法表示汉字的。计算机只能存储二进制的数据,那英文、汉字、表情等字符应该如何存储呢?...转载 2022-02-28 21:56:20 · 6001 阅读 · 0 评论 -
数据库范式
前言要理解范式,首先必须对知道什么是关系数据库,如果你不知道,我可以简单的不能再简单的说一下:关系数据库就是用二维表来保存数据。表和表之间可以……(省略)。理解以下概念:实体:现实世界中客观存在并可以被区别的事物。比如“一个学生”、“一本书”、“一门课”等等。值得强调的是这里所说的“事物”不仅仅是看得见摸得着的“东西”,它也可以是虚拟的,比如说“老师与学校的关系”。属性:教科书上解释为:“实体所具有的某一特性”,由此可见,属性一开始是个逻辑概念,比如说,“性别”是“人”的一个属性。在关系数据原创 2021-12-05 09:27:34 · 783 阅读 · 0 评论 -
数据库的分库分表
读写分离主要应对的是数据库读并发,没有解决数据库存储问题。如果MySQL一张表的数据量过大怎么办?换而言之,我们如何解决MySQL的存储压力?解决方案:分库分表什么是分库?分库 就是将数据库中的数据分散到不同的数据库上。下面这些操作都涉及到了分库:你将数据库中的用户表和用户订单表分别放在两个不同的数据库。 由于用户表数据量太大,你对用户表进行了水平切分,然后将切分后的 2 张用户表分别放在两个不同的数据库。什么是分表?分表 就是对单表的数据进行拆分,可以是垂直拆分,也可以是水转载 2021-12-05 08:52:35 · 202 阅读 · 0 评论 -
想用数据库“读写分离”,请先明白“读写分离”解决什么问题
"读写分离"解决什么问题?有一些技术同学可能对于“读写分离”了解不多,认为数据库的负载问题都可以使用“读写分离”来解决。这其实是一个非常大的误区,我们要用“读写分离”,首先应该明白“读写分离”是用来解决什么样的问题的,而不是仅仅会用这个技术。什么是读写分离?其实就是将数据库分为了主从库,一个主库用于写数据,多个从库完成读数据的操作,主从库之间通过某种机制进行数据的同步,是一种常见的数据库架构。一个主从同步集群,通常被称为是一个“分组”。数据库分组架构解决什么问题?大多数互转载 2021-12-04 20:41:30 · 347 阅读 · 0 评论 -
数据库常用的事务隔离级别都有哪些?都是什么原理?
什么是事务隔离?事务ACID特性任何支持事务的数据库,都必须具备四个特性:原子性(Atomicity) 一致性(Consistency) 隔离性(Isolation) 持久性(Durability)也就是我们常说的事务ACID,这样才能保证事务((Transaction)中数据的正确性。而事务的隔离性就是指,多个并发的事务同时访问一个数据库时,一个事务不应该被另一个事务所干扰,每个并发的事务间要相互进行隔离。如果没有事务隔离,会出现什么样的情况呢?并发事务带来的问题脏转载 2021-12-04 20:49:15 · 108 阅读 · 0 评论 -
数据库的读写分离
读写分离何为读写分离?读写分离主要是为了将对数据库的读写操作分散到不同的数据库节点上。 这样的话,就能够小幅提升写性能,大幅提升读性能。一般情况下,我们都会选择一主多从,也就是一台主数据库负责写,其他的从数据库负责读。主库和从库之间会进行数据同步,以保证从库中数据的准确性。这样的架构实现起来比较简单,并且也符合系统的写少读多的特点。读写分离会带来什么问题?如何解决?读写分离对于提升数据库的并发非常有效。但是,同时也会引来一个问题:主库和从库的数据存在延迟。比如你写完主库转载 2021-12-04 21:01:11 · 4801 阅读 · 0 评论 -
MySQL(21)-----数据库事务
1.事务概述什么是事务?事务是逻辑上的一组操作,要么都执行,要么都不执行。举个转账栗子:假如小明要给小红转账 1000 元,这个转账会涉及到两个关键操作就是:将小明的余额减少 1000 元 将小红的余额增加 1000 元。事务会把这两个操作就可以看成逻辑上的一个整体,这个整体包含的操作要么都成功,要么都要失败。这样就不会出现小明余额减少而小红的余额却并没有增加的情况。2.什么是数据库事务数据库事务在我们日常开发中接触的最多了。如果你的项目属于单体架构的话,你接触到的往..原创 2021-10-19 21:17:26 · 254 阅读 · 0 评论 -
MySQL(20)-----数据库设计的常规步骤
在项目开发过程中,涉及到数据库业务时,常规设计思路如下:需求分析: 分析用户的需求,包括数据、功能和性能需求。 概念结构设计: 主要采用 E-R 模型进行设计,包括画 E-R 图。 逻辑结构设计: 通过将 E-R 图转换成表,实现从 E-R 模型到关系模型的转换。 物理结构设计: 主要是为所设计的数据库选择合适的存储结构和存取路径。 数据库实施: 包括编程、测试和试运行 数据库的运行和维护: 系统的运行与数据库的日常维护。...原创 2021-10-19 20:12:18 · 145 阅读 · 0 评论 -
MySQL(19)-----日期和时间函数
有时候我们可能会遇到这样的需求:当前时间是多少,下个月的今天是星期几,截止到当前日期前3天的收入总和等等。这些需求就需要日期和时间函数来实现。本节将配合一些实例对MySQL中支持的一些常用日期和时间函数进行详细的介绍。日期和时间函数MySQL中常用日期和时间函数 函数 描述 CURDATE() 返回当前日期 CURTIME() 返回当前时间 NOW() 返回当前的日期和时间 UNIX_TIMESTAMP(date) 返回日期date的UNIX时间戳原创 2021-10-18 22:34:39 · 96 阅读 · 0 评论 -
MySQL(18)-----表类型(存储引擎)的选择
1.MySQL存储引擎概述插件式存储引擎是MySQL数据库最重要的特性之一,我们可以根据应用的需要选择如何存储和索引数据,是否使用事务等。MySQL5.0支持的存储引擎包括:MyISAM、InnoDB、MEMORY、MEGRY、EXAMPLE、NDB Cluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED等。其中,InnoDB、BDB提供事务安全表,其它引擎都是...原创 2021-10-18 22:33:07 · 174 阅读 · 0 评论 -
MySQL(17)-----数值函数
MySQL中另一类很重要的函数就是数值函数,这些函数能处理很多数值方面的运算。可以想象,如果没有这些函数的支持,我们在编写有关数值运算方面的代码时将会困难重重。举个栗子,如果没有ABS函数,要取一个数值的绝对值,就需要进行好多次判断才能返回这个值,而数值函数能够大大提高工作效率。下面列出了一些MySQL中常用的数值函数。MySQL中的常用数值函数 函数 描述 ABS(x) 返回x的绝对值 CEIL(x) 返回大于x的最小整数值 FLOOR(x) 返回小于x的最大原创 2020-09-03 09:22:35 · 211 阅读 · 0 评论 -
MySQL(16)-----字符串函数
丰富的函数往往能使我们的工作事半功倍,函数可以帮我们处理很多事情,诸如字符串的处理、数值的运算、日期的运算...,在MySQL数据库中,函数可以用在select语句及其子句(如where、order by、having)中,也可以用在update、delete语句及其自居中。本节将配合一些实例对MySQL常用的函数进行详细的介绍。1.字符串函数字符串函数是最常用的一种函数。回顾以往我们...原创 2020-09-02 20:59:28 · 287 阅读 · 0 评论 -
MySQL(15)-----运算符和优先级查询结果拼接处理及CONCAT()、CONCAT_WAS()和GROUP_CONCAT()函数的使用
1、CONCAT()函数2、CONCAT_WAS()函数3、GROUP_CONCAT()函数原创 2020-08-16 12:09:02 · 2101 阅读 · 1 评论 -
MySQL(14)-----运算符和优先级
MySQL支持多种类型的运算符,这些运算符可以用来连接表达式的项。这些类型主要包括算术运算符、比较运算符、逻辑运算符、位运算符。本节将通过实例对MySQL支持的这几种运算符进行详细的介绍。1.算术运算符MySQL支持的算术运算符:加、减、乘、除和模运算。它们是最常使用、最简单的一类运算符。下表列出了这些运算符极其作用。 运算符 作用 + 加法 - 减法 ...原创 2019-01-06 13:55:12 · 5517 阅读 · 0 评论 -
MySQL(13)-----多表查询(子查询)
1.子查询一个查询依赖于另一个查询,则它们之间存在父子关系,称这种查询关系为子查询。2.练习查询用户为"小明"的订单详情:方式1:-->select id from user where username = '小明'; //查询的小明id为3-->select * from orders where user_id = 3;//查询小明的id值后,在订单表中将...原创 2019-01-03 22:08:45 · 759 阅读 · 0 评论 -
MySQL(12)-----多表查询(内连接和外连接)
分析:笛卡尔积:多张表无条件的联合查询(无任何意义) 如:select a.*,b.* from a,b;内连接:使用inner join关键字,inner 可以省略。 格式1:显式的内连接select a.*, b.* from a[inner] join b on ab的连接条件; 格式...原创 2019-01-03 21:17:52 · 2201 阅读 · 0 评论 -
MySQL(11)-----多表创建及描述表关系(多对多的分析和实现)
1.前言对于多表对多表的关系,我们至少需要三张数据表。可以把表A称之为主表,表B称之为关系表,表C称之为字典表或者副表(字典表是纪录比较少,而且基本稳定的,例如:版块名称;副表是内容比较多,内容变化的,例如)。 按照数据库的增删查改操作,多对多关系的查找都可以用inner join或者select * from 主表 where id in (select 主表id from 关系表...原创 2019-01-02 22:15:27 · 3286 阅读 · 0 评论 -
MySQL(10)-----多表创建及描述表关系(一对多的分析和实现)
1.前言在开发中,针对一对多的关系,一方称之为主表或一表,多方称之为多表或从表。为了表示一对多的关系,一般会在多表的一方添加一个字段,字段名称自定义(建议:主表的名称_id)字段类型一般和主表的主键的类型保持一致,该字段称之为外键。【外键约束不是必须的,可以通过Java程序来控制】2. 一对多用户表和订单表----用户表create table user( ...原创 2019-01-02 21:05:08 · 1646 阅读 · 0 评论 -
MySQL(9)-----多表创建及描述表关系(需求)
1.前言最近重新整理了一下以前的MySQL笔记,本系列笔记分为上下两部分。其中,前8节是对MySQL基础的巩固(继续完善),从本节开始梳理一下MySQL的多表操作(继续补充学习)。2.多表操作要求:创建多表,并描述出表与表之间的关系。需求:根据demo里面用到的实体创建成表,并且将它们之间建立关系。分析:SQLdemo中的实体:用户、订单、商品、分类常见表关系:一对...原创 2018-12-27 22:05:38 · 716 阅读 · 0 评论 -
MySQL(8)-----truncate清空表和字段自增
1.truncate清空表truncate:清空表。先前我们用过一种也可以清空表,delete from...truncate数据DDL语句,它的意义在于将这个数据表整体删除,然后重新创建一张空表而delete属于DML语句,操作对象是数据记录,它将逐条删除数据格式:truncate 表名;truncate pk05;2.auto_increatement自增要求:...原创 2018-12-27 21:37:34 · 2171 阅读 · 0 评论 -
MySQL(7)-----常用约束
1.约束约束,其实际作用就是为了保证我们数据的有效性和完整性。2.常用的MySQL约束在MySQL中常用的约束如下:主键约束(primary key)、唯一约束(unique)、非空约束(not null)、外键约束(foreign key)3.主键约束(primary key)主键约束(primary key):被修饰过的字段唯一非空。注意:一张表只能有一个主键(用于...原创 2018-12-27 21:19:49 · 1652 阅读 · 0 评论 -
MySQL(6)-----数据类型
1.数据类型对比Java MySQL byte tinyint short smallint int int long bigint char/String varchar(可变长度,mysql的方言,varchar(20),存放abc,只会占用三个) char(固定长度,char(20),存放abc,将占用29个) ...原创 2017-10-15 15:47:20 · 1334 阅读 · 0 评论 -
MySQL(5)-----DQL语句的基本查询与高级查询
1.DQL语句DQL:数据查询语言操作对象:数据库记录关键词:select格式:select...from 表名 where 条件 group by 分组字段 having 条件 order by 排序字段 asc|desc2.DQL查询2.1 基本查询[1]查询所有的商品select * from products;[2]查询商品名和商品价格--查看...原创 2018-12-25 21:48:14 · 1757 阅读 · 0 评论 -
MySQL(4)-----DML数据库操作(下)
2.2.3 DML语句(下)DML操作是对数据库中表记录的操作,主要包括表记录的插入(insert)、更新(update)、删除(delete)和查询(select) 4.查询记录语法:mysql>SELECT * FROM tablename[WHERE CONDITION]如:mysql>select * from r720;mysql>select ...原创 2017-10-14 16:47:49 · 714 阅读 · 0 评论 -
MySQL(3)-----DML数据库操作(上)
1. DML语句DML:数据库操作语言。操作对象:数据库中表记录(行),关键字:insert(插入)、update(修改/更新)、delete(删除)和select(查询)1.1 插入记录格式1:insert into 表名values (字段值1,字段值2,...,字段值n);语法:->INSERT INTO tablename(field1,field2...fi...原创 2017-09-29 21:59:03 · 989 阅读 · 0 评论 -
MySQL(2)----DDL语句之增、删、改、查操作
1.单表的CRUD数据库:本质上就是一个文件系统,所有数据存在文件中。通过标准的SQL语句对数据进行CRUD操作。对一张数据表的数据进行增删改查操作:Create创建Update修改Read读|检索,查询Delete删除2.SQL2.1 SQL分类DDL:数据定义语言。操作对象:数据库和表关键字:create、alter、drop、DML:数据操作...原创 2017-09-29 20:19:51 · 940 阅读 · 0 评论 -
MySQL(1)----帮助使用
(1)按层次查看【1】mysql>? contents显示所有可供查询的分类,“? 类别名称”【2】mysql>? data types用于查看mysql中支持哪些数据类型【3】mysql>? int查看具体数据类型的介绍【4】mysql>? show使用关键字查询,通过show明天查看所有【5】mysql>? create tab...原创 2017-10-14 17:54:21 · 818 阅读 · 0 评论 -
如何设计 user 表?加入第三方登录呢?
前言说起用户表 , 大概是每个应用/网站立项动工考虑的第一件事情 ; 用户表结构的设计 , 算是整个后台架构的基石 ; 如果基石不稳 , 待到后面需求跟进了发现不能应付 , 回过头来反复修改用户表 , 要大大小小作改动的地方也不少 ; 与其如此 , 不妨设计用户表之初就考虑可拓展性 , 争取不需要太多额外代价的情况下一步到位 。先前设计idusernamepassword用户...转载 2019-11-07 22:09:50 · 839 阅读 · 0 评论 -
Linux系统上安装MySQL
也可以直接复制64位的下载地址,通过命令下载:wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz。-bash: ./scripts/mysql_install_db: /usr/bin/perl: bad interpreter: 没有那个文件或目录。下载地址:http://dev.mysql.com/downloads/mysql/5.6.html#downloads。原创 2019-01-22 22:44:02 · 1193 阅读 · 0 评论 -
非常完整、详细的MySQL规范
一、数据库命名规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份表必须以bak_为前缀并以日期(时间戳)为后缀 所有存储相同数据的列名和...转载 2019-11-07 22:26:01 · 339 阅读 · 0 评论 -
为啥不能用uuid做MySQL的主键?
“在 MySQL 中设计表的时候,MySQL 官方推荐不要使用 uuid 或者不连续不重复的雪花 id(long 形且唯一,单机递增),而是推荐连续自增的主键 id,官方的推荐是 auto_increment。那么为什么不建议采用 uuid,使用 uuid 究竟有什么坏处?本问我们从以下几个部分来分析这个问题,探讨一下内部的原因:MySQL 程序实例使用 uuid 和自增 id 的索引结构对比总结MySQL 程序实例要说明这个问题,我们首先来建立三张表,分别是:user_auto_keyuser_uuid转载 2020-11-30 22:19:21 · 287 阅读 · 0 评论