mysql高级 triggers,stored procedure,view,index,transaction,lock.

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版、作者信息和本声明。否则将追究法律责任。http://blog.csdn.net/mayongzhan - 马永占,myz,mayongzhan

triggers,stored procedure,index,view,transaction,lock
有很大部分是根据手册写的 ,之所以php和mysql的书如此之少,关键是手册写的太好了…哎.只做最简单的介绍.需要详细的话,看手册,就把这文章当做要学的列表吧 : )---myz
触发—TRIGGERS
这个我的理解就是外键级联删除的升级 .前些天有个东西需要做外键级联添加…这个就需要triggers了.
创建
CREATE TABLE testTable(id INT);
CREATE TRIGGER 触发器名 BEFORE INSERT ON testTable
INSERT INTO testTable2 SET name=NEW.id
这里粗略讲一下 .BEFORE是规定在INSERT ON testTable 之前执行还是之后执行
INSERT ON testTable就是 testTable的插入事件,当然还有update和delete
后面的就是触发器要执行的程序 ,可以些多条语句.用BEGIN…END括起来.
存储程序—STORED PROCEDURE
这个分为 procedure 和function,其实就是功能上的差异,前者简单些.
都有 create drop alter语法.还有show 的语法.
delimiter //
CREATE PROCEDURE newProc (OUT param1 INT)
BEGIN
SELECT COUNT(*) INTO param1 FROM t;
END
//
delimiter ;
CALL newProc(@test)
SELECT @test;
再加上触发器 ,完美…………
索引—INDEX
适当的建立索引 ,多了影响速度,少了也会影响速度.
在列 d和a上添加索引
ALTER TABLE t2 ADD INDEX (d), ADD INDEX (a);
在表t中删除d列的索引
ALTER TABLE t DROP INDEX d
FULLTEXT 索引
FULLTEXT索引只能对 CHAR, VARCHAR和TEXT列提供索引,并且只能在MyISAM表中,这个用在搜索文章内容的时候很有用.
视图—VIEW
创建 ,修改,删除基本上和表的相同
CREATE VIEW v AS SELECT id, name, height,width,height*width AS area FROM t
事务—TRANSACTION (InnoDB中使用)
提交
START TRANSACTION
SELECT * FROM t;
INSERT INTO t SELECT * FROM t;
INSERT INTO t2 SELECT * FROM t2;
COMMIT
撤消
START TRANSACTION
ROLLBACK
—LOCK
LOCK TABLES和 UNLOCK TABLES
读锁
LOCK TABLES t READ;
SELECT * FROM t;
---ERROR 1100: Table 't' was not locked with LOCK TABLES
写锁
LOCK TABLES t WRITE;
INSERT INTO t SELECT * FROM t;
---ERROR 1100: Table 't' was not locked with LOCK TABLES
解锁
LOCK TABLES t WRITE;
SELECT * FROM t;
UNLOCK TABLES;
v

你可能感兴趣的:(mysql,PHP,.net,Blog,出版)