<?php /* * Mysql存储引擎 * MyISAM 拥有较高的插入,查询速度,但不支持事务. * InnoDB 支持ACID事务,支持行级锁定, MySQL 5.5 起成为默认数据库引擎. * Memory 所有数据置于内存的存储引擎,拥有极高的插入,更新和查询效率。但是会占用和数据量成正比的内存空间。并且其内容会在 MySQL 重新启动时丢失 * Merge 将一定数量的 MyISAM 表联合而成一个整体,在超大规模数据存储时很有用 * Archive 非常适合存储大量的独立的,作为历史记录的数据。因为它们不经常被读取。Archive 拥有高效的插入速度,但其对查询的支持相对较差 * CSV 逻辑上由逗号分割数据的存储引擎。它会在数据库子目录里为每个数据表创建一个 .csv 文件。这是一种普通文本文件,每个数据行占用一个文本行。CSV 存储引擎不支持索引。 * EXAMPLE 存储引擎是一个不做任何事情的存根引擎。它的目的是作为 MySQL 源代码中的一个例子,用来演示如何开始编写一个新存储引擎。同样,它的主要兴趣是对开发者。EXAMPLE 存储引擎不支持编索引。另外,MySQL 的存储引擎接口定义良好。有兴趣的开发者可以通过阅读文档编写自己的存储引擎。 * * where子句 *除非你使用 LIKE 来比较字符串,否则MySQL的WHERE子句的字符串比较是不区分大小写的。 *你可以使用 BINARY 关键字来设定WHERE子句的字符串比较是区分大小写的。 *SELECT * FROM `t_dictionary` where BINARY sName='London textile Fair'; * * * * * * 触发器 BEGIN DECLARE source VARCHAR(2000);//定义变量 DECLARE thirdparty INT(11); SELECT source_text INTO source FROM decoration_pic WHERE id=NEW.id; //LOCATE('要查询的字符','字符串'); 返回字符首次出现的位置,没有返回0. IF LOCATE('"source":2',source)>0 || LOCATE('"source":"2"',source)>0 THEN IF LOCATE('link',source)=0 THEN IF LOCATE('thirdparty',source)>0 THEN //substring_index(被截取字段,关键字,关键字出现的次数);注:如果关键字出现的次数是负数 如-2 则是从后倒数,到字符串结束 SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(source,',',2),':',-1),'"',-2) INTO thirdparty; IF thirdparty=3 || thirdparty=5 || thirdparty=7 || thirdparty=9 || thirdparty=11 THEN INSERT INTO `pop136`.`overseas_space` SET `sDbName`='hometext6ile',`sTableName`='decoration_pic',`iPri_key`=NEW.`id`,`iType`=2,`iThirdparty`=thirdparty,`sFlagFolder`=NEW.`flag_text`; END IF; END IF; END IF; END IF; END 随机取1条或者多条记录 select * from table order by RAND() limit start,length; RAND(); 产生一个0-1的随即小数,0.46754712643782 FLOOR(); 向下取整; 12.956 = 12 CEILING(); 向上取整; 12.956 = 13 ROUND() 函数 ROUND 函数用于把数值字段舍入为指定的小数位数。 SELECT ROUND(column_name,decimals) FROM table_name 参数 描述 column_name 必需。要舍入的字段。 decimals 必需。规定要返回的小数位数。 插入更新操作: ON DUPLICATE KEY UPDATE 可以达到以下目的: 向数据库中插入一条记录: 若该数据的主键值/ UNIQUE KEY 已经在表中存在,则执行更新操作, 即UPDATE 后面的操作。 否则插入一条新的记录。 INSERT INTO mRowUpdate(id,`value`) VALUES(3, 'SuperMan') ON DUPLICATE KEY UPDATE `value`='SuperMan'; 技巧 1 : ON DUPLICATE KEY UPDATE 特别适用于多行插入。如: INSERT INTO `table` (`a`, `b`, `c`) VALUES (1, 2, 3), (4, 5, 6) ON DUPLICATE KEY UPDATE `c`=VALUES(`a`)+VALUES(`b`); Tips: VALUES()函数只在INSERT…UPDATE语句中有意义,其它时候会返回NULL。 常用操作: alter table user modify column name varchar(50) ; --修改字段长度 alter table test change column address address1 varchar(30)--修改表列名 alter table test add column name varchar(10); --添加表列 --添加CreateTime 设置默认时间 CURRENT_TIMESTAMP ALTER TABLE `table_name` ADD COLUMN `CreateTime` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' ; */
转载于:https://my.oschina.net/u/2968862/blog/1942038