avatar

MySQL总结(四)

索引与视图是数据库中极其重要的部分,限于篇幅仅介绍有关语句,日后单独对索引视图进行总结

五、索引

创建索引

  1. create index语句
    1
    2
    3
    4
    5
    create index index_stud
    on mytest.student(student_name, student_id ASC) // 指定索引按照升序来排列
    using btree; //使用B树索引

    show index from mytest.students;
  2. create table
    1
    2
    3
    4
    5
    6
    7
    8
    9
    create table course
    (
    course_id int not null,
    course_name char(50) not null,
    course_place char(50) null,
    course_teache char(50) null,
    primary key(course_id),
    index index_course(course_name)
    );
  3. alter table语句
    1
    2
    3
    4
    5
    alter table mytest.course
    add index index_place(course_place)
    add unique [index|key] [索引名] [索引类型] (列名,...)
    add primary key [索引类型] (列名,...)
    add foreign key [索引名] (列名,...)

查看索引

  1. 1
    show index from course from mytest

删除索引

  1. drop index语句
    1
    drop index index_place on mytest.course
  2. alter table
    1
    2
    alter table mytest.students
    drop index index_students

视图

创建和删除视图

  1. create view <视图名> as <select语句>
    1
    2
    3
    4
    5
    6
    create or replace view mytest.students_view
    as
    select student_name,student_major,student_age,student_sex
    from mytest.students
    where student_sex='0'
    with check option //要对数据的修改符合条件
  2. drop view <视图1>[, <视图2>]
    1
    drop view students_view;

修改和查看视图定义

  1. alter view
    1
    2
    3
    alter view mytest.students_view
    as
    select student_name;
  2. show create view
    1
    2
    use mytest
    show create view students_view

更新视图数据

  1. 使用insert通过视图向基础表插入数据

    1
    2
    insert into mytest.student_view
    values('刘强','gis专业','19','0') //若此处为1,则插不进去数据,因为前面有with check option

    若有多个基础表,则插入失败

  2. 使用update语句通过视图修改基础表数据

    1
    2
    3
    update mytest.student_view
    set student_major='材料化学专业'
    where student_major='化学专业'

    依赖多个基础表,则一次视图修改只能改变一个基础表数据

  3. 使用delete语句通过视图删除基础表数据

    1
    2
    delete from mytest.student_view
    where student_name='王五'

查询视图数据

  • 简化复杂表连接
    1
    2
    3
    select student_name, student_major
    from mytest.student_view
    where student_name='高阳'
文章作者: Gy
文章链接: http://sgyat.cn/2020/02/17/MySQL(四)/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 年轻没有梦
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论