
数据库
文章平均质量分 52
Andy_Zheng.
这个作者很懒,什么都没留下…
展开
-
Mysql常用SQL集锦
1.MySQL查询当前数据库中所有记录不为空的表select TABLE_NAME from information_schema.tables where TABLE_SCHEMA='数据库名称' and table_rows>0;原创 2022-02-24 08:43:19 · 624 阅读 · 0 评论 -
数据库设计、调优
目录1 什么是数据库设计2 为什么要进行数据库设计2.1 数据库设计的步骤2.1.1 需求分析2.1.2 逻辑设计2.1.3 物理设计2.1.4 维护优化3.数据库设计遵循的三大范式3.1第一范式(确保每列保持原子性)3.2第二范式(确保表中的每列都和主键相关)3.3 第三范式(确保每列都和主键列直接相关,而不是间接相关)4.数据库优化原则4.1 总体优化原则4.2 字段类优化原则4.3 索引类优化原则4.4 SQL类优化原则1 什么是..原创 2022-02-10 07:50:41 · 817 阅读 · 0 评论 -
mysql存储过程初始化数据-多字段
CREATE DEFINER=`zassj`@`%` PROCEDURE `newOrgTableInit`()BEGIN DECLARE originTableName VARCHAR(50); DECLARE targetTableName VARCHAR(50); DECLARE flag int(1) DEFAULT 0; DECLARE w_count int(10) DEFAULT 0; DECLARE w_index int(10) DEFAULT 0; DECLARE cur.原创 2021-07-01 14:21:49 · 316 阅读 · 0 评论 -
什么是E-R图
E-R图,也称为实体关系图,用于显示实体集之间的关系。它提供了一种表示实体类型、属性和连接的方法;用来描述现实世界的概念模型。ER模型是数据库的设计或蓝图,将来可以作为数据库来实现。在E-R图中,实体集是一组相似的实体(数据模型中的数据对象),它们可以有属性。在数据库系统中,实体是数据库中的表或属性,因此ER图通过显示表和它们的属性之间的关系来显示数据库的完整逻辑结构。[视频教程推荐:MySQL教程]电子病历图的组成:1.实体实体表示数据模型中的数据对象或组件。例如,人、学生和音乐都原创 2021-05-20 17:26:45 · 144185 阅读 · 2 评论 -
mysql使用全文索引实现大字段的模糊查询
0.场景说明centos7 mysql5.7 InnoDB引擎0.1创建表DROP TABLE IF EXISTS `tbl_article_content`;CREATE TABLE `tbl_article_content` (`id` bigint(40) NOT NULL AUTO_INCREMENT,`content` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,`article_id` bigint(40) NOT原创 2021-04-08 23:10:18 · 937 阅读 · 0 评论 -
MYSQL系统学习(五)——explain关键字
测试SQL:explain select count(1) from cms_workflow wf where wf.org_id = '149300c4126dc809ee3f7839f4ec03c1' AND EXISTS ( select 1 from cms_workflow a left join cms_workflow原创 2021-02-24 16:56:43 · 137 阅读 · 0 评论 -
mysql 索引过长1071-max key length is 767 byte
问题 给项目表中的某个字段加索引加不上,报错Specified key was too long; max key length is 767 bytes原因数据库表采用utf8编码,其中varchar(255)的column进行了唯一键索引而mysql默认情况下单个列的索引不能超过767位(不同版本可能存在差异)于是utf8字符编码下,255*3 byte 超过限制解决1 使用innodb引擎;2 启用innodb_large_prefix选项,将约...原创 2020-10-23 18:36:27 · 282 阅读 · 0 评论 -
Mysql用法——insert select
INSERT INTO cms_modular SELECT REPLACE (uuid(), '-', '') AS id, tb.modular_name, tb.modular_type, now() AS crttime, now() AS lmdtime, '940b22e174d04eef8b4500e5ddc6350c' AS crt_uid, '940b22e174d04eef8b4500e5ddc6350c' AS lmd_uid, 0 AS is_del, tb.u.原创 2020-09-07 19:14:18 · 497 阅读 · 0 评论 -
由Seata看分布式事务取舍
微服务兴起这几年涌现出不少分布式事务框架,比如ByteTCC、TCC-transaction、EasyTransaction以及最近很火爆的Seata。最近刚看了Seata的源码(v0.5.2),借机记录一下自己对分布式事务的一些理解。(3年前这类框架还没成熟,项目需要自己也写过一个柔性事务框架)本文分五部分,首先明确分布式事务概念的演变,然后简单说下为什么大家不用XA,第三部分阐述两阶段提交的提升,第四部分介绍Seata的架构的亮点与问题,第五部分谈下分布式事务的取舍。 限于篇幅一些网上可搜索的细节本转载 2020-09-07 14:15:51 · 450 阅读 · 0 评论 -
MYSQL系统学习(四)——事务隔离级别
MySQL的四种事务隔离级别本文实验的测试环境:Windows 10+cmd+MySQL5.6.36+InnoDB一、事务的基本要素(ACID) 1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。 2、一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏.转载 2020-06-24 16:20:18 · 182 阅读 · 0 评论 -
Mysql存储过程实践——用户常用模块表初始化数据
需求描述:为所有在职用户添加常用模块初始化数据需求分析:1、首先是主键ID可以直接用mysql自带的函数生成UUID,2、机构ID是固定的,是为某一个机构初始数据3、用户ID是查询用户表,筛选在职的用户4、模块指定"考勤","工作总结","工作计划","请假","日志"5个常用模块,赋值为这5个模块各自 的ID即可存储过程实现:CREATE DEFINER=`root...原创 2020-02-27 11:04:22 · 429 阅读 · 0 评论 -
Mysql存储过程语法
MySQL 5.0 版本开始支持存储过程。存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。优点存储过程可封装,并隐藏...原创 2020-02-27 10:59:17 · 611 阅读 · 0 评论 -
mysql linux下导入sql文件
1.上传脚本文件到linux这里是把database.sql放到/tmp/下2.登录mysql>mysql -u root -p>password:3.导入脚本mysql>use yourdatabasename;mysql>set names utf8;mysql>source /tmp/database.sql;然后屏幕上就会不断的滚原创 2017-08-11 14:09:15 · 332 阅读 · 0 评论 -
mysql 5.7.24 安装配置方法图文教程
这篇文章主要为大家详细介绍了mysql 5.7.24 安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下MySQL 是最流行的关系型数据库管理系统,在WEB应用方面 MySQL 是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。一、MySQL安装包下载打开网站去下载MyS...原创 2019-02-22 10:14:59 · 1152 阅读 · 0 评论 -
lower_case_table_names区分大小写设置
1、参数含义:lower_case_table_names: 此参数不可以动态修改,必须重启数据库lower_case_table_names = 1 表名存储在磁盘是小写的,但是比较的时候是不区分大小写lower_case_table_names=0 表名存储为给定的大小和比较是区分大小写的lower_case_table_names=2, 表名存储为给定的大小写但是比较的时候是小...转载 2019-03-05 08:12:44 · 37337 阅读 · 0 评论 -
数据库设计:表的设计命名的十个注意点
1.表名一般以【模块名称_具体表名】来实现,同一个模块的前缀是一样的。(Oracle大小写敏感,在SQL中可以不用"_",因为可以用大小写一起的写法。这也是可以的)2.表名称不应该取得太长(一般不超过三个英文单词,不推荐使用中文拼音,总的长度不要超过30个字符)。表名使用英文的原因,有些项目有英文版的需要,或者这个项目是给外国做的时候,使用英文是基本的要求,应该说这是一个习惯问题,多学一点英文...转载 2019-02-20 14:13:57 · 963 阅读 · 0 评论 -
数据库开发规范
1、超过三个表禁止join。需要join的字段,数据类型必须绝对一致;多表关联查询时,保证被关联的字段需要有索引。说明:即使双表join也要注意表索引、SQL性能2、字段允许适当冗余,以提高查询性能,但必须考虑数据一致。冗余字段应遵循:1)不是频繁修改的字段。2)不是varchar超长字段,更不能是text字段3、单表行数超过500万行或者单表容量超过2GB,才推荐进...原创 2019-05-07 08:26:51 · 274 阅读 · 0 评论 -
Mysql索引使用说明
说到索引,很多人都知道“索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址,在数据十分庞大的时候,索引可以大大加快查询的速度,这是因为使用索引后可以不用扫描全表来定位某行的数据,而是先通过索引表找到该行数据对应的物理地址然后访问相应的数据。”但是索引是怎么实现的呢?因为索引并不是关系模型的组成部分,因此不同的DBMS有不同的实现,我们针对MySQL数据库的实现进...转载 2019-06-19 16:01:35 · 357 阅读 · 0 评论 -
深入理解MySQL索引原理和实现——为什么索引可以加速查询?
说到索引,很多人都知道“索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址,在数据十分庞大的时候,索引可以大大加快查询的速度,这是因为使用索引后可以不用扫描全表来定位某行的数据,而是先通过索引表找到该行数据对应的物理地址然后访问相应的数据。”但是索引是怎么实现的呢?因为索引并不是关系模型的组成部分,因此不同的DBMS有不同的实现,我们针对MySQL数据库的实现进...转载 2019-07-06 08:59:15 · 274 阅读 · 0 评论 -
MYSQL系统学习(一)——基础篇
1、Mysql配置文件MySQL如何安装、如何配置自启动,这里不进行讲述,可自行搜索相关安装教程进行处理。这里主要介绍MySQL的主要配置文件。①二进制日志log-bin:用于主从复制。②错误日志log-error:默认关闭,记录严重的警告和错误信息,每次启动和关闭的详细信息等。③查询日志show-log:默认关闭,记录查询的sql语句,如果开启会降低mysql的整体性能,因为记录...原创 2019-08-23 15:04:54 · 673 阅读 · 0 评论 -
MYSQL系统学习(二)——关联查询
在使用数据库查询语句时,单表的查询有时候不能满足项目的业务需求,在项目开发过程中,有很多需求都是要涉及到多表的连接查询,总结一下mysql中的多表关联查询一 、内连接查询是指所有查询出的结果都是能够在连接的表中有对应记录的。以t_employee(员工表)和t_dept(部门表)为例:t_employee表中的记录如下:dept代表该员工所在的部门t_dept表中记录如下:...原创 2019-08-23 15:14:35 · 249 阅读 · 0 评论 -
MYSQL系统学习(三)——索引
本文将围绕着索引是什么,什么情况下用,怎么用来阐述实际开发中索引的作用1、索引是什么MySQL官方对索引的定义:索引(Index)是帮助MySQL高效获取数据的数据结构。因此索引的本质就是数据结构。索引的目的在于提高查询效率,可类比字典、书籍的目录等这种形式。可简单理解为“排好序的快速查找数据结构”。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式指向数...原创 2019-08-23 15:38:15 · 177 阅读 · 0 评论 -
视图及临时表的使用场景
什么时候使用视图呢?应用场景1:保密工作,比如有一个员工工资表,如果你只希望财务看到员工工资这个字段,而其他人不能看到工资字段,那就用一个视图,把工资这个敏感字段过滤掉应用场景2:有一个查询语句非常复杂,大概有100行这么多,有时还想把这个巨大无比的select语句和其他表关联起来得到结果,写太多很麻烦,可以用一个视图来代替这100行的select语句,充当一个变量角色什么时候用临时表...转载 2019-01-18 08:34:19 · 832 阅读 · 0 评论 -
数据库设计原则
1. 原始单据与实体之间的关系 可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体。 在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个实体,或多张原始单证对应一个实体。 这里的实体可以理解为基本表。明确这种对应关系后,对我们设计录入界面大有好处。 〖例1〗:一份员工履历资料,在人力资源信息系统中,就对应三个...转载 2018-11-26 14:53:27 · 276 阅读 · 0 评论 -
MySQL 中 delete 语句的子查询限制
场景一delete from student where id = (select max(id) from student);[Err] 1093 - You can't specify target table 'student' for update in FROM clause描述: 如果子查询的 from 子句和更新、删除对象使用同一张表,会出现上述错误。解转载 2017-11-01 20:00:10 · 931 阅读 · 0 评论 -
ORA-01555 快照过久说明
ORA-01555 快照过旧,是数据库中很常见的一个错误,比如当我们的事务需要使用undo来构建CR块的时候,而此时对应的undo 已经不存在了, 这个时候就会报ORA-01555的错误。 有关CR 块,参考我的Blog: CR (consistent read) blocks create 说明转载 2017-11-09 16:55:40 · 1636 阅读 · 0 评论 -
oracle数据库表空间 追加数据库文件
1、查看表空间的使用情况select b.file_id 文件ID号, b.tablespace_name 表空间名, b.bytes/1024/1024||'M'字节数, (b.bytes-sum(nvl(a.bytes,0)))/1024/1024||'M' 已使用, sum(nvl(a.bytes,0))/1024/1024||'M' 剩余空间, 10原创 2017-09-20 15:38:25 · 602 阅读 · 0 评论 -
mysql5.7 修改root密码无法登陆原因
升级的mysql5.7修改完root账户密码后仍然无法登陆,查阅资料可能和user表的plugin 字段为空有关。1、首先将my.ini中加入在[mysqld]节点上加skip-grant-tables主要作用是:跳过表中的验证,可以无密码登陆。2、登录之后查询plugin字段值:mysql> select plugin from user where user = 'ro原创 2017-08-06 10:03:48 · 8787 阅读 · 2 评论 -
mysql出现ERROR 1819 (HY000)的解决方法
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements,出现这个问题怎么办?不用着急,下面给出答案。为了加强安全性,MySQL5.7为root用户随机生成了一个密码,在error log中,关于error log的位置,如果安装的是RPM包,则默认是/var/log/mysqld.lo原创 2017-08-11 14:15:58 · 34297 阅读 · 6 评论 -
提高SQL查询效率
我们要做到不但会写SQL,还要做到写出性能优良的SQL语句。(1)选择最有效率的表名顺序(只在基于规则的优化器中有效): Oracle的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择转载 2017-07-26 16:16:14 · 414 阅读 · 1 评论 -
SQL性能优化的10条经验
1.查询的模糊匹配尽量避免在一个复杂查询里面使用 LIKE '%parm1%'—— 红色标识位置的百分号会导致相关列的索引无法使用,最好不要用.解决办法:其实只需要对该脚本略做改进,查询速度便会提高近百倍。改进方法如下:a、修改前台程序——把查询条件的供应商名称一栏由原来的文本输入改为下拉列表,用户模糊输入供应商名称时,直接在前台就帮忙定位到具体的供应商,这样在调用后台程序时,这列转载 2017-07-26 16:02:34 · 210 阅读 · 0 评论 -
mysql 查询表死锁
1、查询是否锁表show OPEN TABLES where In_use > 0; 2、查询进程 showprocesslist 查询到相对应的进程===然后kill id 补充:查看正在锁的事务SELECT * FROMINFORMATION_SCHEMA.INNODB_LOCKS; 查看等待锁的事务SELECT * FROMIN原创 2017-08-09 18:25:46 · 238 阅读 · 0 评论 -
Oracle密码过期the password has expired
Oracle 出现the password has expired这个问题,今天突然发现项目访问不了,一查发现用不了,也登不进去,这个问题由是Oracle 11g密码过期的原因导致的。调试Web项目的时候出现异常:java.sql.SQLException: ORA-28001: the password has expired 网上查了一下,连接Oracle,以Oracle转载 2017-08-02 17:55:02 · 482 阅读 · 0 评论 -
ORA-02292 外键关联,无法删除记录
经常我们在删除DB记录时,会为外键关联而无法删除数据感到苦恼。这里个人经常用到的一个方法就是,先让关联主键失效,然后再删除数据,数据删除完成后,再让其主键生效,这样很好的解决了删除级联数据难的问题。第一步:让主键失效:alter table table_name disable primary keycascade;第二步:删除数据:delete table_name;第三步:转载 2017-12-11 16:33:10 · 621 阅读 · 0 评论 -
oracle导入提示“IMP-00010:不是有效的导出文件,头部验证失败”的解决方案
这是由于导出的dmp文件与导入的数据库的版本不同造成的用Notepad++查看了dmp文件,在头部具修改成你将导入目标数据库的版本号以下对应的版本号: 11g R2:V11.02.00 11g R1:V11.01.00 10g:V10.02.01解决步骤:1、查看dmp文件的版本号2、查询导入oracle数据库的版本号 通过转载 2017-12-08 10:09:36 · 4049 阅读 · 0 评论 -
oracle 逗号分隔查询 对含逗号或特定符号的查询
使用like时要注意空条件的情况,请尽量使用以下语句:--逗号字段查询SELECT T.*, T.ROWID FROM T_TEST T WHERE REGEXP_LIKE(','||T.TEST||',', ',1,');SELECT T.*, T.ROWID FROM T_TEST T WHERE instr(T.TEST||',','1,')>0--使用like时要注原创 2017-12-26 13:13:33 · 8505 阅读 · 0 评论 -
Mysql数据库设计规范和设计原则
一、MYSQL数据库设计规范 1、数据库命名规范 采用26个英文字母(区分大小写)和0-9的自然数(经常不需要)加上下划线'_'组成; 命名简洁明确(长度不能超过30个字符); 例如:user, stat, log, 也可以wifi_user, wifi_stat, wifi_log给数据库加个前缀; 除非是备份数据库可以...转载 2018-11-26 14:48:53 · 264 阅读 · 0 评论 -
架构核心的核心-数据库设计原则(金融行业)
在IT领域,无论是传统IT还是互联网,或是未来的区块链,数据结构设计都是重中之重。我们读书的时候就知道,程序 = 数据结构 + 算法,而数据结构是在前面,也就表示了要先有米,才能煮饭。一个好的数据结构设计或者说数据库设计,不仅能应对复杂的业务变化,更可以应对未来海量的数据扩容,同时数据结构逻辑清晰更方便业务人员去使用数据,而对开发人员来说,看到好的数据库设计,就像欣赏到了一个芳龄美女出浴,吃了一...转载 2018-10-13 16:07:45 · 576 阅读 · 0 评论 -
MySQL中concat()、concat_ws()、group_concat()函数的使用及区别
说明:本文中使用的例子均在下面的数据库表tt2下执行: 一、concat()函数1、功能:将多个字符串连接成一个字符串。2、语法:concat(str1, str2,...)返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。3、举例:例1:select concat (id, name, score) as info from t...转载 2018-09-18 10:16:29 · 4039 阅读 · 0 评论 -
千万数据的分库分表(一)
单表数据量达到1000W以后,就要拆了.背景情况用户表达到了 几千万级别,在做很多操作都比较吃力,.所以,考虑对其进行分表.常用的切分方案数据的切分(Sharding)根据其切分规则的类型,可以分为两种切分模式。一种是按照不同的表(或者Schema)来切分到不同的数据库(主机)之上,这种切可以称之为数据的垂直(纵向)切分;另外一种则是根据表中的数据的逻辑关系,将同一个表中的数据按照...转载 2018-07-26 16:10:43 · 330 阅读 · 0 评论