视图
含义:视图是一张虚拟表,不是实际存在的表,作用就是可以把一些经常使用的sql来做视图,不用每次写sql都要把全部条件加上
/*样例表*/
CREATE TABLE student
(
s_id INT,
name VARCHAR(40)
);
CREATE TABLE stu_info
(
s_id INT,
glass VARCHAR(40),
addr VARCHAR(90)
);
示例 —单表创建视图
在t表格上创建一个名为view_t的视图,代码如下:
/*创建基本表t*/
CREATE TABLE t (qty INT, price INT);
/*插入记录*/
INSERT INTO t VALUES(3, 50);
/*创建视图view_t*/
CREATE VIEW view_t AS SELECT qty, price, qty *price FROM t;
# 查看视图数据
SELECT * FROM view_t;
示例---- 多表创建视图
在表student和表stu_info上创建视图stu_glass,代码如下:
/*插入记录*/
INSERT INTO student VALUES(1,'wanglin1'),(2,'gaoli'),(3,'zhanghai');
INSERT INTO stu_info VALUES(1, 'wuban','henan'),(2,'liuban','hebei'),(3,'qiban','shandong');
# 创建视图 -- 就是一个简单的连表sql
CREATE VIEW stu_glass (id,name, glass) AS SELECT student.s_id,student.name ,stu_info.glass FROM student ,stu_info WHERE student.s_id=stu_info.s_id;
# 查看视图
SELECT * FROM stu_glass;
使用 describe 查看视图信息(和看表一样)
show table status 查看视图的基本信息
触发器(trigger)
含义:触发器是由某个事件来触发某个操作,事件包括 insert,update,delete
触发器创建语法
create trigger trigger_name trigger_timer trigger_event
on table_name for each row trigger_stmt
trigger_name :触发器名字
trigger_timer :触发器事件(什么时候触发) before 、after
trigger_event:什么事件使触发器做出行为动作,insert,update,delete
table_name :建立触发器的表名
trigger_stmt:触发器执行语句
查看创建的触发器
show triggers
所有触发器的定义都在 information.schema.TRIGGERS 中,如存储过程中的 information.schema.ROUTINES
删除触发器
drop trigger db_name.trigger_name
示例
步骤1:创建persons表
CREATE TABLE persons (name VARCHAR(40), num int);
步骤2:创建一个销售额表sales
CREATE TABLE sales (name VARCHAR(40), sum int);
步骤3:创建一个触发器
CREATE TRIGGER num_sum AFTER INSERT ON persons
FOR EACH ROW INSERT INTO sales VALUES (NEW.name,7*NEW.num);
步骤4:向persons表中插入记录
INSERT INTO persons VALUES ('xiaoxiao',20),('xiaohua',69);
SELECT * FROM persons;
SELECT *FROM sales;