db
叶常落
一朝眉羽成,钻破亦在我
展开
-
SQL按照指定的顺序排序
这个时候可以使用 order by +field函数实现排序需求。但是有时候会遇到按照某个列表排序的需求。例如,按照指定列表排序分。升序降序我们比较熟悉了。原创 2023-11-27 18:19:13 · 1094 阅读 · 0 评论 -
subquery vs derived tables
派生表需要别名,这是经常忘记的事情,需要记录和弄懂。原创 2022-12-11 10:44:37 · 148 阅读 · 0 评论 -
golang mysql遇到的一些问题记录和解决
问题1: utf8 vs utf8mb4问题1: utf8 vs utf8mb4我在开发一个笔记类的软件,我发现它并不支持表情。我检查两个位置。1、数据库链接要注意charset=utf8是不支持表情的,需要改成charset=utf8mb4 fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=%s&parseTime=True&loc=Local",2、数据库建表语句ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT原创 2022-01-24 07:53:49 · 1064 阅读 · 0 评论 -
mysql索引的类型和查看、添加、修改、删除索引的方法介绍
查看索引下面的这些语句都可以看到索引。show index from table_namedesc table_nameshow create table table_name添加索引删除索引unqiueprimary原创 2022-01-14 12:40:21 · 253 阅读 · 0 评论 -
redis-Set集合操作SADD,SMEMBERS,scard,srem
我之前主要是面向字符串类型的key, 主要是用来做缓存的,今天遇到了set类型的key,记录一下,开发人员使用set类型的key用来存放用户是否领取过优惠券(是否可靠存疑,持久性存储也是疑问)。知识到使用的时候才觉得匮乏,更可怕的是一段时间不用,你就忘了。reids操作小技巧:keys * 列出所有的keykeys xxx* 列出以xxx开头的keytype key_name 获取key的数据类型可以把redis set理解成为python set的云化版本,而且是线程安全的。原创 2022-01-12 19:13:10 · 584 阅读 · 0 评论 -
事务隔离级别
事务的概念事务是一组原子性的SQL语句,或者说一个独立的工作单元事务内的语句要么全部执行成功,要么全部执行失败事务的四种特性原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durability)事务的隔离性通常来说,一个事务所做的修改在最终提交以前,对其他事务是不可见的假如A,B两个事务,A向数据库中写入了数据,但是没有提交,那么在B事务中到底能不能看到A事务的修改呢?事务的隔离级别在SQL标准中定义了四种隔离级别,每一种级别都规定原创 2021-11-26 19:46:10 · 73 阅读 · 0 评论 -
clickhouse的常见问题以及和mysql相关特性对比
FBI warning: 本文乃小白视角中的clickhouse,有一定mysql基础,但是没有clickhouse基础。带着问题来学习如何理解行式存储和列式存储?clickhouse有哪些引擎?clickhouse支持什么样的sql?clickhouse中的数据可以压缩吗?clickhouse中的索引是怎么样的?什么是OLAP?clickhouse中数据是怎么查找的?clickhouse的dml是怎么样的?clickhouse支持事务吗?1. 如何理解行式存储和列式存储?行式存原创 2021-07-19 19:43:02 · 672 阅读 · 0 评论 -
如何得知mysql表结构发生变化了呢?
假如我修改了mysql里面的某个表的列类型,我可以知道修改这个列类型的时间吗?这个问题对应的回答是:数据库表结构变动跟踪。如果开发人员修改了表结构,那么测试人员或者dba应该得知表结构什么时间发生了什么变化?一种最原始的方法是使用邮件进行变动语句跟踪,建表语句或者该表语句都要附带到邮件中。另一种方法可以通过information_schema.tables获取新创建的表。但是这种方法怎么知道新增加的列或者修改的列呢?????如果有人知道对应的方法,请给我留言。...原创 2021-06-07 21:05:24 · 1297 阅读 · 0 评论 -
mysql的sql执行过程和explain语句
sql的执行过程如何优化原创 2021-06-03 20:45:08 · 108 阅读 · 0 评论 -
mysql创建表语句和修改表语句
每天创建一个表,来练习表设计。这种图叫做syntax diagram,非常适合用来描述sql语法规则,基本上看到这种图,就知道语句要怎么写了,但是我还没有发现能够方便画syntax diagram的工具。表相关创建表create table table_name(id int primary key, a int, b int);删除表drop table_name查看表desc table_nameshow create table table_name列相关column添加列a原创 2021-05-24 19:55:51 · 651 阅读 · 0 评论 -
《高性能MySQL》读书笔记-第6章-性能查询优化
查询优化索引优化库表结构优化需要齐头并进,一个不落。6.2 慢查询基础:优化数据访问6.2.1是否向数据库请求了不需要的数据原创 2021-05-23 09:46:06 · 124 阅读 · 0 评论 -
《高性能MySQL》读书笔记-mysql数据类型和应用
这篇文章主要介绍下现实中的数据和msyql里面的存储的类型,例如ip地址要怎么存储,时间要怎么存储,字符串要怎么存储。名词解释:宽表:也是就是列很多的表数据类型一个是指现实中的数据类型另一个是指MySQL用来存储的数据类型,大的数据类型,例如数字,字符串,时间等,还有就是具体的数据类型,例如数字里面的INT,FLOAT,DOUBLE,DECIMAL等等用什么数据类型来存储哪些数据?用什么类型来存储ip地址?用什么类型存储时间?DATETIMETIMESTAMP...原创 2021-05-23 09:16:27 · 99 阅读 · 0 评论 -
mysql connection_id &表锁的应用
本文技术点:connection_idlock tables table_name readconnection_idselect connection_id()可以获取到当前连接的id,我觉得这个能使用这个函数对于理解msyql很有帮助。从大类上分,其实可以分到自省的那种类型,是一种自我认知的方式,程序所提供的能力。通过connection_id可以理解,到底是一个连接还是两个连接,比如使用Navicat客户端,再开一个tab页,再查看connection_id发现已经变了。show原创 2021-05-20 19:00:56 · 280 阅读 · 0 评论 -
《高性能mysql》读书笔记一
《高性能MySQL》这应该是本好书,因为很多有趣且重要的内容都出自这里。原创 2021-05-19 22:27:48 · 78 阅读 · 0 评论 -
mysql innodb引擎数据存储方式和索引的概念
索引主键索引二级索引(非主键的索引)mysql两个引擎的区别在上面的图中体现出来了。B+tree索引下面的图是从网上找的,来源已经不可知了。通过下图可以简单理解数据查找的过程。还有一个点就是,每个节点的长度其实是mysql里面一个页的大小。例如innodb_page_size 为16384字节,也就是16kb...原创 2021-05-19 22:01:01 · 126 阅读 · 0 评论 -
关于mysql的一些问题
1.mysql能存多少数据?这是一个模糊的问题,我来解释一下。让我们具体一点,如下:一个表里面可以有多少行?一个表里面可以有多少列?一行数据可以有多大?一个单元格可以有多大?一个单元格的类型和其能存放的数据是怎么样的?什么是Innodb?什么是B+tree索引?mysql页大小是多少?什么是回表?...原创 2021-05-18 19:39:06 · 110 阅读 · 0 评论 -
mycli到底有多好用?
mysql自带的客户端能用,但是毫无用户体验可言。使用python编写mycli非常好用,下面简单说一下它好用的特性有哪些。我用的爽的功能关键词提醒自动补全历史语句记录高亮语法模糊匹配https://www.tecmint.com/mycli-mysql-client-with-auto-completion-syntax-highlighting/mycli使用什么连接数据库?使用pymysql进行连接mycli如何实现命令行参数解析使用了click库mycli如何实现语法高亮?原创 2021-05-17 22:33:43 · 319 阅读 · 0 评论 -
mycli一个非常有趣的bug
起因:我在使用mycli的过程中发现乱码了(在我工作的电脑上win10),我去搜索解决方案。发现了github上这个issue,非常有意思。https://github.com/dbcli/mycli/issues/592这个pull提供了一种解决方法。https://github.com/dbcli/mycli/pull/915igronus:提出乱码问题的人tsroten:mycli项目开发者seamile: mycli --charset= flag pull的开发者我mac上的原创 2021-05-17 21:55:03 · 304 阅读 · 0 评论 -
mysql账号相关的操作和安全管理
目录查看用户创建用户删除用户查看用户的访问权限授予访问权限移除访问权限grant revoke可以作用的层次grant和revoke可以操作的权限问题注意事项:并不是说你写下了一篇博客,你对某个知识点就掌握了,所以别沉迷于写博客,多去做一些其他有意义的事情。安全管理说白了就是访问控制,哪个用户拥有哪个资源的哪种权限。一个指导思想就是“最小权限原则”。给用户提供他们所需要的访问权,且仅提供他们所需要的访问权。查看用户select * from mysql.user创建用户create use原创 2021-04-09 21:12:27 · 141 阅读 · 0 评论 -
通过接口字段名称反向猜测数据库列名
例如通过接口抓包看到如下的json字段userName我们有理由相信这个字段在数据库中对应的列名是user_name在通过information_schema反向查找使用此column_name的表和数据库,从而进行数据库的定位。select * from information_schema.columns where column_name = 'user_name'当然了,这种方式奏不奏效的主要因素是开发人员有没有进行额外的处理。也就是说驼峰命名法和下划线命名法,这两种命名方式对应了相同的数原创 2021-03-31 18:16:43 · 172 阅读 · 0 评论 -
mysql数据库information_schema库中的表说明
过去我们常用命令show databasesshow tablesshow processlist其实这些都是来自于information_schema。当我开始了解information_schema的时候,我发现,原来这么多有趣的数据都被它保存了下来,熟悉此库对于理解mysql非常有帮助。information_schema中的表保存了各种数据库信息。我觉得这个库里面的表很有用。查看引擎information_schema.ENGINS 对应于 show engines;查看数据库i原创 2021-03-15 18:47:35 · 1378 阅读 · 0 评论 -
mysql开启profiling
profiling配合explain使用,真香啊。show variables like '%profiling%'set profiling=1show profilesshow profileshow profile直接查看上一条sql语句的开销信息原创 2021-03-13 09:30:30 · 440 阅读 · 0 评论 -
mysql innodb的索引基本入门
参考:https://www.yuque.com/yinjianwei/vyrvkf/ei2evb二分查找二叉树B+树空间换时间B+树所有的记录都存储在叶子节点上在数据库中,B+Tree 的高度一般都在2~4层,这也就是说查找某一键值的行记录时最多只需要2到4次 IO,2~4次的 IO 意味着查询时间只需0.02~0.04秒(假设 IOPS=100,当前 SSD 可以达到 50000IOPS)。IOPS(Input/Output Operations Per Second)是一个用于电脑存原创 2021-03-12 22:52:08 · 118 阅读 · 0 评论 -
mysql基本功能+show+innodb+索引+慢sql+explain
基本功能DMLDDLDCLshow语句show enginesshow databases;show tables;show statusshow processlist慢sql索引创建索引,删除索引的语法alter table table_name add index index_name (column_list) ;alter table table_name add unique (column_list) ;alter table table_name add p原创 2021-03-12 21:46:31 · 92 阅读 · 0 评论 -
事务处理与事务的隔离级别
事务处理通俗的理解就是要么全都做,要么都不做。事务关于事务处理需要知道的几个术语:事务transaction是指一组SQL语句回退rollback 是指撤销指定SQL的过程提交commit是指将未存储的SQL写入数据库的过程保留点savepoint是指事务处理中设置的临时占位符管理事务START TRANSACTION# SQL语句1# SQL语句2ROLLBACKSTART TRANSACTION# SQL语句1# SQL语句2COMMITSTART TRANSACTI原创 2021-01-30 10:02:28 · 138 阅读 · 0 评论 -
这个世界上不止有Mysql,还有很多ClickHouse们
本文主要介绍,什么是ClickHouse,如何使用ClickHouse。很早之前,听来峰的分享,他说虽然你们已经能够很熟练地使用SQL,但是SQL的能力被低估了。我不以为然,多年以后,我发现大部分技术都迭代过时的时候,SQL依然活跃着。ClickHouse是什么它是一个数据库。它是一个什么样的数据库?它是一个列式数据库管理系统。什么是列式数据库?面向列存储。为什么要面向列存储?ClickHouse的发展史2016年,由Yandex 开源的的一款数据库。ClickHouse的使用场景查原创 2021-01-29 23:07:44 · 145 阅读 · 0 评论 -
【db】mongodb的故事
看一看下面四个服务有什么相同点和区别?mysql,mongodb,redis,elasticsearch名字特点mysql关系型数据库 行和列redis缓存数据库,键值对elasticsearch可以做搜索引擎mongodb入门https://docs.mongodb.com/guides/安装客户端数据结构CURD...原创 2020-04-12 11:24:08 · 167 阅读 · 0 评论 -
【缓存】redis的基本使用
redis是什么Redis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes, Streams, HyperLo...原创 2020-04-12 10:02:22 · 129 阅读 · 0 评论 -
【缓存】Redis入门
redis命令命令行链接redisredis-cli -h localhost -p 6478 -a passwordkeys * 可以查看系统中所有的key值,在开发环境非常有用的命令select 0 可以用来切换数据库redis官方介绍https://redis.io/topics/data-types-intro当我真正的接触到了Redis的时候,我被它的速度...原创 2017-06-06 20:15:51 · 393 阅读 · 0 评论 -
sql使用逻辑控制语句
现实生活中有许多使用枚举的状态码,在一些查询SQL中其实是可以把这些枚举对应出来的。例如支付状态status 0, 1,2,3,4casewhen ‘条件1’ then ‘值1’when ‘条件2’ then ‘值2’else ‘值3’end例子:SELECT id, case when status =2 then '待使用'when status =3 then '已使...原创 2019-10-23 16:19:07 · 533 阅读 · 0 评论 -
mysql时间相关函数和操作
mysql时间操作是一个高频操作,我认为基于时间的操作的重要性不亚于统计函数。`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `modify_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP比如你想知道一天之中...原创 2019-09-26 22:16:50 · 231 阅读 · 0 评论 -
mysql查看数据库状态
很赞的文章:https://codeplayer.vip/p/j7sc4我真正关心的数据比如一秒钟到底能插入多少行数据?慢查询有多少?慢是一个相对概念,慢的绝对值时间是可以设置的,例如我设置long_query_time为10秒,那么但凡超过10秒的查询都可以认为是慢查询查询操作的超时时间mysql中系统变量什么意思?怎么查看系统变量?https://blog.csdn.net/...原创 2019-07-20 12:07:27 · 14977 阅读 · 0 评论 -
【mysql】显式加锁
常用的观察命令show processlistshow status like ‘innodb_row_lock%’;排他锁原理是:如果一个事务需要一条数据它就把数据锁住如果另一个事务也需要这条数据它就必须要等第一个事务释放这条数据这个锁叫排他锁。但是对一个仅仅读取数据的事务使用排他锁非常昂贵,因为这会迫使其它只需要读取相同数据的事务等待。因此就有了另一种锁,共享锁。共享锁是...原创 2019-05-19 14:16:45 · 1303 阅读 · 0 评论 -
mysql view在测试过程的应用
两个有依赖的系统,位于不同的库中,通过跨库连表形成一个虚拟表,从而方便我进行查询view视图要学习视图,我们可以尝试解答下面三个问题到底什么是视图?视图就是一个虚拟的表,甚至可以理解为一个select语句如何创建视图?如何删除视图?使用视图,可以简化数据操作,你想想正常情况下你要写left join才能把两个表连接起来,可是通过视图相当于访问封装好的函数,你说视图好不好用。视图是...原创 2019-04-30 00:33:25 · 232 阅读 · 0 评论 -
Mysql数据库小命令
前置条件:win7上安装了 5.1.71-community MySQL 问题:怎么远程访问一个数据库服务器? 问题:your mysql connection id is 9这是什么意思? 遇到问题:Access denied for user ”@’localhost’ to database 原因分析:用mysql匿名用户可以进入数据库,但是看不见 mysql数据库,使用mysq原创 2016-12-17 19:24:40 · 337 阅读 · 0 评论 -
SQL与各种数据库
学习资源http://www.w3school.com.cn/sql/sql_alter.asp 笛卡尔积的符号化为: A×B={(x,y)|x∈A∧y∈B}连接是从两个关系的笛卡尔积中选取属性见满足一定条件的元组。 条件为=的连接运算为等值连接。 自然连接:特殊的等值连接,把重复的属性列去掉 外连接:如果把神奇的元组也保存在结果关系中,而在其他属性上填null,那么这种连接是外连接 左原创 2016-09-05 22:12:39 · 432 阅读 · 0 评论 -
sql语句基础学习(不涉及多表查询)
初级学习资源 http://www.dofactory.com/sql/tutorialwhat is database? a database is a place to store data; what is 关系型数据库 a relation database system stores data in tables; what is SQL? SQL is Structured原创 2017-03-11 09:54:21 · 288 阅读 · 0 评论 -
自己搭建mysql服务要知道的二三事
如果是直接使用阿里云的mysql数据库,很简单,配置也是别人配好了的,但价格并不亲民,本文讲述自己搭建mysql服务要知道的一些事情。linux上安装cat /etc/system-releaseCentOS release 6.9 (Final)yum install mysql mysql-server mysql-librpm -aq|grep mysqlmysql-5.1.73...原创 2018-10-06 10:21:43 · 229 阅读 · 0 评论 -
mysql事务隔离级别
为什么会考虑到事务和隔离级别? 假如A,B两个事务,A向数据库中写入了数据,但是没有提交,那么在B事务中到底能不能看到A事务的修改呢?我以前一直困惑,最近终于理解了。B事务到底能不能看到A事务的修改是由数据库隔离级别决定的。SELECT @@tx_isolation 查看数据库的事务的隔离级别read uncommited 可以读取到未提交的修改read commited 读取...原创 2018-05-31 22:48:13 · 150 阅读 · 0 评论 -
mysql修改表结果
alter table table_name add column int(11);原创 2018-10-15 23:16:12 · 504 阅读 · 0 评论