存儲過程函數
-- 設置數據庫的結束符爲 ///
mysql> delimiter ///
-- 創建過程函數test
mysql> create procedure test(a int)
-> begin
-> select * from student where id=a;
-> end
-> ///
Query OK, 0 rows affected (0.01 sec)
mysql> delimiter ;
--調用函數 test
mysql> call test(2);
+----+------+-----+-----+
| id | name | age | sex |
+----+------+-----+-----+
| 2 | lisi | 31 | 0 |
+----+------+-----+-----+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
-- 查看函數 test 的狀態信息
mysql> show procedure status like 'test' \G
*************************** 1. row ***************************
Db: shop
Name: test
Type: PROCEDURE
Definer: root@localhost
Modified: 2018-04-24 12:42:43
Created: 2018-04-24 12:42:43
Security_type: DEFINER
Comment:
character_set_client: utf8
collation_connection: utf8_general_ci
Database Collation: utf8_general_ci
1 row in set (0.00 sec)
-- 刪除函數 test
mysql> drop procedure test;
視圖
-- 創建視圖
mysql> create view test_view(name,age) as select name,age from student where id =5;
Query OK, 0 rows affected (0.00 sec)
-- 視圖調用
mysql> select * from test_view;
+--------+-----+
| name | age |
+--------+-----+
| tianqi | 42 |
+--------+-----+
1 row in set (0.01 sec)
-- 查看視圖的創建過程
mysql> show create view test_view \G
-- 刪除視圖
mysql> drop view test_view;
觸發器
-- artcle表結構,article表開始是空的
mysql> desc article;
+-------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| title | varchar(20) | NO | | NULL | |
+-------+------------------+------+-----+---------+----------------+
mysql> desc total_num;
+-------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| type | tinyint(3) unsigned | NO | | NULL | |
| num | int(10) unsigned | NO | | NULL | |
+-------+---------------------+------+-----+---------+----------------+
-- type=1代表文章數 type=2代表用戶的數量
mysql> select * from total_num;
+----+------+-----+
| id | type | num |
+----+------+-----+
| 1 | 1 | 0 |
| 2 | 2 | 0 |
+----+------+-----+
創建觸發器,向article表中每增加一條記錄,total_num表中的type=1對應num值就加1
mysql> delimiter //
mysql> create trigger add_total_num after insert on article for each row
-> begin
-> update total_num set num=num+1 where type=1;
-> end
-> //
創建觸發器,向article表中每刪除一條記錄,total_num表中的type=1對應num值就減1
mysql> create trigger delete_total_num after delete on article for each row
-> begin
-> update total_num set num=num-1 where type=1;
-> end
-> //
向article表中插入2條數據,再查看total_num表中的變化
mysql> insert into article(title)values('title1'),('title2');
-> //
向article表中刪除一條記錄時,查看total_num表中的變化
mysql> delete from article where id=1;
-> //
觸發器語法
create trigger trigger_name after|before insert|update|delete on table_name for each row
begin
sql語句
end;