首页 > 其他分享 >10)索引、视图

10)索引、视图

时间:2023-05-29 16:11:34浏览次数:43  
标签:10 索引 index 视图 stu student vw

一个数据库可以创建多个索引;为了提升效率,索引需排序;索引会占用额外空间;(索引可以看作 字典的检索目录)

索引和约束:

系统会自动为主键、唯一和外键字段创建索引;

索引选取原则:

 

 创建数据库测试;

 

1、创建索引:两种方法;

  1)创建表的同时创建索引:

create table 表名(
    字段名1 数据类型[约束条件],
    ...
    [其他约束条件],
    [unique|fulltext] index [索引名](字段名[(长度)])
);

  2)在已有表上创建索引:

create [unique|fulltext] index 索引名 on 表名 (字段名[(长度)]);

2、查看索引:

show index from 表名\G

3、删除索引:

drop index 索引名 on 表名;

 

例如:我们新建一个学生表stu;

create table stu select * from student;
create unique index ix_stuno on stu(student_no);#多了一个pri主键索引;

第一行首先复制一张表;数据都会复制;但是约束类型没有;第二行,我们增加一个pri主键,并创建索引;

接下来我们显示索引号;

show index from stu\G  #按列显示

table表示表名;

Non_unique表示唯一值,则为0,若有重复值,为1;

key_name表示索引名称;

Seq_in_index:索引序列;

column_name表示该列的字段名称;

collation表示列以什么方式存储再索引中,其中A表示升序;

cardinality表示唯一值数目的估计值;

sub_part表示 整列做索引则为null,若是部分做索引,则为创建索引时的长度;

packed表示关键字如何被压缩;

nul表示是否有空值;

index_type表示使用什么方法创建索引,此处是b树;

 

接着我们删除这个索引;

drop index ix_stuno on stu;

 

 4、创建视图:

视图中保存的仅仅是一条select语句,该select语句的数据源可以是基表,也可以是另一个视图;

create view 视图名[(视图字段列表)]
as
    select语句;

  

例如:对新表stu执行创建视图操作;

create view vw_stu(学号,姓名,联系方式)
as
    select student_no,student_name,student_contact from stu;

要注意,对视图 的增删改查就是 对源表的 增删改查 ;这是针对单张表的,这种情况一定正确;

insert into vw_stu values('2023007','小白','2220000007');

 

update vw_stu set 姓名='大白' where 学号='2023007';

 但是针对 连接表的情况:增删改查不一定正确;

create table cls select * from classes;
create view vw_stu2
as
    select s.student_no,s.student_name,c.class_name
    from student s,classes c
    where c.class_no = s.class_no;

 执行 插入、删除操作:可以发现都报错;

insert into vw_stu2 values('2023001','三张','2023自动化2班');
delete from vw_stu2 where student_no='2023004';

 但是执行更新操作:发现可以操作,但是不一定每次都成功;

update vw_stu2 set class_name='2023机械1班' where student_no = '2023003';

 当们执行下面更新操作时,就发现是错误的;他把两个自动化1班的都变为机械1班;

 

5、查看视图:

使用查看表结构的方式查看视图的定义:

desc 视图名;

我们在系统数据库 information_schema 的 views 存储了所有视图的定义;

 我们查看views中我们创建的vw_stu 视图;

use information_schema;
select * from views where table_name='vw_stu'\G

 

6、删除视图:

drop view 视图名;
drop view vw_stu;

 

7、视图的作用:

使操作变简单:可以简化数据查询操作;

避免数据冗余:由表派生出来许多视图,这些视图只由用户关心的那部分组成;

增强数据安全性:派生出来的视图,用户只能修改自己对应的那部分;

提高数据的逻辑独立性:数据库表和视图之间实现一定的隔离;

 

标签:10,索引,index,视图,stu,student,vw
From: https://www.cnblogs.com/xuan01/p/17439637.html

相关文章

  • FX110网:澳大利亚商人遇杀猪盘被骗30万美元
    近日,一位54岁的澳大利亚昆士兰商人遭遇杀猪盘,被骗走30万美元。这位名为保罗·里德(PaulReed)的受害者表示,他在LinkedIn账户上认识了一位女网友,对对方很有好感。“它有点像友谊,然后开始变得有点沉重。”在关系变得亲密后,她说她需要海外人士的帮助才能从理应属于她的银行账......
  • win10 卸载docker 干净
    百度搜到的不多,看了这一篇,测试可行感谢https://blog.csdn.net/weixin_41517074/article/details/128653118$ErrorActionPreference="SilentlyContinue"kill-force-processname'DockerforWindows',com.docker.db,vpnkit,com.docker.proxy,com.docker.9pdb,mo......
  • vm -版本 16.2.3 - 将win10 指定磁盘文件夹挂载为linux【centOS 7】的共享磁盘
    1.vm配置win10磁盘指定文件夹为共享文件夹, 16.2.3版本不需要安装vm-tools 2.在linux开启共享文件夹执行指令sudovmhgfs-fuse.host://mnt/hgfs-osubtype=vmhgfs-fuse,allow_other如果报错这是因为 /mnt/hgfs 文件夹已经存在不需要理会,已经开启共享了在  /......
  • super()在 Django 模板视图中使用
    Django模板视图用于呈现HTML模板并将数据传递给它们以供显示。super()您可以在Django模板视图中使用,轻松地从父模板视图继承属性和方法,并根据需要自定义或扩展它们。Django模板视图的一种常见用法super()是在get_context_data方法中,该方法用于将数据传递给模板以进行渲染。......
  • windows10 没有应用商店
    查找包名:运行Get-AppxPackage-allusers|SelectName,PackageFullName找到对应的名称  运行下面:注意替换包名Add-appxpackage-register"C:\ProgramFiles\WindowsApps\Microsoft.WindowsStore_11910.1002.5.0_x64__8wekyb3d8bbwe\appxmanifest.xml"-disabledev......
  • 1.5万字+30张图盘点索引常见的11个知识点
    大家好,我是三友~~今天来盘点一下关于MySQL索引常见的知识点本来这篇文章我前两个星期就打算写了,提纲都列好了,但是后面我去追《漫长的季节》这部剧去了,这就花了一个周末的时间,再加上后面一些其它的事,导致没来得及写不过不要紧,好饭不怕晚,虽迟但到,走起,开干!对了,本文主要是针对Inn......
  • MySQL索引(一)
    雨喝醉了,小路摇摇晃晃,倒在我怀里1,B树和B+树之间的区别是什么?2,Innodb中的B+树有什么特点?3,什么是Innodb中的page?4,Innodb中的B+树是怎么产生的?5,什么是聚簇索引?6,Innodb是如何支持范围查找能走索引的?7,什么是联合索引?对应的B+树是如何产生的?8,什么是最左前缀原则?......
  • 10ArrayList&学生管理系统
    1.ArrayList集合和数组的优势对比:长度可变,自动扩容。添加数据的时候不需要考虑索引,默认将数据添加到末尾1.1ArrayList类概述什么是集合​ 提供一种存储空间可变的存储模型,存储的数据容量可以发生改变ArrayList集合的特点​ 长度可以变化,只能存储引用数据类型。在存......
  • SpringMVC学习系列(10) 之 异常处理
    在项目中如何处理出现的异常,在每个可能出现异常的地方都写代码捕捉异常?这显然是不合理的,当项目越来越大是也是不可维护的。那么如何保证我们处理异常的代码精简且便于维护呢?这就是本篇要讲的内容—>异常处理。在SpringMVC中我们可以通过以下2中途径来对异常进行集中处理:一.继承Han......
  • [AGC010B]Boxes
    AGC010BBoxes先将题目转换成正着的,即由全\(0\)变为给定的序列。操作次数为\(k=\dfrac{\suma_i}{n(n+1)\div2}\)。条件\(k\)必定是整数很显然。这道题的重点在于这个增加的数列是一个等差数列,考虑到这样差分数组十分方便,对\(a\)原地差分,设以\(i\)为起点做一次操作,进......