数据库
wgcc
网站开发、运营
展开
-
MYSQL问题:You can't specify target table '表名' for update in FROM clause
今天在写 mysql 遇到一个比较特殊的问题。mysql 语句如下:update 表名 set cabf_enabled=0where cabf_id in (SELECT 表名.cabf_id FROM 表名Inner Join wms_cabinet ON 表名.cabf_cab_id = wms_cabinet.cab_idInner Join转载 2015-11-10 13:12:54 · 331 阅读 · 0 评论 -
MYSQL使用group by,如何查询出总记录数
SELECT t.report_date ,t.user_id FROM my_table t GROUP BY t.user_id,t.report_date 比如有这样一条SQL,根据t.user_id,t.report_date两个字段统计这样前端转载 2016-05-31 14:27:48 · 819 阅读 · 0 评论 -
mysql中的unsigned
unsigned 既为非负数,用此类型可以增加数据长度!例如如果 tinyint最大是127,那 tinyint unsigned 最大 就可以到 127 * 2unsigned 属性只针对整型,而binary属性只用于char 和varchar。类型说明tinyint非常小的转载 2016-08-04 12:30:16 · 12491 阅读 · 0 评论 -
Linux启动/停止/重启Mysql数据库的方法
1、查看mysql版本方法一:status;方法二:select version();2、Mysql启动、停止、重启常用命令a、启动方式1、使用 service 启动:[root@localhost /]# service mysqld start (5.0版本是mysqld)[root@szxdb etc]# service mysql start (5.5.7版本是转载 2016-10-17 13:08:51 · 339 阅读 · 0 评论 -
忘记MySQL root密码解决方法,基于Ubuntu 12.04 LTS
忘了MySQL密码,从网上找到的解决方案记录在这里。编辑mysql的配置文件/etc/mysql/my.cnf,在[mysqld]段下加入一行“skip-grant-tables”。重启mysql服务abbuggy@abbuggy-ubuntu:~$ sudo service mysql restart mysql stop/waiting转载 2016-10-17 13:09:55 · 252 阅读 · 0 评论 -
MySQL的保留关键字,使用时尽量避免
使用mysql时一定要注意,尽量不要使用它的保留字作为表名或者列名,否则会出现莫名其妙的错误。如果之前用了,在sql语句中就用``包括起来。从网上找了一个mysql的保留字列表,仅供参考。ADDALLALTERANALYZEANDASASCASENSITIVEBEFOREBETWEENBIGINTBINAR转载 2017-08-28 17:46:58 · 9218 阅读 · 0 评论 -
mysql中的coalesce用法
在mysql中,其实有不少方法和函数是很有用的,这次介绍一个叫coalesce的,拼写十分麻烦,但其实作用是将返回传入的参数中第一个非null的值,比如 SELECT COALESCE(NULL, NULL, 1);-- Return 1SELECT COALESCE(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1);转载 2017-11-23 16:18:43 · 283 阅读 · 0 评论 -
mysql之游标
游标 在操作mysql的时候我们知道MySQL检索操作返回一组称为结果集的行。这组返回的行都是与 SQL语句相匹配的行(零行或多行)。使用简单的 SELECT语句,例如,没有办法得到第一行、下一行或前 10行,也不存在每次一行地处理所有行的简单方法(相对于成批地处理它们)。有时,需要在检索出来的行中前进或后退一行或多行。这就是使用游标的原因。游标( cursor)是一个存储在My转载 2017-11-23 16:35:08 · 262 阅读 · 0 评论 -
详解MySQL数据库insert和update语句
用于操作数据库的SQL一般分为两种,一种是查询语句,也就是我们所说的SELECT语句,另外一种就是更新语句,也叫做数据操作语句。SQL语句中的更新语句update是最常用的语句之一,言外之意,就是对数据进行修改。在标准的SQL中有3个语句,它们是INSERT、UPDATE以及DELETE。用于操作数据库的SQL一般分为两种,一种是查询语句,也就是我们所说的SELECT语句,另外一种就是更新转载 2018-01-05 11:37:32 · 12264 阅读 · 0 评论 -
mysql操作查询结果case when then else end用法举例
Case具有两种格式。简单Case函数和Case搜索函数。 --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASE WHEN sex = '1' THEN '男' WHEN sex = '2' TH转载 2018-01-10 14:47:49 · 1548 阅读 · 0 评论 -
MySQL中删除重复数据只保留一条
用SQL语句,删除掉重复项只保留一条在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断SELECT *FROM peopleWHERE peopleId IN ( SELECT peopleId FROM...转载 2018-09-20 18:14:45 · 40303 阅读 · 6 评论 -
mysql 保留两位小数
1、round(x,d) :用于数据的四舍五入,round(x) ,其实就是round(x,0),也就是默认d为0;这里有个值得注意的地方是,d可以是负数,这时是指定小数点左边的d位整数位为0,同时小数位均为0;SELECT ROUND(100.3465,2),ROUND(100,2),ROUND(0.6,2),ROUND(114.6,-1);结果分别:100.35,100,0.6,...转载 2018-09-27 14:06:53 · 1610 阅读 · 0 评论 -
mysql中 show index from tb_name命令各列的含义
show index from table_name这个命令有助于诊断性能低下的查询,尤其是查询是否使用了可用的索引。下面介绍下 这个命令显示的结果列的含义:| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null |转载 2016-03-11 14:36:50 · 1955 阅读 · 0 评论 -
用mysql查询某字段是否有索引
显示一个表所有索引的SQL语句是:show index from 数据库名.表名 查看某表某一列上的索引使用下面的SQL语句:show index from 数据库名.表名 where column_name like '列名'下面的SQL语句在我的数据库上执行成功:show index from web.clubuser where column_name like 'user'转载 2016-03-11 14:32:39 · 2598 阅读 · 0 评论 -
mysql数据库FULLTEXT索引的用法和作用
注意事项: 1、MySQL 4.x版本及以上版本提供了全文检索(备注:FULLTEXT)支持,但是表的存储引擎类型必须为MyISAM。 2、创建方法: 修改表结构添加全文索引ALTER TABLE article ADD FULLTEXT index_content(content)转载 2016-03-11 14:27:48 · 3900 阅读 · 0 评论 -
MySQL 添加列,修改列,删除列
ALTER TABLE:添加,修改,删除表的列,约束等表的定义。查看列:desc 表名;修改表名:alter table t_book rename to bbb; 添加列:alter table 表名 add column 列名 varchar(30); 删除列:alter table 表名 drop column 列名; 修改列名MySQL: alter table bbb chang转载 2015-12-11 14:40:49 · 243 阅读 · 0 评论 -
通过force index了解的MySQL查询的性能优化
查询是数据库技术中最常用的操作。查询操作的过程比较简单,首先从客户端发出查询的SQL语句,数据库服务端在接收到由客户端发来的SQL语句后, 执行这条SQL语句,然后将查询到的结果返回给客户端。虽然过程很简单,但不同的查询方式和数据库设置,对查询的性能将会有很在的影响。因此,本文就在MySQL中常用的查询优化技术进行讨论。讨论的内容如:通过查询缓冲提高查询速度;MySQL对查询的自动优化;基转载 2015-11-26 11:38:58 · 815 阅读 · 1 评论 -
MySQL配置环境变量与在DOS环境下对MySQL的操作
在以前的时候,我只接触过可视化的SQL Server,但是这几天的JAVA培训,我们用到了MySQL数据库,这种在DOS环境下操作的数据库给我一种非常新颖的感觉,不知道是否不是可视化的操作更让人看着有技术含量,总之对这种操作非常的有感觉,今日整理下用到的MySQL操作,以备后用! 好像可以下到可视化的MySQL,但是我们大多时候下到的还是不是可视化的。并且我使用的也是绿色免安装版本。转载 2015-12-20 09:55:04 · 255 阅读 · 0 评论 -
txt文件导入mysql
MySQL写入数据通常用insert语句,如insert into person values(张三,20),(李四,21),(王五,70)…; 但有时为了更快速地插入大批量数据或交换数据,需要从文本中导入数据或导出数据到文本。 一、 建立测试表,准备数据 首先建立一个用于测试的表示学生信息的表,字段有id、姓名、年龄、城市、薪水。Id和姓名不 能为空。 crea转载 2015-12-20 09:57:11 · 383 阅读 · 0 评论 -
mysql in 排序 也可以按in里面的顺序来排序
SQL: select * from table where id IN (3,6,9,1,2,5,8,7);这样的情况取出来后,其实,id还是按1,2,3,4,5,6,7,8,9,排序的,但如果我们真要按IN里面的顺序排序怎么办?SQL能不能完成?是否需要取回来后再foreach一下?其实可以这样sql: select * from table where id IN (3,6,9,转载 2016-03-17 16:41:26 · 391 阅读 · 0 评论 -
MySQL批量SQL插入性能优化
对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时间长。特别像报表系统,可能每天花费在数据导入上的时间就会长达几个小时之久。因此,优化数据库插入性能是很有意义的。 网络上的牛人很多,总会有一些手段可以提高insert效率,大家跟我一起分享一下吧: 1. 一条SQL语句插入多条数据。 我们常用的插入语句大都是一条一个转载 2016-03-21 18:29:38 · 93 阅读 · 0 评论 -
mysql中or和in的效率问题
在网上一直看到的是or和in的效率没啥区别,一直也感觉是这样,前几天刚好在看《mysql数据库开发的36条军规》的文章,里面提到了or和in的效率问题,文中提到or的效率为O(n),而in的效率为O(logn), 当n越大的时候效率相差越明显。今天刚好有时间决定对心中的疑惑进行测试,下面是详细的测试过程。第一步,创建测试表,并生成测试数据,测试数据为1000万条记录。数据库版本为5.1.6转载 2016-03-11 13:57:03 · 946 阅读 · 0 评论 -
mysql in 子查询 效率慢 优化
现在的CMS系统、博客系统、BBS等都喜欢使用标签tag作交叉链接,因此我也尝鲜用了下。但用了后发现我想查询某个tag的文章列表时速度很慢,达到5秒之久!百思不解(后来终于解决),我的表结构是下面这样的,文章只有690篇。文章表article(id,title,content)标签表tag(tid,tag_name)标签文章中间表article_tag(id,tag_id,arti转载 2016-03-11 14:01:47 · 271 阅读 · 0 评论 -
MySQL 主键与索引的联系与区别分析
关系数据库依赖于主键,它是数据库物理模式的基石。主键在物理层面上只有两个用途: 惟一地标识一行。 作为一个可以被外键有效引用的对象。 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。下面是主键和索引的一些区别与联系。 1. 主键一定是唯一性索引,唯一性索引并不一定就是主键。 所谓主键就是能够唯一标识表转载 2016-03-11 14:05:16 · 281 阅读 · 0 评论 -
mysql去掉重复值的简单方法
一、mysql去掉重复值的简单方法例子: tableid name1 a2 b3 c4 c5 b库结构大概这样,这只是一个简单的例子,实际情况会复杂得多。比如我想用一条语句查询得到name不重复的所有数据,那就必须使用distinct去掉多余的重复记录。 代码如下复制代码select distinct name fr转载 2016-03-11 14:19:36 · 755 阅读 · 0 评论 -
mysql数据库如何创建索引
面就介绍几个mysql创建索引的方案工具/原料mysql数据库创建一个user的表里边的字段如上图方法/步骤普通索引 添加INDEXALTER TABLE `table_name` ADD INDEX index_name ( `column` )下面演示下给user表的name字段添加一个索引ALTER TABL转载 2016-03-11 14:26:14 · 857 阅读 · 0 评论 -
MySQL中int(M)和tinyint(M)数值类型中M值的意义
在一开始接触MySQL数据库时,对于int(M)及tinyint(M)两者数值类型后面的M值理解是最多能够插入数据库中的值不能大于M;后来工作后,也是一边学习一边使用,之后的理解是其中的M的意思是插入数据库中的值的字符长度不能大于M,例如,int(4),想要插入1234,1234的字符长度是4,就正好可以插入数据库,12341就不行,因为是5个字符长度,这也都是道听途说,自己从来没有验证过;...转载 2018-10-24 13:51:16 · 434 阅读 · 0 评论