目录 场景 任务(需求) 行动(解决方案) 方案1:从代码层面解决(正确方案) 方案2:设置成两个唯一索引(正确方案) 方案3:删掉中间表,把从表的主键作为主表的外键,并将外键设置成唯一索引(正确方案) 方案4:设置成一个复合唯一索引(错误方案) 结果 总结 参考 场景 我mysql里有3个表 1.车辆信息表carInfo 字段为: carID,主键 2.终端信息表terminalID 字段为: terminalID,主键 3.车辆与终端的中间表car_bind_terminal carID,外…
之前,我在做统计数据时,需要一个字段显示某月的订单数量和订单金额,要求组合成一个字段,用括号组合. 统计出来的结果大概是这样的,首先我们来创建一些模拟数据 ---创建订单表--- create table OmsOrder( Uid ,) primary key, OrganizeName varchar() not null, OrderCount int not null, OrderMoney float not null ) --添加模拟数据--- insert into OmsOrde…
有时候我们会遇到这样的一种情况:有一些不同的专业,每个专业中有一些不同的学号,专业+学号能对应到个人.这时,应该如何在数据库中定义列,来保证专业+学号对应的学生的唯一性呢? 把学号定义成唯一(UNIQUE)显然是行不通的,因为A专业和B专业都存在1000这样一个学号. 方法1:联合主键 PRIMARY KEY(major,id); 不推荐.因为联合主键会给表的维护带来不便.另外,可能已经设定好了主键. 方法2:建立联合唯一约束(联合唯一索引)(推荐) 联合唯一约束:(创建唯一性约束时会自动创建唯…
前后台没有分开,为了区分前后台用户,所以分表,但是ID不能重复,因为关联了权限表. 这里实现后台用户表使用奇数ID 前台用户表使用偶数ID MYSQL 没有sequence SET @@auto_increment_offsetSET @@auto_increment_increment 也只能在当前查询有效.所以这也是权宜之计 ; -- ---------------------------- -- Table structure for acl_user -- ---------------…
[本文出自:https://www.jb51.net/article/150323.htm] 这篇文章主要介绍了如何使用MySQL一个表中的字段更新另一个表中字段,需要的朋友可以参考下 1,修改1列 ? 1 2 3 update student s, city c set s.city_name = c.name where s.city_code = c.code; 2,修改多个列 ? 1 2 3 update a, b set a.title=b.title, a.name=b.name w…
oracle中,如何将两个字段数据合并成一个字段显示,接下来看一下在sql server和pl/sql的区别 sql server中如何合并(用Cast()函数) --1.创建模拟的数据表--- create table GoodsCate( Mid int not null, Code ) not null, Name ) not null, ) --2.添加模拟数据-- ,','电子仪器') ,','激光仪器') ,','扫描仪器') --3.未合并的结果-- select * from G…
工作中,发现数据库表中有许多重复的数据,而这个时候老板需要统计表中有多少条数据时(不包含重复数据),只想说一句MMP,库中好几十万数据,肿么办,无奈只能自己在网上找语句,最终成功解救,下面是我一个实验,很好理解. ------------------------------------------------------------------------------------------------------------------------ 假设有一张人员信息表cs(姓名,证件号,地址…
MySQL的使用用法如下所示:格式:if(Condition,A,B)意义:当Condition为true时,返回A:当Condition为false时,返回B.作用:作为条件语句使用.mysql的if用法解决同一张数据表里面两个字段是否相等统计数据量.1.需求,主要是同一张数据表里面两个字段是否相等,判断这张表里面,实际数据和对账数据的值是否相等,可以判断合格率. SELECT s.source_code, sum( s.actual_count ) AS act_count, count(…
Mysql 如何查询两个时间段之间的数据?…
JDBC读写MySQL的大字段数据   不管你是新手还是老手,大字段数据的操作常常令你感到很头痛.因为大字段有些特殊,不同数据库处理的方式不一样,大字段的操作常常是以流的方式 来处理的.而非一般的字段,一次即可读出数据.本人以前用到Spring+iBatis架构来操作大字段,结果以惨烈失败而告终,在网上寻求解决方案,也 没找到答案.最终以JDBC来实现了大字段操作部分.   本文以MySQL为例,通过最基本的JDBC技术来处理大字段的插入.读取操作.   环境: MySQL5.1 JDK1.5…
如何查询Oracle,Sql Server,MySQL 中的数据库名称.数据表名称.字段名称 分类: Database2012-09-24 22:16 7034人阅读 评论(0) 收藏 举报 数据库sql serveroraclemysqltableobject   目录(?)[+]   在开发项目的时候有个功能需要查看数据库中有哪些表,以及每个表有哪些字段,在网上查看了一下,现在分享给大家. Oracle: 查询数据表(Tables)名称:select Table_Name, Tablespa…
不知道大家有没有想过下面这件事? 我们平时调用 DELETE 在 MySQL 中删除的数据都去哪儿了? 这还用问吗?当然是被删除了啊 那么这里又有个新的问题了,如果在 InnoDB 下,多事务并发的情况下,如果事务A删除了 id=1 的数据,同时事务B又去读取 id=1 的数据,如果这条数据真的被删除了,那 MVCC 拿啥数据返回给用户呢? 没错,这就需要了解一下 MySQL 的多版本并发的原理相关的东西,感兴趣的可以去看我之前写的这篇文章. 所以,实际情况中,调用了 DELETE 语句删除的数…
今天遇到一个数据表的两个列数据要互换,在网上找到并记录下. 直接用Sql就可以搞定,语法如下 --将数据表中两个列数据互换的语法-- update tabName set field1=field2,field2=field1 我们来模拟验证一下,在数据库建立一个这样的表 第一步:创建数据表 --1.创建数据表-- create table Student( StuId ,) primary key, StuCode ) not null, StuName ) not null, Notes )…
问题:用一条sql来替换两个字段的内容 表内容:  待优化sql: update student set name=CONCAT(name,dname),dname=SUBSTR(name FROM 1 for INSTR(name,dname)-1),name=REPLACE(`name`,dname,'') 结果: 如有问题,欢迎评论…
--假设为A B两个字段--查询Select A As B, B As A From TableName --更新Update TableName Set A = B, B = A…
原文地址:http://www.cnblogs.com/verrion/p/mysql_optimised.html MySQL优化聊两句 MySQL不多介绍,今天聊两句该如何优化以及从哪些方面入手,很多运维从业者一说起优化就不知所措,当运营过程中某个参数值到达一定阀值之后,就会出现各种问题,很多运维工程师这时不知所措,第一可能也从来没有处理过类似情况,另一方面业务又紧张,系统不正常,首要任务是解决问题,那没办法只能重启了,我们先不说重启是否可行,比如有些应用可以重启并且解决了问题,但如没有解决…
前几天做项目时,mysql写了个sql, distinct  id,col1,col2,...  结果出来了多条同个ID的记录,百度了下..... 下面先来看看例子: table  id name  1 a  2 b  3 c  4 c  5 b 库结构大概这样,这只是一个简单的例子,实际情况会复杂得多. 比如我想用一条语句查询得到name不重复的所有数据,那就必须使用distinct去掉多余的重复记录. select distinct name from table得到的结果是: name …
1.原表没有设置主键,出现错误提示: ERROR tool.ImportTool: Error during import: No primary key could be found for table xxx. Please specify one with --split-by or perform a sequential import with '-m 1' 提示说明的很清楚:在表xxx没有发现主键,使用--split-by指定一个column作为拆分字段或者在命令行上添加 ‘-m 1…
    在我们开发项目的时候,经常会遇到大块数据的问题(2M-100M),比如说保存报表中1w个人的ID号,他就像一个肿瘤一样,存储在服务器哪里都 觉得恶心,放在redis,mongodb中吧,一下子你就会收到报警,因为内存满了...放在mysql吧???你还得建立一个text字段,和一些小字段混在一些, 还是有点恶心,还得单独拆出来,还得怕有些sql不规范的人挺喜欢select * 的,这速度挺恶心的呀...直接放到硬盘吧,没扩展性,你1T大小的硬盘又能 怎样,照样撑爆你,放在hadoop里面…
MySQL删除表数据 在MySQL中有两种方法可以删除数据,一种是DELETE语句,另一种是TRUNCATE TABLE语句.DELETE语句可以通过WHERE对要删除的记录进行选择.而使用TRUNCATE TABLE将删除表中的所有记录.因此,DELETE语句更灵活. 如果要清空表中的所有记录,可以使用下面的两种方法:      DELETE FROM table1      TRUNCATE TABLE table1 其中第二条记录中的TABLE是可选的. 如果要删除表中的部分记录,只能使用…
    在我们开发项目的时候,经常会遇到大块数据的问题(2M-100M),比如说保存报表中1w个人的ID号,他就像一个肿瘤一样,存储在服务器哪里都 觉得恶心,放在redis,mongodb中吧,一下子你就会收到报警,因为内存满了...放在mysql吧???你还得建立一个text字段,和一些小字段混在一起, 还是有点恶心,还得单独拆出来,还得怕有些sql不规范的人挺喜欢select * 的,这速度挺恶心的呀...直接放到硬盘吧,没扩展性,你1T大小的硬盘又能 怎样,照样撑爆你,放在hadoop里面…
本文由云+社区发表 一.从常见的报错说起 ​ 故事的开头我们先来看一个常见的sql报错信息: ​ 相信对于这类报错大家一定遇到过很多次了,特别对于OMG这种已内容生产为主要工作核心的BG,在内容线的存储中,数据大一定是个绕不开的话题.这里的数据"大",远不止存储空间占用多,其中也包括了单个(表)字段存储多.大,数据留存时间长,数据冗余多,冷热数据不明显导致的体量大,访问峰值随着热点变化明显,逻辑处理复杂导致数据存储压力放大等等.回到这个报错的问题上来,我们先来看一下这个表的结构: 看到…
这篇文章主要介绍了MySQL中TEXT与BLOB字段类型的区别,本文总结了6大区别,需要的朋友可以参考下   在MySQL中有两个字段类型容易让人感觉混淆,那就是TEXT与BLOB,特别是自己写博客程序的博主不知道改为自己的博客正文字段选择TEXT还是BLOB类型. 下面给出几点区别: 一.主要差别 TEXT与BLOB的主要差别就是BLOB保存二进制数据,TEXT保存字符数据.目前几乎所有博客内容里的图片都不是以二进制存储在数据库的,而是把图片上传到服务器然后正文里使用<img>标签引用,这样…
搜索: mysql数据库user表host字段的%问题 连接:http://blog.csdn.net/xiaomengh/article/details/48706149 在mysql数据库中,使用select user();查看当前用户. mysql中host字段的%与localhost不是谁包括谁的问题,是由模糊到精确进行匹配的: 当用户从客户端请求登陆时,MySQL将授权表中的条目与客户端所提供的条目进行比较,包括用户的用户名,密码和主机.授权表中的Host字段是可以使用通配符作为模式进…
回顾 数据库基本知识:关系型数据库与非关系型数据库 关系型数据库:安全(磁盘) 非关系型数据库:高效(内存) 关系型数据库:建立在关系模型上的数据库, 数据结构:二维表(浪费空间) 数据库操作指令:sql(DDL,DML,DCL) 完整性约束:表内和表之间(实体) Mysql关系型数据库: C/S结构(直接认证发送sql指令,服务器处理指令返回结果,客户端接受结果,分析结果) Mysql服务器对象:DBMS----->DATABASE------->TABLE------>FIELD 数…
一.前言 通过 MySQL Replication 功能所实现的扩展总是会受到数据库大小的限制,一旦数据库过于庞大,尤其是当写入过于频繁,很难由一台主机支撑的时候,我们还是会面临到扩展瓶颈.这时候,我们就必须许找其他技术手段来解决这个瓶颈,那就是我们这一章所要介绍的数据切分技术. 二.何谓数据切分 有些文章中称之为数据的 Sharding.其实不管是称之为数据的 Sharding 还是数据的切分,其概念都是一样的.简单来说,就是指通过某种特定的条件,将我们存放在同一个数据库中的数据分散存放到多个…
数据库表自动递增字段在用过一段时间后清空,还是继续从清空后的自动编号开始.如何才能让这个字段自动从1开始自动递增呢? 下面两个方法偶都试过,很好用: 1 清空所有数据,将自增去掉,存盘,在加上自增,存盘,就从1开始了如何让mysql的自动编号从1开始 2 truncate table 你的表名 这样不但将清除数据,而且可以重新位置identity属性的字段 不过以上都不能保留现有数据哦. 以下为设置MySQL自动增长从某个指定的数开始  1 创建表的时候就设置: CREATE TABLE `Te…
不是这样的. Collection 的单个 doc 有大小上限,现在是 16MB,这就使得你不可能把所有东西都揉到一个 collection 里.而且如果 collection 结构过于复杂,既会影响查询.更新效率,也会造成维护困难和操作风险.你有尝试过手一抖就把一个 doc 不小心存成 null 的么,反正我做过,要是一个人所有信息都在这个 collection 里面,那感觉一定相当酸爽吧. 一般的原则是: 按照查询方式来聚类 需要经常一起读取的数据放一起. 在逻辑上关系紧密的信息放在一起.…
需求描述 需求是这样的:因为我们目前的一个老项目是Oracle数据库的,这个库呢,数据库是没有注释的,而且字段名和表名都是大写风格,比如 在代码层面的po呢,以前也是没有任何注释的,但是经过这些年,大家慢慢踩坑多了,也给po加上了一些注释了,比如: 现状就是这样,再说说目标是:希望把这个库能转成mysql,表名和字段名最好都用下划线分隔每个单词,字段呢,最好能有注释.也就是差不多下面这样: 方案分析 最早我尝试的就是hibernate正向工程,建一个空的mysql库,然后配置hibernate的…
一.插入数据 1.为表的所有字段插入数据 -------------------------------------------------------------------------- (1)insert语句中不指定具体的字段名 语法格式:insert into 表名 values(值1,值2,……,值n); 表名指定记录插入到哪一个表中: 值等表示要插入的数据:值1到值n分别对应着表中的每一个字的:表中定义了几个字段,insert语句中就应该对应有几个值: 值插入的顺序与表中字段的顺序相…