/*
* 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 '创建时间' ;
*/