随笔分类 -  MySQL

摘要:(转载)http://blog.zol.com.cn/2299/article_2298921.htmlMySQL 自4.1版以后开始支持INSERT … ON DUPLICATE KEY UPDATE语法,使得原本需要执行3条SQL语句(SELECT,INSERT,UPDATE),缩减为1条语句即可完成。例如ipstats表结构如下:CREATE TABLE ipstats (ip VARCHAR(15) NOT NULL UNIQUE,clicks SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0');原本需要执行3条SQL语句,如下:IF 阅读全文
posted @ 2013-07-16 00:17 robotke1 阅读(387) 评论(0) 推荐(0)
摘要:(转载)http://www.111cn.net/database/mysql/ON_DUPLICATE_KEY%20.htmINSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则执行旧行UPDATE;如果不会导致唯一值列重复的问题,则插入新行。例如,如果列a被定义为UNIQUE,并且包含值1,则以下两个语句具有相同的效果:insert into table (a,b,c) values (1,2,3) on duplicate key update c=c+1;update table set 阅读全文
posted @ 2013-07-16 00:15 robotke1 阅读(896) 评论(0) 推荐(0)
摘要:例子:mysql> show create table student \G*************************** 1. row *************************** Table: studentCreate Table: CREATE TABLE `student` ( `age` int(3) NOT NULL default '0', `energy` int(11) default '0', `the_time` date default NULL, PRIMARY KEY (`age`)) ENGINE=MyIS 阅读全文
posted @ 2013-07-16 00:05 robotke1 阅读(255) 评论(0) 推荐(0)
摘要:(转载)http://blog.csdn.net/tigernorth/article/details/8094277对于一些数据量较大的系统,面临的问题除了是查询效率低下,还有一个很重要的问题就是插入时间长。我们就有一个业务系统,每天的数据导入需要4-5个钟。这种费时的操作其实是很有风险的,假设程序出了问题,想重跑操作那是一件痛苦的事情。因此,提高大数据量系统的MySQL insert效率是很有必要的。 经过对MySQL的测试,发现一些可以提高insert效率的方法,供大家参考参考。1. 一条SQL语句插入多条数据。常用的插入语句如:INSERT INTO `insert_table` (` 阅读全文
posted @ 2013-07-15 23:53 robotke1 阅读(245) 评论(0) 推荐(0)
摘要:(转载)http://hi.baidu.com/sppeivan/item/e45179375d6778c62f8ec221mysql中limit用法 使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,已 经为我们提供了这样一个功能。SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录 阅读全文
posted @ 2013-07-15 10:44 robotke1 阅读(236) 评论(0) 推荐(0)
摘要:(转载)http://www.5idev.com/p-php_mysql_select_count.shtml统计数据行数SELECT COUNT() FROM 语法用于从数据表中统计数据行数。语法:SELECT COUNT(column) FROM tb_name该 SQL 语法用于统计某一字段的数据行数,COUNT() 内不能是多个字段,但可以是 * 号。例子:浏览器显示:共有用户: 4 位说明尽管 count() 中的参数可以是某个字段名,但如果只是想统计表中的数据记录数目,从效率上考虑建议统计主键 count(id) 或直接使用 count(*) ,另外尽量避免使用列数据属性为字符类的 阅读全文
posted @ 2013-07-15 00:27 robotke1 阅读(912) 评论(0) 推荐(0)
摘要:(转载)http://www.phpcode8.com/lamp/mysql-lamp/mysql-escape-slash.html最近在执行一个sql备份的还原后,发现系统的部分路径找不到,于是开始debug,最后发现,是由于备份的sql语句在还原时,反斜杠(\)被mysql吃掉了。本文对反斜杠和顺斜杠进行了测试,并给出了解决方案。具体描述如下:执行下面的sql语句:INSERT INTO `test` VALUES('123', 'document\101\1086.pdf', '101/1086.swf');结果是:('123&# 阅读全文
posted @ 2013-07-11 16:23 robotke1 阅读(2144) 评论(0) 推荐(0)
摘要:(转载)http://blog.163.com/dreamman_yx/blog/static/26526894201053115622827/查询今天select * from 表名 where to_days(时间字段名) = to_days(now());昨天SELECT *FROM表名WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) select time('2013-05-13 19:50:33');+-----------------------------+| time('2013-05-13 19:50:33') 阅读全文
posted @ 2013-07-11 00:12 robotke1 阅读(215) 评论(0) 推荐(0)
摘要:(转载)http://www.cnblogs.com/likwo/archive/2010/04/16/1713282.html查询一天:select * from table where to_days(column_time) = to_days(now());select * from table where date(column_time) = curdate();查询一周:select * from table where DATE_SUB(CURDATE(), INTERVAL 7 DAY) SELECT something FROM tbl_name WHERE TO_DA.. 阅读全文
posted @ 2013-07-10 23:58 robotke1 阅读(341) 评论(0) 推荐(0)
摘要:(转载)http://www.codesky.net/article/201003/105754.html代码如下:INSERT table (auto_id, auto_name) values (1, ‘yourname') ON DUPLICATE KEY UPDATE auto_name='yourname'ON DUPLICATE KEY UPDATE的使用如果您指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则执行旧行UPDATE。例如,如果列a被定义为UNIQUE,并且包含 阅读全文
posted @ 2013-07-09 19:23 robotke1 阅读(259) 评论(0) 推荐(0)
摘要:(转载)http://hi.baidu.com/yymagento/item/56c3f6184bce8347e75e06db在学习drop方法删除用户时,按照书上讲的一直没操作成功,后来到网上查了点其他资料,才弄明白drop的方法,贴出来和大家分享一下。(方法一)dropuser用户名;语法:dropuser用户名;作用:删除已经存在的用户,例如要删除yan这个用户,(dropuseryan;)默认删除的是yan@"%"这个用户,如果还有其他用户,例如yan@"localhost",yan@"ip",则不会一起被删除。如果只存在一个 阅读全文
posted @ 2013-07-04 17:43 robotke1 阅读(398) 评论(0) 推荐(0)
摘要:(转载)http://www.111cn.net/database/mysql/42453.htm100W的数据对于很多朋友来说算小菜了,但今天我就想到创建一个大量数据的测试环境,于是找了一下怎么插入100W条数据,我用的是20个字段。对比一下,首先是用 mysql 的存储过程弄的:mysql>delimiter $mysql>SET AUTOCOMMIT = 0$$mysql> create procedure test() begindeclare i decimal (10) default 0 ;dd:loop INSERT INTO `million` (`cate 阅读全文
posted @ 2013-07-04 16:06 robotke1 阅读(1592) 评论(0) 推荐(0)
摘要:(转载)http://blog.csdn.net/bhq2010/article/details/7376352需要在mysql中插入2000万条记录,用insert语句插入速度很有限,每秒钟几百条,放在hadoop集群上跑也是这个速度,可能是数据库的问题了,网上看到sql server和oracle的insert速度也不是很快。比较简单的优化方法如下:1、在一条insert语句中插入多条记录INSERT INTO tablename (field0, field1, ...) VALUES(value0, value1, ...),(value0, value1, ...),(value0, 阅读全文
posted @ 2013-07-04 16:02 robotke1 阅读(582) 评论(0) 推荐(0)
摘要:(转载)http://hi.baidu.com/dujiaopeng/item/b87de8a952956e9d151073b6在数据库中,UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。(1)MySQL中的UNIONUNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。实际大部分应用中是不会产生重复的记录,最常见的是过程表与历史表UNION。如:select * from gc_dfys union select * from ls_jg_dfys这个SQL在运行时先取出两个表 阅读全文
posted @ 2013-05-08 15:49 robotke1 阅读(256) 评论(0) 推荐(1)
摘要:归纳总结mysql操作常用增删改查,MYSQL操作大全--SQL必杀技 MYSQL操作大全--SQL必杀技代码: --====================简单的查增删改=========== --查看学生表的全部数据 select * from studio --插入一个新的学生信息 insert into studio(st_name,st_sex,st_age,st_add,st_tel) values("黄兰淇",0,36,'南充','13943943334') --查看class全部数据 select * from class - 阅读全文
posted @ 2013-05-08 14:07 robotke1 阅读(198) 评论(0) 推荐(0)
摘要:(转载)http://www.cnblogs.com/zeroone/archive/2010/05/05/1727659.htmlDAYOFWEEK(date) 返回日期date是星期几(1=星期天,2=星期一,……7=星期六,ODBC标准)mysql> select DAYOFWEEK('1998-02-03'); -> 3 DAYOFMONTH(date) 返回date是一月中的第几日(在1到31范围内) mysql> select DAYOFMONTH('1998-02-03'); -> 3 DAYOFYEAR(date) 返回d 阅读全文
posted @ 2013-05-07 13:30 robotke1 阅读(156) 评论(0) 推荐(0)
摘要:(转载)http://www.jb51.net/article/36363.htm使用视图的大部分情况是为了保障数据安全性,提高查询效率(1)什么是视图视图是从一个或多个表中导出来的表,是一种虚拟存在的表。视图就像一个窗口,通过这个窗口可以看到系统专门提供的数据。这样,用户可以不用看到整个数据库中的数据,而之关心对自己有用的数据。数据库中只存放了视图的定义,而没有存放视图中的数据,这些数据存放在原来的表中。使用视图查询数据时,数据库系统会从原来的表中取出对应的数据。视图中的数据依赖于原来表中的数据,一旦表中数据发生改变,显示在视图中的数据也会发生改变。(2)视图的作用 a.使操作简单化,可以. 阅读全文
posted @ 2013-05-05 00:09 robotke1 阅读(327) 评论(0) 推荐(0)
摘要:(转载)http://www.jb51.net/article/36360.htm触发器是由事件来触发某个操作,这些事件包括INSERT语句,UPDATE语句和DELETE语句。创建触发器(1)创建只有一个执行语句的触发器CREATE TRIGGER 触发器名 BEFORE|AFTER 触发事件ON 表名 FOR EACH ROW 执行语句其中,触发器名参数指要创建的触发器的名字BEFORE和AFTER参数指定了触发执行的时间,在事件之前或是之后FOR EACH ROW表示任何一条记录上的操作满足触发事件都会触发该触发器mysql> select * from student;+---- 阅读全文
posted @ 2013-05-04 22:55 robotke1 阅读(194) 评论(0) 推荐(0)
摘要:(1)当前日期类型mysql> create table thetime(t date);Query OK, 0 rows affected (0.09 sec)mysql> insert into thetime values(now());Query OK, 1 row affected, 1 warning (0.06 sec)mysql> select * from thetime;+------------+| t |+------------+| 2013-04-28 |+------------+1 row in set (0.00 sec)mysql>( 阅读全文
posted @ 2013-05-04 22:21 robotke1 阅读(236) 评论(0) 推荐(0)
摘要:(转载)http://www.jb51.net/article/36384.htm我们在创建表的过程中难免会考虑不周,因此后期会修改表修改表需要用到alter table语句(1)修改表名mysql> alter table student rename person;Query OK, 0 rows affected (0.03 sec)这里的student是原名,person是修改过后的名字用rename来重命名,也可以使用rename to还有一种方法是rename table old_name to new_name(2)修改字段名mysql> alter table pe 阅读全文
posted @ 2013-05-04 12:05 robotke1 阅读(192) 评论(0) 推荐(0)