sql
文章平均质量分 77
ziqiiii
念念不忘必有回响;欲速则不达;千里之堤溃于蚁穴
展开
-
事务的基本属性(ACID)和传播属性(Propagation)
数据库事务的四个基本性质简介原子性(Atomicity),在一个事务中的所有操作,相当于一个原子操作,要么全部成功,要么全部失败。一致性(Consistency),就是在事务执行前后,对于事务本身的用意而言,数据库中的数据是保持一致的,数据库的一致性是建立在原子性的基础之上的,更多的由编码的程序员保证,最经典的案例是A,B帐号之间的转账。隔离性(Isolation),事务的隔离性是指事务和事务之间的数据可见性,这也是本文需要详细介绍的地方。数据库定义了各种隔离级别,以在并发性和数据完整性中权衡。持久转载 2021-04-14 11:55:32 · 390 阅读 · 0 评论 -
MySQL 深入学习总结
1.数据库基础1.1 MySQL 架构和其它数据库相比,MySQL 有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离。这种架构可以根据业务的需求和实际需要选择合适的存储引擎,各层介绍:1.1.1 连接层最上层是一些客户端和连接服务,包含本地 sock 通信和大多数基于客户端/服务端工具实现的类似于 tcp/ip 的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在转载 2021-04-11 10:03:45 · 246 阅读 · 0 评论 -
MySQL命令:explain介绍
mysql中的explain命令可以用来查看sql语句是否使用了索引,用了什么索引,有没有做全表扫描。可以帮助我们优化查询语句。例如:b+树索引:使用索引:全表扫描:explain出来的信息有10列,文章主要介绍type、key、Extra这几个字段。演示中涉及到的表结构如下: CREATE TABLE `dept_desc` ( `dept_no` char(4) NOT NULL, `dept_name` varchar(40) NOT NUL.转载 2021-04-11 09:53:46 · 144 阅读 · 0 评论 -
MySQL命令alter add:增加表的字段
alter add命令用来增加表的字段。alter add命令格式:alter table 表名 add字段 类型 其他;例如,在表MyClass中添加了一个字段passtest,类型为int(4),默认值为0:mysql> alter table MyClass add passtest int(4) default ‘0’;加索引mysql> alter table 表名 add index 索引名 (字段名1[,字段名2 …]);例子: mysql> alter ta转载 2020-12-20 12:05:20 · 250 阅读 · 1 评论 -
修改MySQL密码 (MySQL 8)
网上搜修改语句:mysql> SET PASSWORD FOR 'root' = PASSWORD('123');报错:ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the ...原创 2019-09-09 16:03:10 · 171 阅读 · 0 评论 -
MySQL复杂查询2 (找出表中当天数据量最多的前n条数据)
给你一张包含手机信息的表,里面有phone_id手机号,flow使用的流量,create_time创建时间。CREATE TABLE IF NOT EXISTS `phone` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'auto increment id', `phone_id` int(11) NOT NULL COMMENT ...原创 2019-09-03 20:43:33 · 1009 阅读 · 0 评论 -
Java读取sql文件并插入MySQL数据库
.sql 文件里面存的数据格式如下:INSERT INTO tbl_name (col1, col2, …) VALUES (val1, val2,….), (val3, val4,….)从别的地方获取到sql文件,将数据插入到你想要的数据库里面,方法一:直接在数据库下运行.sql文件:mysql> source /User/ziqiii/myInsert.sql...原创 2019-08-16 15:19:52 · 1916 阅读 · 0 评论 -
MySQL 复杂查询1 (统计一个月的生产总额)
一张user表:id为自增主键,uid为用户id,product为产品线代号,value为用户在product产品线上盈利金额,day为产生数据的日期(是个8位的int类型)现要求:求出用户在7月份所有产品线上产生金额超过(包含)100的uid和总金额。解题思路:首先求出用户在7月分所有产品线的uid和总金额,然后在此基础上,求总金额>=10...原创 2019-09-03 20:42:51 · 375 阅读 · 0 评论 -
Sharding-proxy使用教程(问题:启动Sharding-proxy报Unknown system variable 'query_cache_size'的解决方法)
一、使用sharding-proxy,用来测试单库分表,使用教程如下:https://www.jianshu.com/p/0e3f770eb489下载了sharding-proxy-3.0.0打开配置:在127.0.0.1:3306创建ds_0和ds_1数据库直接运行启动:结果stdout.log报错:Unknown system variable...原创 2019-09-09 16:52:55 · 4744 阅读 · 1 评论 -
Sharding-proxy单库分表具体使用操作
前面我们大概讲了一下怎么配置proxy:Sharding-proxy使用教程现在来看一下简单的业务场景:本地127.0.0.1:3306数据库database0,有2张表:CREATE DATABASE database0;USE database0;DROP TABLE IF EXISTS `goods_0`;CREATE TABLE `goods_0` ( `goods...原创 2019-09-09 19:41:42 · 1119 阅读 · 0 评论 -
数据库引擎:MyISAM和InnoDB区别
MyISAM是MySQL的默认数据库引擎(5.5版之前)。虽然性能极佳,而且提供了大量的特性,包括全文索引、压缩、空间函数等,但MyISAM不支持事务和行级锁,而且最大的缺陷就是崩溃后无法安全恢复。不过,5.5版本之后,MySQL引入了InnoDB(事务性数据库引擎),MySQL 5.5版本后默认的存储引擎为InnoDB。大多数时候我们使用的都是 InnoDB 存储引擎,但是在某些情况下使用 ...转载 2019-09-12 15:08:08 · 206 阅读 · 0 评论 -
数据库题目总结1: 常见题型
1. 什么是存储过程?有哪些优缺点? 存储过程就像我们编程语言中的函数一样,封装了我们的代码(PLSQL、T-SQL)。存储过程的优点: 能够将代码封装起来 保存在数据库之中 让编程语言进行调用 存储过程是一个预编译的代码块,执行效率比较高 一个存储过程替代大量T_SQL语句 ,可以降低网络通信量,提高通信速率 存储过程的...转载 2019-09-15 20:53:54 · 1181 阅读 · 0 评论 -
数据库题目总结2: 数据库优化的思路
SQL优化在我们书写SQL语句的时候,其实书写的顺序、策略会影响到SQL的性能,虽然实现的功能是一样的,但是它们的性能会有些许差别。因此,下面就讲解在书写SQL的时候,怎么写比较好。①选择最有效率的表名顺序数据库的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表将被最先处理在FROM子句中包含多个表的情况下: 如果三个表是完全无关系的话,将记录...转载 2019-09-15 20:57:41 · 117 阅读 · 0 评论 -
数据库题目总结3: SQL练习题
下列练习题参考自公众号Java知音: https://mp.weixin.qq.com/s?__biz=MzI4Njc5NjM1NQ==&mid=2247483693&idx=1&sn=9fa301b0076778cd854a924e96cc356e&chksm=ebd63e01dca1b71745dca1f7e1c2aa2b7c80a393185...转载 2019-09-15 21:15:43 · 324 阅读 · 0 评论 -
SpringBoot+k8s+docker部署项目 遇到的时区错误问题
背景:项目部署在亚马逊云端EC2机器上,需要迁移项目到k8s的docker容器。遇到问题:数据表设置字段类型为datetime,如:北京时间(UTC+8时区)2019年10月1日,用hibernate存入数据表显示是(UTC+0时区)2019-09-30 16:00:00分别对应时间为2019年10月1号,2019年10月2号,2019年10月3号存入2019年10月...原创 2019-10-09 15:12:31 · 889 阅读 · 0 评论 -
MySQL存储过程,函数,java调用
首先,在数据库里面设置存储逻辑:(相当于设置一个函数,然后在java代码里面调用它)将结束符号由mysql默认的分号“;”声明为“ //” 或者其他符号(原因是在存储过程函数定义里面会用到分号,如果结束符号跟函数体里面的一样的话,相当于提交语句了,跟定义冲突,需要重新修改一下)(为什么要修改?有时候我们输入的语句不希望立即执行,但是语句中包含有分号;需要输入时,比如说我们在创...原创 2019-08-18 20:10:30 · 1571 阅读 · 0 评论 -
mysql 里创建‘联合索引’的意义
mysql 里创建‘联合索引’的意义转自:mysql 联合索引的意义问题?因为什么需求,要创建‘联合索引’?最实际好处在于什么?如果是为了更快查询到数据,有单列索引不是Ok?为什么有‘联合索引’的存在?一简单的说有两个主要原因:"一个顶三个"。建了一个(a,b,c)的复合索引,那么实际等于建了(a),(a,b),(a,b,c)三个索引,因为每多一个索引,都会增加写操作的开销和磁盘空间的开销。对于大...转载 2018-04-23 11:27:13 · 3833 阅读 · 0 评论 -
mysql 增加字段 / 修改字段 / 增加删除索引 / 修改字段名
经常创建了数据库数据表之后,需要上线修改数据表字段,总结了一下修改表的语句:1.创建使用数据库;2. 创建数据表;CREATE DATABASE IF NOT EXISTS database_name DEFAULT CHARACTER SET = utf8 DEFAULT COLLATE = utf8_general_ci;USE database_name;-- -------...原创 2018-04-20 22:51:51 · 1745 阅读 · 0 评论 -
hibernate 实体类跟数据库关联 hql查询数据库中最新时间的数据
工作中遇到要查询一堆数据里面最新的那条数据,可以将最后更新时间last_update倒叙后输出。数据库信息:CREATE TABLE `xxx_info` ( `id` int(11) NOT NULL AUTO_INCREMENT, `xxx_id` varchar(10) DEFAULT NULL, `last_update` timestamp NOT NULL DEFAULT ...原创 2018-04-21 18:12:36 · 1364 阅读 · 0 评论 -
mysql limit分页查询优化写法
mysql limit分页查询优化写法 在mysql中进行分页查询时,一般会使用limit查询,而且通常查询中都会使用orderby排序。但是在表数据量比较大的时候,例如查询语句片段limit 10000, 20,数据库会读取10020条数据,然后把前10000条丢弃,把最后的20条返回给你,这种消耗是可以避免的,也是没必要的。下边介绍几种优化方法: 优化方法1(让分页操作在索引中进...转载 2018-05-18 18:06:46 · 320 阅读 · 0 评论 -
mysql的5种时间类型的比较
msql的5种时间类型:DATETIME、 TIMESTAMP、DATE、TIME、YEAR。比较如下: 日期时间类型 占用空间 日期格式 最小值 最大值 零值表示 DATETIME 8 bytes YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 9999-12-31 23:59:59 ...转载 2018-08-20 17:24:13 · 177 阅读 · 0 评论 -
MySQL常用命令 《MySQL高效编程》
一、安装MySQLMAC 安装 mysql,有什么安装问题可以直接网上搜,安装包直接找官网下载。附安装教程:https://www.jianshu.com/p/07a9826898c0官网社区版下载地址:https://dev.mysql.com/downloads/mysql/安装完成之后启动:安装之中有任何报错,直接复制到google搜就好了,总有一种方法奏效。 ...原创 2018-11-02 16:10:24 · 217 阅读 · 0 评论 -
MySQL 多个表的连接
(文章内容出自《MySQL高效编程》)原创 2018-11-05 11:47:37 · 1502 阅读 · 0 评论 -
MySQL 表到维护和改造
(文章内容出自《MySQL高效编程》) 由于设计表时到不合理,需要修改表结构,常用语句有:通常情况下,如果列中存在数据了,是不适合进行【数据类型】的转换的。 复制表 / 删除表:...原创 2018-11-05 14:34:23 · 228 阅读 · 0 评论 -
mysql 对视图对操作 相当于 对 原表的操作
数据库对原表是真实物理存在的表,视图是对 一些原表 选择 部分列 合并成 的一个虚拟表格 原表:视图: 以下情况不能对视图进行 插入/更新/删除 操作...原创 2018-11-14 19:49:00 · 3566 阅读 · 1 评论 -
MySQL数据导入 : ERROR 1290 (HY000) 错误解决方案
想要导入文件进mysql里面的数据表,执行LOAD DATA INFILE '/Users/ziqi.zhang/testDB.csv' INTO TABLE goods FIELDS TERMINATED BY ',';返回:ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option...原创 2018-11-29 11:54:50 · 10846 阅读 · 1 评论 -
MySQL数据导出:ERROR 1 (HY000) 错误解决
问题:导出数据库文件:select * into outfile '/ziqiMysqlFile/out.csv' fields terminated by ',' from goods;报error:ERROR 1 (HY000): Can't create/write to file '/ziqiMysqlFile/out.csv' (OS errno 13 - Permi...原创 2018-11-29 16:53:52 · 4464 阅读 · 0 评论 -
Mysql删除重复数据,只保留最后一条数据,创建唯一索引
1、查询重复记录 SELECT * FROM 表名WHERE 重复字段 IN (SELECT 重复字段 FROM 表名 GROUP BY 重复字段 HAVING COUNT(重复字段)>1); 2、删除重复记录,但保留一条 DELETE FROM 表名WHERE 重复字段 IN (SELECT 重复字段 FROM 表名 ...原创 2019-02-20 17:38:29 · 2372 阅读 · 0 评论 -
分表分库解决方案--垂直切分/水平切分
存在问题:当一张表的数据达到几千万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会卡在那儿了。分表的目的就在于此,减小数据库的负担,缩短查询时间。分区方式可以是任意的,并不局限于传统的水平分区和垂直分区:MySql的Sharding策略包括垂直切分和水平切分两种。垂直(纵向)拆分:是指按功能模块拆分,以解决表与表之间的io竞争。比如分为订单库、商品库、用户库…这种方式多...原创 2019-06-20 15:37:57 · 1639 阅读 · 0 评论 -
TiDB简单介绍 以及 MySQL与TiDB查询性能对比实验
原创 2019-07-16 17:42:11 · 9018 阅读 · 3 评论 -
Left join 中 on 和 where 的区别
#测试建表语句如下:CREATE TABLE `user` ( `id` int(11) NOT NULL, `uid` int(11) NOT NULL, `value` bigint(20) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4CREATE TABLE `...原创 2019-08-14 21:21:18 · 141 阅读 · 0 评论 -
mysql hibernate timestamp update_time 自动更新时间问题
(这是博主第一篇真正意义上的原创,该问题来源于工作中遇到的小问题)需求分析:一个表中,有两个字段,createtime和updatetime。1 当insert的时候,sql两个字段都不设置,会设置为当前的时间2 当update的时候,sql中两个字段都不设置,updatetime会变更为当前的时间设计数据库如下:该数据表需要一个数据的创建时间create time,和一个数据最近更新时间last...原创 2018-04-11 21:08:39 · 3128 阅读 · 0 评论