mysql存储引擎及常用函数 事务等

<?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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值