首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

关系型数据库 MySQL 你不知道的 28 个小技巧

10、更新或者删除必须指定 WHERE子 句? 在前面章节中可以看到,所有的 UPDATE 和 DELETE 语句全都在 WHERE 子句中指定了条 件。...11、索引对数据库性能如此重要,应该如何使用它? 数据库选择正确的索引是一项复杂的任务。如果索引列较少,则需要的磁盘空间和维护开销 都较少。如果在一个大创建了多种组合索引,索引文件也会膨胀很快。...函数可以嵌入在 SQL 语句中使用,可以在 SELECT 语句中作为查询语句的一个部分调用;而存储过程一般是作为一个独立的部分来执行。 14、存储过程中的代码可以改变?...目前,MySQL 还不提供对已存在的存储过程代码的修改,如果必须要修改存储过程,必须使用 DROP 语句删除之后,再重新编写代码,或者创建一个新的存储过程。 15、存储过程中可以调用其他存储过程?...16、存储过程的参数不要与数据中的字段名相同。 在定义存储过程参数列表时,应注意把参数名与数据库中的字段名区别开来,否则将出 无法预期的结果。 17、存储过程的参数可以使用中文

1.7K40

数据库设计指南之我见

—chardove 这个是必须的,由于我在项目中基本采用PowerDesigner的概念模型-》逻辑模型-》物理模型的流程,所以在设计时不用考虑具体数据库的实现,也更容易的设计和处理对象的继承,多对多引用等...比方说,假设你的客户ID10位数长。那你应该 把数据库表字段的长度设为12或者13个字符长。这算浪费空间?...比方说, 通常在必须使用SQL LIKE表达式的情况下创建报表,因为 case number字段无法分解 year、serial number、case type和defendant...—rdelval 这个感觉是在做OLAP时,需要重新设计模型,分解OLTP模型中的字段,增加冗余字段,使得出报表的查询效率更高。 4....键设计4原则 · 关联字段创建外键。 · 所有的键都必须唯一。 · 避免使用复合键。 · 外键总是关联唯一的键字段。

40410
您找到你想要的搜索结果了吗?
是的
没有找到

Python自动化测试|如何解决前置模块及数据依赖(二)

侯建,感觉太麻烦了,有什么好的方法?...否则的话,只能通过接口来造前置条件的数据,来保证脚本的健壮性 上海—橙子探索测试 10:39:53 @天 嗯 目前是通过sql构建数据的 用完又清掉 所以导致每个用例都要重新构造 上海—橙子探索测试...你们在用docker 翡翠 10:43:59 在弄 翡翠 10:44:16 还没弄好 天 10:44:59 上海—橙子探索测试 @天 嗯 目前是通过sql构建数据的 用完又清掉 所以导致每个用例都要重新构造...@上海—橙子探索测试 你的sql会向服务器插入数据 天 10:46:34 之前就想过用docker来实现,先把数据添加到docker中的数据库中。...根据业务关系、之间关系封装构造前置sql和数据清理sql,再用例执行前进行前置功能数据构造调用和执行后进行测试数据清理还原,保证用例可重复执行 3、根据实际情况合理选取 由于只是针对提接口进行测试

1.2K10

告诉你 38 个 MySQL 数据库的小技巧!

中使用该引擎作为临时,存放查询的中间结果。...20 更新或者删除必须指定 WHERE 子句? 在前面章节中可以看到,所有的 UPDATE 和 DELETE 语句全都在 WHERE 子句中指定了条 件。...函数可以嵌入在 SQL 语句中使用,可以在 SELECT 语句中作为查询语句的一个部分调用;而存储过程一般是作为一个独立的部分来执行。 24 存储过程中的代码可以改变?...目前,MySQL 还不提供对已存在的存储过程代码的修改,如果必须要修改存储过程,必须使用 DROP 语句删除之后,再重新编写代码,或者创建一个新的存储过程。 25 存储过程中可以调用其他存储过程?...26 存储过程的参数不要与数据中的字段名相同 在定义存储过程参数列表时,应注意把参数名与数据库中的字段名区别开来,否则将出 无法预期的结果。

2.6K40

告诉你38个MySQL数据库的小技巧!

20、更新或者删除必须指定WHERE子句? 在前面章节中可以看到,所有的UPDATE和DELETE语句全都在WHERE子句中指定了条 件。...21、索引对数据库性能如此重要,应该如何使用它? 数据库选择正确的索引是一项复杂的任务。如果索引列较少,则需要的磁盘空间和维护开销 都较少。如果在一个大创建了多种组合索引,索引文件也会膨胀很快。...函数可以嵌入在SQL 语句中使用,可以在SELECT语句中作为查询语句的一个部分调用;而存储过程一般是作为一个独立的部分来执行。 24、存储过程中的代码可以改变?...目前,MySQL还不提供对已存在的存储过程代码的修改,如果必须要修改存储过程,必须使用DROP语句删除之后,再重新编写代码,或者创建一个新的存储过程。 25、存储过程中可以调用其他存储过程?...26、存储过程的参数不要与数据中的字段名相同。 在定义存储过程参数列表时,应注意把参数名与数据库中的字段名区别开来,否则将出 无法预期的结果。 27、存储过程的参数可以使用中文

2.6K10

MySQL数据库实用技巧

19、在WHERE子句中必须使用圆括号? 任何时候使用具有AND和OR操作符的WHERE子句,都应该使用圆括号明确操作顺序。...20、更新或者删除必须指定WHERE子句?   在前面章节中可以看到,所有的UPDATE和DELETE语句全都在WHERE子句中指定了条件。...函数可以嵌入在SQL 语句中使用,可以在SELECT语句中作为查询语句的一个部分调用;而存储过程一般是作为一个独立的部分来执行。 24、存储过程中的代码可以改变?   ...目前,MySQL还不提供对已存在的存储过程代码的修改,如果必须要修改存储过程,必须使用DROP语句删除之后,再重新编写代码,或者创建一个新的存储过程。 25、存储过程中可以调用其他存储过程?   ...26、存储过程的参数不要与数据中的字段名相同。   在定义存储过程参数列表时,应注意把参数名与数据库中的字段名区别开来,否则将出 无法预期的结果。 27、存储过程的参数可以使用中文

2.5K10

37 个 MySQL 数据库小技巧,不看别后悔!

19、在WHERE子句中必须使用圆括号? 任何时候使用具有AND和OR操作符的WHERE子句,都应该使用圆括号明确操作顺序。...20、更新或者删除必须指定WHERE子句? 在前面章节中可以看到,所有的UPDATE和DELETE语句全都在WHERE子句中指定了条 件。...函数可以嵌入在SQL 语句中使用,可以在SELECT语句中作为查询语句的一个部分调用;而存储过程一般是作为一个独立的部分来执行。 24、存储过程中的代码可以改变?...目前,MySQL还不提供对已存在的存储过程代码的修改,如果必须要修改存储过程,必须使用DROP语句删除之后,再重新编写代码,或者创建一个新的存储过程。 25、存储过程中可以调用其他存储过程?...26、存储过程的参数不要与数据中的字段名相同。 在定义存储过程参数列表时,应注意把参数名与数据库中的字段名区别开来,否则将出 无法预期的结果。 27、存储过程的参数可以使用中文

1.8K20

李晓慧: 如何利用MongoDB打造TOP榜小程序

感觉真的是很开心,因为这么近距离跟我已有的客户或者未来要成为的客户交流。...今天分享的主题内容大概是两部分,最主要的还是小游戏和小程序,第一部分就是跟大家分享下我们在网运营中服务小游戏以及爆款小游戏积累的经验。在网运维中我们做了一些改动,帮助爆款小游戏能够稳定运行。...,可能有些开发者说不需要,之前做的就是把所有的字段打包成一个字段塞进一个库就可以了。...以上是我们对MongoDB连接模型的优化。 4.png 第二个我们服务网很多小游戏时遇到的慢查询问题。...今天的分享差不多是这样。 Q&A: Q:老师,您好,您刚刚讲的关于监控数据,想问的是关于小程序会让用户看到日志以及监控数据?你们有提供报警机制

934100

如何利用MongoDB打造TOP榜小程序

感觉真的是很开心,因为这么近距离跟我已有的客户或者未来要成为的客户交流。...今天分享的主题内容大概是两部分,最主要的还是小游戏和小程序,第一部分就是跟大家分享下我们在网运营中服务小游戏以及爆款小游戏积累的经验。在网运维中我们做了一些改动,帮助爆款小游戏能够稳定运行。...,可能有些开发者说不需要,之前做的就是把所有的字段打包成一个字段塞进一个库就可以了。...以上是我们对MongoDB连接模型的优化。 第二个我们服务网很多小游戏时遇到的慢查询问题。...更多数据库前沿技术可关注 我们公众号:腾讯云数据库CDB 腾讯云数据库公众号文章版.jpg Q&A: Q:老师,您好,您刚刚讲的关于监控数据,想问的是关于小程序会让用户看到日志以及监控数据

88660

在Entity Framework中使用存储过程(四):如何为Delete存储过程参数赋上Current值?

目录 一、EF存储过程参数赋值的版本策略 二、Delete存储参数就一定是Original值? 三、如果直接修改.edmx模型的XML呢?...反映在VS的.edmx模型设计器上就是:只有Update存储过程的参数映射才具有“Use Original Value”这个复选框。 ? 二、Delete存储参数队应的就一定是Original值?...但是,我们忽略掉一点:Delete存储过程一定非得执行删除操作?如果进行“逻辑删除”,实际上进行的是Update操作。关于逻辑删除的实现,可以参阅上一篇文章《逻辑删除的实现与自增长列值返回》。...这是一个很常见的需求,为此我们可以直接在T_CONTACT的数据中添加一个新的字段:LAST_UPDATED_BY,创建的DDL定义如下: 1: CREATE TABLE [T_CONTACT...三、如果直接修改.edmx模型的XML呢? 由于Delete过程只能接受实体的映射属性的初始值作为参数,导致我们无法指定一个新的值作为参数。

1.7K100

腾讯云数据库TDSQL精英挑战赛Q&A(实时更新)

A:有的。 Q:请问下评测环境的TDSQL是什么规格? A:请认真看赛题,赛题中已有详细说明。目的实例TDSQL分布式实例,版本8.0,2个分片,单个规格2C4G实例,容量100G。...Q:话说真的必须有主键?昨晚测试环境sql未处理直接建的,然后每个都批量查过数据,但是没有异常。 A:请以题目中的说明为准,题目未说明的不建议做主观的假定。..."保证数据安全,目前暂只提供内网地址,地址有效期15分钟,过期后请刷新页面重新获取,VPC网络地址请在VPC网络进行访问"这个日志要怎么才能访问啊?另外TDSQL所在服务器可以ssh登录上去?...(有点疑惑,看Intel的手册programming persistent memory里只写了作为heap使用需要10以上,也许不作为heap 1.8就ok了) A:java只有1.8,pmem是决赛才用...Q:提供的结构里不是tdsql的创建语句,所以没有shardkey,创建tdsql时制定shardkey还算一致么? A:分布式数据库引起的差异不在校验范围之内。

3.8K320

.NET Core实战项目之CMS 第十一章 开发篇-数据库生成及实体代码生成器开发

上篇文章已经说了,如果你愿意,完全可以把所有的层融合在一起,随意合并分离这个依你个人喜好。 也是本着简单原则以及合适原则的思想来进行那样的分层结构,觉得这样层次更分明些。...这里你可以检查下,看看生成的数据库有没有问题,如果有问题的话,重新走一遍流程生成脚本然后执行下就行了,不过需要注意的是,如果你数据库中有数据就要当心了,重新生成的脚本会drop掉你的重新创建,所以如果是个别字段出问题的话就逻辑模型以及物理模型修改后...实体模型生成器编写 好了,上面已经带着你一步一步的演示了数据库创建过程,下面就带着你实现一个简单的POCO实体对象的代码生成器吧!什么?市面上不是有很多代码生成器?...是不是首先得获取下数据库里面的所有的,然后获取这些对应的列以及列的类型,是否空等等信息。然后再建一个模板,循环这些的信息来根据模板创建对应的文件呢。...//这个也必须 options.Author = "yilezhu";//作者名称,随你,不写空 options.OutputPath

75440

系统架构设计之道,论如何构建一个资金账户系统

如果从支付这块业务来看的话,账户是支付机构内部其服务对象(用户、商户、银行等)创建的物理记录,这些记录包含了对象的关键信息,如机构对象分配的唯一 ID、对象的余额、交易的流水、账户状态等等。...那有人可能会问,那么充值、退款、提的流水呢,他们也会有两笔流水?答案是肯定的。它会对应着一笔负债类账户的流水和一笔资产类账户(银行账户)的流水,且两者借贷方向一致(同时加钱或者同时减钱)。...对于账户系统而言,最重要的当属于账户的数据,需要在插入和更新时对其重要字段合并起来使用 hmac-sha256 进行 MAC 值计算,并将计算结果作为一个字段(如data_mac,保证对新老数据的兼容...包括以下几点: 严格的网机器和数据库权限管控。双人代码 CR。完整的单元测试和接口测试覆盖。只能通过发布系统执行发布。 严格的网机器和数据库权限管控。 双人代码 CR。...而 TDSQL 作为一个高可用的分布式数据库,对于可用性的优势也体现在以下这些方面: 高性能。这样才能承受高并发的请求流量。数据强一致。保证切换不同副本的情况下数据0丢失0出错。支持透明分库分

2.2K30

程序员的30大Mybatis面试问题及答案

18.当实体属性名和中字段不一致,怎么办? 19.嵌套查询用什么标签? 20.like模糊查询怎么写? 21.Mybatis支持枚举?...Hibernate建立在POJO和数据库模型的直接映射关系上。通过xml或注解即可和数据库做映射。通过pojo直接可以操作数据库的数据。它提供的是全的映射模型。...全映射带来的不便,比如更新需要发送所有的字段。 无法根据不同的条件组装不同的sql。 对多表关联和复杂的sql查询支持较差,需要自己写sql,返回后,需要自己将数据组成pojo。...11.Mybatis支持注解?优点?缺点? 支持。 优点:对于需求简单sql逻辑简单的系统,效率较高。 缺点: 当sql变化需要重新编译代码,sql复杂时,写起来更不方便,不好维护。...column:列名(或别名),将主查询中列的结果作为嵌套查询的 参数,配置 方式如 column={propl=coll , prop2=col2}, propl 和 prop2 将作为嵌套查询的参数。

23620

从AdventureWorks学习数据库建模——国际化

数字的字符串问题在于有的使用逗号作为千分符,而有的国家是使用顿号作为千分符,有的用户又不使用千分符。 金额的话有的输入前面会带货币符号,有的又不带。...回过头来看AdventureWorks数据库模型,他对数据类型的使用都很准确,不存在乱用varchar类型的问题。 币种和汇率  如果在某个表单中涉及到多个币种问题,那么必须将币种属性添加到表单中。...所以我们必须将时区作为一个日期的部分,考虑到数据库模型中。...数据库函数:SYSDATETIMEOFFSET ( ) 如果我们使用的数据库没有DateTimeOffSet这种数据类型,那么也可以将来DateTime和Timezone两个字段来存储时间和时区。...如果我们的系统记录数据库服务器的时间订单创建的时间,那么在凌晨1:59创建了一个订单,然后一分钟后由于夏令时时间调整,接下来下的订单就变成了1:00创建的了,这个时候如果我们按创建订单的时间进行排序就会有问题

76420

学习 MySQL 需要知道的 28 个小技巧

10、更新或者删除必须指定 WHERE子 句? 个人建议所有的 UPDATE 和 DELETE 语句全都在 WHERE 子句中指定条件。...11、索引对数据库性能如此重要,应该如何使用它? 索引的优点: 通过创建唯一索引可以保证数据库中每一行数据的唯一性。 可以给所有的 MySQL 列类型设置索引。...目前,MySQL 还不提供对已存在的存储过程代码的修改,如果必须要修改存储过程,必须使用 DROP 语句删除之后,再重新编写代码,或者创建一个新的存储过程。...16、存储过程的参数不要与数据中的字段名相同。 在定义存储过程参数列表时,应注意把参数名与数据库中的字段名区别开来,否则将出 无法预期的结果。 17、存储过程的参数可以使用中文?...备份时必须确保没有使用这些。如果在复制一个的同时服务器正在修改它,则复制无效。备份 文件时,最好关闭服务器,然后重新启动服务器。 24、平时应该打开哪些日志?

1.1K20

阿里面试官:Redis不仅仅是做缓存的?回去再看看吧!

因为作为缓存,Redis获得了非常高的人气。有一些缓存加载器库在使用Redis作为应用程序和数据库之间的缓存层。 以Redisson地图加载器例: 因此,使用分布式缓存可以极大的提高性能。...数据被复制到数据库和缓存中,我们必须保持它们的数据同步。代码应该管理整个缓存策略,控制缓存失效,重新填充缓存,都是为了保持数据的一致性。我们实现了更高的性能和可伸缩性,但引入了高风险的复杂性。...考虑到你的缓存策略,你不得不构建一些复杂的代码在Redis和数据库间进行数据发送。不要误解的意思,有时候你必须这么做。就像之前提到的,关系型数据库有它的优点,我们不能把它扔掉。...但是我们必须每次都这么做?如果不同数据间不需要非常复杂的关系,而只存储一个键映射就足够了呢?我们是不是可以不用关系型数据库了?...如果你不需要一些相关系数据和高存储的SQL属性,为什么你要在应用程序中创建一个复杂的三层系统?Redis作为缓存和还是数据库?在这些情况下,你可以只使用Redis作为主要的持久层。

37310

学习 MySQL 需要知道的 28 个小技巧

10、更新或者删除必须指定 WHERE子 句? 个人建议所有的 UPDATE 和 DELETE 语句全都在 WHERE 子句中指定条件。...11、索引对数据库性能如此重要,应该如何使用它? 索引的优点: 通过创建唯一索引可以保证数据库中每一行数据的唯一性。 可以给所有的 MySQL 列类型设置索引。...目前,MySQL 还不提供对已存在的存储过程代码的修改,如果必须要修改存储过程,必须使用 DROP 语句删除之后,再重新编写代码,或者创建一个新的存储过程。...16、存储过程的参数不要与数据中的字段名相同。 在定义存储过程参数列表时,应注意把参数名与数据库中的字段名区别开来,否则将出 无法预期的结果。 17、存储过程的参数可以使用中文?...备份时必须确保没有使用这些。如果在复制一个的同时服务器正在修改它,则复制无效。备份 文件时,最好关闭服务器,然后重新启动服务器。 24、平时应该打开哪些日志?

98740

【万字长文】论如何构建一个资金账户系统 | 技术创作特训营第一期

如果从支付这块业务来看的话,账户是支付机构内部其服务对象(用户、商户、银行等)创建的物理记录,这些记录包含了对象的关键信息,如机构对象分配的唯一ID、对象的余额、交易的流水、账户状态等等。...那有人可能会问,那么充值、退款、提的流水呢,他们也会有两笔流水?答案是肯定的。它会对应着一笔负债类账户的流水和一笔资产类账户(银行账户)的流水,且两者借贷方向一致(同时加钱或者同时减钱)。...对于账户系统而言,最重要的当属于账户的数据,需要在插入和更新时对其重要字段合并起来使用hmac-sha256进行MAC值计算,并将计算结果作为一个字段(如data_mac,保证对新老数据的兼容,通常还有一个...确定使用数据库的单机事务实现,又有两种解决方案:悲观锁方案:创建资金流的时候,每次查询账户时,对该账户加排他锁。...而TDSQL作为一个高可用的分布式数据库,对于可用性的优势也体现在以下这些方面:高性能。这样才能承受高并发的请求流量。数据强一致。保证切换不同副本的情况下数据0丢失0出错。支持透明分库分

3.8K412

干货视频|Zabbix5.0升级最佳实践以及常见问题排查

但在实际环境中,你必须小心,当然理想情况下,首先要在测试环境中执行此操作。另外一种情况下,如果连这个for loop循环都不够用,我会怎么做呢?将源0的事件触发,复制到新中。...因此,新的事件仅包含源0的事件,这里的问题是你必须删除并重新创建所有约束,引用其他上的事件。...所以我们需要在新重新创建约束,这里有一些示例查询,是如何重新创建它们的一些示例语句。请注意,事件没有任何更改,如果你是从4.0升级到5.0,那么根本不需要担心这一点。...还有一个相当普遍的做法,就是创建临时历史。本质上是创建空的历史,对这些空执行升级,它们的pattern会稍有改变。然后重新插入旧数据。这样,你可以尽快启动并运行Zabbix实例。...我们甚至有一些使用SQLite3的proxy,这个可能就没有那么简单,因为我们必须删除单个文件,虽然这有点耗时,但仍然不算复杂。我们删除SQLite的数据库文件,重新启动proxies,一切都正常。

75020
领券