zeromax 发表于 2016-10-18 09:33:53

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
页: [1]
查看完整版本: mysql高级 triggers,stored procedure,view,index,transaction,lock.