SQL数据库

本文详细介绍了如何在数据库中创建、修改和使用视图,包括多表视图的创建。同时,展示了如何添加、删除和查询视图数据,以及通过`WITH CHECK OPTION`进行约束。接着,讨论了事务的回滚和提交,并通过实例演示了触发器的两种创建方式,用于在学生表插入数据后自动更新成绩表。最后,展示了如何创建存储过程以及如何调用存储过程来执行特定任务。
摘要由CSDN通过智能技术生成

1.创建视图

 

create view 视图名(视图列1,视图列2) 视图列名为中文

 

as

 

select * from 表名 没有指定那一列,从第一个列名开始创建

 

with check option;

 

2.添加视图数据、删除视图、查询视图、修改视图

 

和表一样的用法

 

3.创建多表视图

 

create view 视图名(视图列1,视图列2,视图列3)

 

as

 

select 列名1,列名2,列名3 from 表名1 表名1别名 left join 表名2 表名2别名 on 表名1列名=表名2列名;

 

例:

 

create view v_a_b(姓名,标题,内容)

 

as

 

select a.author_name,b.title,b.content form author a left join blog b on b.author_id=a.id;

 

4.修改视图 有就修改,没有就替换

 

create or replace view v_blog(编号,标题,内容,作者编号)

 

as select * from blog where author_id=1 as是连接,视图只存储author_id=1的数据

 

with check option; 这一行表示where条件约束

 

5.回滚和提交 以数字的顺序来执行实现回滚

 

开启事务 1

 

begin;

 

插入语句 2

 

insert into b(id)value('5');

 

提交事务 提交后不能回滚

 

commit;

 

回滚

 

rollback; 4

 

查询

 

select * from b; 3 5

 

6.触发器

 

#学生表

 

CREATE TABLE student(

username VARCHAR(20),

PASSWORD VARCHAR(20),

stuid INT PRIMARY KEY AUTO_INCREMENT,

birthday DATE

);

INSERT INTO student(username,PASSWORD,birthday)VALUES

('王二','111111','2016-08-23'),

('李四','123456','2016-07-23'),

('杨三','123456','2016-08-17'),

('刘五','000000','2016-08-18'),

('黄六','666666','2016-08-23');

 

#成绩表

CREATE TABLE IF NOT EXISTS cj(

NUMBER INT,

stu_id INT,

stu_name VARCHAR(20),

math FLOAT,

chinese FLOAT,

english FLOAT

);

 

#触发器方式1

create trigger ins_stu

after insert on student for each row

insert into cj(number,stu_id,stu_name,math,chinese,english)

values(1,new.stuid,new.username,88,77,99);

 

#触发器方式2

delimiter $

create trigger ins_stu

after insert on student for each row

begin

insert into cj(number,stu_id,stu_name,math,chinese,english)

values(1,new.stuid,new.username,88,77,99); new表示student表

 

end $

delimiter ;

 

 

#执行触发过程

insert into student(username,password,birthday)values

('张三','22222','2016-08-23');

 

 

 

7.创建存储过程

 

delimiter $

 

create procedure test2()

 

begin

 

  #声明变量类型

 

  declare un varchar(32) default '';

 

  #给un变量赋值

 

  set un='xiaoxiao';

 

  #将student表的数据复制给un,复制的是student表username列的数据,条件是student表的stuid=3的username列数据

 

  select username into un from student where stuid=3;

 

  #查询un变量,返回

 

  select un;

 

end $

 

delimiter ;

 

#调用存储过程

 

call test2();

 

 

 

创建存储过程2 两张表会显示两个结果

delimiter $

create procedure testa()

begin

select * from student;

select * from cj;

end $

delimiter ;

 

 

 

声明变量类型两次

 

delimiter $

 

create procedure test3()

 

begin

 

  begin

 

    declare un varchar(32) default '';

 

    set un='xiaoxiao';

 

    select username into un from student where stuid = 3;

 

    select un;

 

  end;

 

  begin

 

    declare un varchar(32) default '';

 

    set un='xiaoxiao';

 

    select username into un from student where stuid = 5;

 

    select un;

 

  end;

 

end $

 

declimiter ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值