找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手

外键、视图 、存储过程

[复制链接]
本帖最后由 dcs68蓝晓兰 于 2021-11-28 19:29 编辑

一、外键
外键的主要作用是:保持数据的一致性、完整性
创建外键关联表和表:primary key 主键
ENGINE=INNODB---创建外键或者事务的时候
主表:
create table dcs1(id int(4)primary key,name char(4)) engine=innodb;
基于主表来创建子表(子表关联主表)
constraint aa(此语法的作用就是来定义一个外键名称,后续要解除外键关系可以通过删除掉这个名称来解除)
FOREIGN key(sid) 设置外键约束:dcs2中的sid
REFERENCES dcs1(id)和dcs1中的id关联,dcs1为主,dcs2为子
create table dcs2(sid int(4)primary key,score int(10),constraint aa foreign key(sid)references dcs1(id)) engine=innodb;

删除外键:
alter table 子表名drop foreign key 外键名
alter table dcs2 drop foreign key aa;

当前创建后:dcs1 和dcs2是外键关系
其中dcs1是主,dcs2是子
注意:1、主表中有数据,子表才能拥有数据
          2、主表中有多少行的数据,子表才能有对应行的数据不能超过主表的数据
          3、如果你要删除主表的数据,必须要先删除子表的数据
          4、如果你要删除主表,必须要先删除子表

二、视图
视图:view
1、对视图的操作与对基本表的操作都是一样的(包括alter,create,insert into ,update ,delete ,select),
2、二者任意一方的字段值被修改,都会实时影响 到对方(如修改view的字段值,会同步修改table相应的字段值);
3、视图的创建是基于基本表的,它的作用可以对基本表的敏感信息进行保护;在实际工作中,出于安全考虑,将用户常用的信息创建成视图给用户调用,避免了直接操作基本表!

数据库视图 VIEW
保护敏感信息
create view yy as (select id,name from dcs);
dcs表
id  name  score  age sex
视图表:yy
id  name
//将查询结果集创建为视图yy
show create view yy(视图名)
//也能查看到视图 Show tables 查看试图
drop view 视图名; //删除视图

三、存储过程



调用存储

调用存储的具体案例;
drop procedure if exists dcs;
create procedure dcs ()
begin
drop table if exists duoceshi;
create table duoceshi(id int(4) primary key,score int (4));
insert into duoceshi(id,score) values (1,22),(2,33),(3,44);
select * from duoceshi;
end
call dcs() ;

if的判断,单分支和多分支

C:\Users\Administrator\AppData\Local\YNote\data\qqCCAFBBD2A3ADA18642CC7ECC08BC35F0\2881f467159e41be8178021414ff3279\id8%h_8k93y8awxkzky{{$b.png
单分支案例
drop procedure if exists dcs;
create procedure dcs (n int)
begin
drop table if exists duoceshi;
create table duoceshi(id int(4) primary key,score int (4));
insert into duoceshi(id,score) values (1,22),(2,33),(3,44);
if n=0 then
select * from duoceshi;
else
select min(scroe) from duoceshi;
end if;
end
call dcs (1);
多分支案例
drop procedure if exists dcs;
create procedure dcs(n int)
begin
drop table if exists duoceshi;
create table duoceshi (id int(4)primary key, score int (4));
insert into duoceshi (id, score)values(1,22),(2,33),(3, 44);
if n=0 then
select * from duoceshi;
else if n>1 then
select * from duoceshi where id=3;
else
select min(score) from duoceshi;
end if;
end if;
end
call dcs(3);
while循环语句

案例
drop procedure if exists dcs;
create procedure dcs(n int)
begin
declare i int default 1;
declare j int default(select min(score) from duoceshi);
drop table if exists duoceshi;
create table duoceshi(id int(4)primary key auto_increment, score int (4));
while n>=i do
insert into duoceshi(score)values(i);
set i=i+1;
end while;
select * from duoceshi;
end
call dcs(5);


分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册