管理数据库对象(包含仿淘宝做数据库)

好久不见. 提交于 2019-12-15 19:52:42

管理数据库对象
一、 索引

  1. 作用:加快查询速度
  2. 创建
    1) 创建表同时创建索引
    create table student1
    (sno char(4),
    sname char(20),
    index ix_sno(sno asc));
    2) 在已经存在的表上创建索引
    create index ix_sno on student(sno desc);
  3. 查看 show index from student;
  4. 删除
    drop index ix_sno on student1;
    二、 视图
  5. 定义:从一个或多个基本表或视图中导出的虚表。
  6. 作用
  1. 简化对数据的操作。
  2. 自定义数据。
  3. 数据集中显示。
  4. 导入和导出数据。
  5. 合并分割数据。
  6. 安全机制。
  1. 创建(修改)
    Create(alter) view 名字
    As
    Select语句
    举例
    创建视图v1,其内容包括学生学号、姓名、课程号、课程名、成绩;
    create view v1
    as
    select student.sno,sname,course.cno,cname,grade
    from student join sc on student.sno = sc.sno
    join course on sc.cno = course.cno;
  2. 查看
  3. 使用
    select *
    from v1
    where sname = ‘刘晨’;
    对视图的增删改是有限制的
    出错实例:
    insert into v1
    values(‘2222’,‘h’,‘c01’,‘java’,80);

create view v3
as
select sno,avg(grade)
from sc
group by sno;

update v3
set avg(grade) = 80
where sno = ‘0001’;

create procedure p5(in sid char(4),in cid char(3),in grad int)
begin
insert into sc
values(sid,cid,grad);
end//

  1. 删除
    drop view v1;
    三、 存储过程
    1. 定义
    2. 作用
    3. 创建和调用
    delimiter //
    例子1
    create procedure p1()
    begin
    update student
    set sage = 18
    where sno = ‘0001’;
    end//

call p1()//
例子2
create procedure p2(in sid char(4))
begin
update student
set sage = 18
where sno = sid;
end//

call p2(‘0002’)//
例子3
create procedure p3(in sid char(4),in nl int)
begin
update student
set sage = nl
where sno = sid;
end//

call p3(‘0001’,20)//
4. 查看
5. 删除
四、 触发器
1. 定义
2. 创建
举例1
create trigger tr1
after update on student for each row
begin
if new.sno != old.sno then
update sc
set sno = new.sno
where sno = old.sno;
end if;
end//
举例2
仿照淘宝做数据库 (原数据在触发器例子数据表)
mysql> create trigger try5
-> after insert on perchase for each row
-> begin
-> update capital
-> set balance=balance - new.mount*(select price
-> from goods
-> where gid=new.gid)
-> where id =new.id;
-> end//
Query OK, 0 rows affected (0.08 sec)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!