mysql数据库

MySQL 按首字母排序

為{幸葍}努か 提交于 2020-01-21 03:57:53
如果,mysql字段中的内容是全英文的,那么排序直接常规排序ASC DESC ASC 正序 DESC倒叙 ,就可以。 如果想要排中文的汉字,其实是按着拼音排序 通常我们在查询书籍时,会出现按照书籍的名称进行排序,由于一般数据库编码大都为utf-8 ,他的排序方式为按英文字母规则排序 "a,b,c… " 由上表看出,只要我们在排序时将需要排序的字段转化为GBK编码再进行排序,就可以实现按照书籍名称的首字母进行排序了, 怎样才能将编码转化为GBK呢?在MySQL中提供了函数CONVERT() ,该函数可用来获取一个类型的值 该函数的使用方式为 CONVERT(字段 USING GBK) 例如: SELECT * FROM table ORDER BY CONVERT(field USING GBK) ASC 如果表字段使用的GBK编码的话,我们可以直接order by value ,因为GBK本身就是按照拼音字母排序ABCDEFGHIGK…,当第一位相同的时候会比较第二位,以此类推。 如果表字段使用的UTF-8编码的话,通常我们都会的编码,这样我们可以使用MySQL的convert方法开转换gbk进行排序。 SELECT * FROM TEST ORDER BY CONVERT(value USING GBK) ASC/DESC 来源: CSDN 作者: dxyzhbb 链接:

mysql 事务的ACID特性

老子叫甜甜 提交于 2020-01-21 03:16:47
原子性(Atomicity) 一个事务事务的操作要么全部成功,要么全部失败 一致性(Consistency) 事务开始之前和结束之后,数据库的完整性没有被破坏,写入的资料完全符合所有的预设的规则 这里一致性可能比较难理解,比方说:A转账给B用户100元,但是A只有90元,转完之后A就是-10元了,站在数据结构层是没有问题的,但是在应用层,这个就不符合预设的规则(我们要保证用户的钱>=0) 隔离性(Isolation) 数据库允许并发的事务同时对数据库读写和修改的能力,可以防止多个事务并发执行时导致数据不一致性 持久性(Durability) 事务处理结束后,对数据的修改是永久的,即便系统故障也不会丢失 三 事务并发带来的问题 3.1 脏读 1.事务B更新年龄18 2.事务A读取数据库信息,年龄是18 3.事务B回滚 那么这个就是脏读 3.2 不可重复读 1.事务A先读取数据,年龄为16 2.事务B跟新数据,年龄为18 3.事务B提交 4.事务A再读取数据,年龄为18 事务A连续读取两次的数据都不一样,为不可重复读 3.3 幻读 1.事务A读取年龄大于15的数据,发现有1条记录 2.事务B插入一条记录,并提交 3.事务A再读取年龄大于15的数据,发现有2条记录 事务A就好像出现了幻觉一样,一般幻读出现在范围查询 解决上面的3个问题,就要通过事务的隔离性来解决了

MySQL:Linux下MySQL安装

天大地大妈咪最大 提交于 2020-01-21 03:09:10
如果遇到问题,敬请指正,不胜感激! Linux下MySQL安装步骤 1. 下载安装包 2. 安装前检查 3. 正式安装 4.安装问题及解决方案 5. 参考 1. 下载安装包 下载地址: https://dev.mysql.com/downloads/mysql/ 按照需要选择版本 2. 安装前检查 系统是否安装自带mysql # 检查命令 rpm -qa | grep mysql # 卸载命令 rpm -e mysql..... // 普通删除 rpm -e --nodes mysql-libs.... // 普通删除无法删除,可使用强力删除 系统是否存在 mariadb 数据库 rpm -qa | grep mariadb # 如果有,则卸载 rpm -e --nodeps mariadb-libs...... 3. 正式安装 上传安装包 看个人采用什么方式上传,我用的xshell, 使用sftp命令put到/home/software目录下面。 也可以采用winscp。 解压安装包 cp /home/software/mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz /home/install/ cd /home/install tar -xzf mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz mv

MySQL性能优化(1)

我怕爱的太早我们不能终老 提交于 2020-01-21 01:25:23
MySQL性能优化(1) MySQL单实例与多实例 MySQL多实例的优缺点 MySQL多实例的实现场景 JSON类型 JSON_EXTRACT()函数 JSON_OBJECT()函数 JSON_INSERT()函数 JSON_MERGE()函数 MySQL单实例与多实例 实例:MySQL数据库由后台线程及一个共享内存区组成,数据库实例才是真正用于操作数据库文件的程序集,是一个动态概念。 多实例就是在一台服务器上同时开启多个不同的数据库服务端口(例如3306、3307),同时运行多个数据库进程就是多实例。 MySQL多实例的优缺点 优点 :充分利用服务器资源。 缺点 :资源抢占问题。 MySQL多实例的实现场景 中小型公司的选择:公司业务访问量不大,希望不同的业务使用不同的数据库服务而互相不受影响,建于资金不足,可食用多实例,比如可以通过3台服务器部署9-15个实例,交叉做主从复制、数据备份及读写分离,这样也能达到多个服务器只装1个数据库的效果。 并发访问不是很大的业务:当业务访问量不大,服务器资源基本都是空闲的,这时很适合多实例应用,如果对sql语句优化较好,多实例是一个很值得使用技术,即使并发打,合理分配资源以及搭配号服务,问题也不大。 门户网站应用:门户网站通常会使用多实例,因为配置硬件好的服务器,可以节省IDC机柜空间,同时运行多个实例可以减少资源浪费情况

数据库连接不上的原因以及springBoot的ioc无法自动注入

佐手、 提交于 2020-01-21 00:35:55
无法自动注入解决了,数据池的连接还有问题: 错误原因1: :数据库用的是Mysql8版本,以前的配置mysql驱动包却是5.1.37版本。只需修改驱动包为8.0.11版本即可。 <!-- mysql --> <dependency> <groupId> mysql </groupId> <artifactId> mysql-connector-java </artifactId> <version> 5.1.37 </version> </dependency> 改为 <dependency> <groupId> mysql </groupId> <artifactId> mysql-connector-java </artifactId> <version> 8.0.11 </version> </dependency> 数据库报错还没排除出来: 配置上的问题,手动写一遍配置; @autoware注解无法自动注入 ,找到从错误就来更改;(类似的博客是说:运行类没有放到相应的包下面;) SpringBoot项目的Bean装配默认规则是根据Application类所在的包位置从上往下扫描!“Application类”是指SpringBoot项目入口类。这个类的位置很关键:如果Application类所在的包为:com.boot.app,则只会扫描com.boot.app包及其所有子包

MySQL两种存储引擎: MyISAM和InnoDB 简单总结

我是研究僧i 提交于 2020-01-21 00:16:47
MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良。虽然性能极佳,但却 有一个缺点:不支持事务处理(transaction) 。不过,在这几年的发展下,MySQL也导入了InnoDB(另一种数据库引擎),以强化参考完整性与并发违规处理机制,后来就逐渐取代MyISAM。 InnoDB,是MySQL的数据库引擎之一,为MySQL AB发布binary的标准之一。InnoDB由Innobase Oy公司所开发,2006年五月时由甲骨文公司并购。与传统的ISAM与MyISAM相比,InnoDB的最大特色就是支持了ACID兼容的事务(Transaction)功能,类似于PostgreSQL。目前InnoDB采用双轨制授权,一是GPL授权,另一是专有软件授权。 MyISAM和InnoDB两者之间有着明显区别,简单梳理如下: 1) 事务支持 MyISAM不支持事务,而InnoDB支持。InnoDB的AUTOCOMMIT默认是打开的,即每条SQL语句会默认被封装成一个事务,自动提交,这样会影响速度,所以最好是把多条SQL语句显示放在begin和commit之间,组成一个事务去提交。 MyISAM是非事务安全型的,而InnoDB是事务安全型的,默认开启自动提交,宜合并事务,一同提交

MySql存储过程总结

笑着哭i 提交于 2020-01-21 00:07:20
之前总是在MSSQL上写存储过程,没有在MYSQL上写过,也基本没有用过,今天需要用到MYSQL,研究了下,把项目的需要的存储过程写了一部分,写一下工作总结。这里没有给出数据库结构,不讨论SQL语句的细节,主要探讨存储过程语法,适合有基础的人。 发表地址: http://www.cnblogs.com/zxlovenet/p/3783136.html #查询文章回复 -- ---------------------------- -- Procedure structure for `sp_select_reply_article` -- ---------------------------- DROP PROCEDURE IF EXISTS `sp_select_reply_article`; DELIMITER ;; CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_select_reply_article`(IN `ra_id` int,IN `pagefrom` int,IN `pagesize` int) BEGIN #Routine body goes here... SET @ra_id = ra_id; SET @pagefrom = pagefrom; SET @pagesize = pagesize; SET

MySQL之auto-increment相关处理

泪湿孤枕 提交于 2020-01-20 20:53:51
说明 本文主要用于阅读后记录,参考翻译MySQL 5.7说明文档章节,后续讨论中所使用的的数据库存储引擎为InnoDB。 目录 1.概述 2.术语 3.锁模式 4.AUTO_INCREMENT的使用说明 5.AUTO_INCREMENT 计数器初始化 6.参数查询与设置 1.概述 在数据库表的列中存在AUTO_INCREMENT的列时,配合锁机制可以极大地改进数据库的并发性和SQL的执行性能。 2.术语 “INSERT-like”语句 :任何在数据库表中产生了一行新数据的SQL语句都称为 “类插入” 语句。例如:INSERT, INSERT ... SELECT, REPLACE,REPLACE ... SELECT, and LOAD DATA等。它们可以分为以下三大类: a、Simple inserts:简单插入语句,它描述的是数据进行插入之前就 可以 判断出会有多少条记录插入到表中的情况。 b、Bulk inserts:批量插入语句,它描述的是数据进行插入之前 不可以 判断出会有多少条记录插入到表中的情况。这些批量插入的数据应该是都可以插进入表中的(自己添加)。 c、Mixed-mode inserts:混合模式插入语句,它描述的有两种情况: 情况1:在“Simple inserts”情况下时,如果待插入的行中存在部分行没有指定该auto-increment的值,或者为空

mysql将用,隔开的字符集转成多条记录进行统计

梦想的初衷 提交于 2020-01-20 19:56:53
mysql将用,隔开的字符集转成多条记录进行统计 场景 用到的mysql函数 辅助表 执行语句 很耗性能,权当了解学习 场景 当遇到下面的这种数据库字段,要分别统计没种类型的数据时,可考虑方案为拆解记录到主表中(拆解方案这里不做描述),此外还可借助一个辅助表,利用mysql函数来拆分记录 用到的mysql函数 substring_index(): 字符串截取 length(): 字符串长度校验 replace(): 字符串替换 辅助表 单个表查询可直接用mysql.help_topic,大量查询建议在同一个库中自建表格helq,sql如下,可根据实际属性个数添加数据,关键在必须以0开始,每一条数据必须为关联数字 -- ---------------------------- -- Table structure for help -- ---------------------------- DROP TABLE IF EXISTS `help`; CREATE TABLE `help` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键id', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 STATS

实时数据同步方案

那年仲夏 提交于 2020-01-20 18:30:54
一.Flume收集各数据库日志,准实时抽取到HDFS 安装HDP,包含Flume 方案优点: 1.配置简单,不用编程:只要在flume.conf文件中配置source、channel及sink的相关属性 2.采用普通SQL轮询的方式实现,具有通用性,适用于所有关系库数据源 方案缺点: 1.在源库上执行了查询,具有入侵性 2.通过轮询的方式实现增量,只能做到准实时,而且轮询间隔越短,对源库的影响越大 3.只能识别新增数据,检测不到删除与更新 4.要求源库必须有用于表示增量的字段 二.canal 原理: canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议 mysql master收到dump请求,开始推送( slave拉取,不是master主动push给slaves )binary log给slave(也就是canal) canal解析binary log对象(原始为byte流) mysql中需要配置一个用户,专门提供给canal用 canal开源代码中发送端仅仅支持mysql,不支持oracle,接收端由于采用jdbc,mysql、oracle等可以通吃。 三.maxwell 优点: 支持bootstrap启动,同步历史数据 集成kafka,直接将数据落地到kafka