找回密码
 立即注册

推荐阅读

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

数据库视图、存储过程、外键约束

[复制链接]
一、视图
1、作用:保护数据表
2、创建视图
  Create view dcs as(select * from student);
3、查询视图中的数据
  select * from dcs;
4、删除视图中的数据
  delete from dcs;
5、往视图中插入数据
   Insert into dcs values(1,fg)
6、更新视图
   update dcs set name=ggwhere id=1;
7、删除视图
   Drop  view dcs;
8、查看创建视图的结构
   show create view dcs;
9、视图和基础表的关系
   更新视图中的数据时,基础表的数据也会改变
   删除视图中的数据时,基础表的数据也会改变
   往视图中插入数据时,基础表也会插入数据
二、DDLDML
1DDL:数据定义语言
craete  alter   drop  
2DML:数据操纵语言
insert   delete  select   update
3、数据库中你常用哪些DDL或者DML语言
   DDL是数据定义语言,有数据库表的创建,数据表字段的修改以及表的删除,但这些语句在工作中一般都不怎么涉及到,在公司数据库定义都有专门的数据库管理员管理。
DML数据操作语言,有数据的插入、删除、查询、更新,而数据查询是我工作中会经常用到的。
三、外键
1、表的约束有
   主键约束、非空约束、自增长约束、默认值约束、外键约束
2、外键约束  foreign key 约束的是表与表之间的关系
3、创建外键约束:
   Create table dcs1(id int(4) primary key,name varchar(32)) engine=innodb;
   Create table dcs2(sid int(4) primary key,sname constraint f_key foreign key(sid)
references dcs1(id)) engine=innodb;
4、主表子表之间的关系
①主表不存在的数据,在任何的子表当中无法插入与之相关的数据
        如果删除主表里的数据失败,报错提示存在一个子表里面有与之相关联的外键,就先删除子表数据,再执行上面删除主表数据的sql就能删除成功。
        ③创建外键约束,必须保证两个表有相同属性字段对应的相同数据
四、存储过程
1、创建存储过程
  ①创建无参存储过程
   drop procedure if exists dcs;#如果dcs这个存储过程存在的话就先进行删除
create procedure dcs()
begin
        drop table if exists qq;
        create table qq(id int(20) primary key auto_increment,score float(20));
        insert into qq values(1,56),(2,45);
        insert into qq values(3,46),(4,89);
        insert into qq values(5,86),(6,35);
End;
②创建有参存储过程 + if 条件判断 + while 循环
drop procedure if exists dcs;#如果dcs这个存储过程存在的话就先进行删除
create procedure dcs(n int)
begin
        declare i int(20);
        declare y int(20);
        drop table if exists qq;
        create table qq(id int(20) primary key auto_increment,score float(20));
        insert into qq values(1,56),(2,45);
        insert into qq values(3,46),(4,89);
        insert into qq values(5,86),(6,35);
        insert into qq values(7,90),(8,98);
        set i=(select count(*) from qq);
        if n=0 then
                        select count(*) from qq;
        else if n>0 && n<=i then
            select max(score) from qq;
        else  
                        while n>i do
                         insert into qq(score) values(66);
                         set i=i+1;
                 end while;
        end if;
        end if;
        select * from qq;
End;

分享至 : QQ空间
收藏

0 个回复

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