mysql创建索引视图_mysql中创建视图、索引[通俗易懂]

mysql创建索引视图_mysql中创建视图、索引[通俗易懂]数据库的三级模式两级映射:存储文件——>基本表—–>视图内模式——->模式——>外模式一、视图1、什么是视图:视图是从一个或多个表中导出来的表,是一种虚拟存在的表。视图就像一个窗口,通过这个窗口可以看到系统专门提供的数据。这样,用户可以不用看到整个数据库中的数据,而之关心对自己有用的数据。数据库中只存放了视图的定义,而没有存放视图中…

大家好,又见面了,我是你们的朋友全栈君。

数据库的三级模式两级映射:

存储文件——>基本表—–>视图

内模式   ——->模式   ——>外模式

一、视图

1、什么是视图:

视图是从一个或多个表中导出来的表,是一种虚拟存在的表。

视图就像一个窗口,通过这个窗口可以看到系统专门提供的数据。

这样,用户可以不用看到整个数据库中的数据,而之关心对自己有用的数据。

数据库中只存放了视图的定义,而没有存放视图中的数据,这些数据存放在原来的表中。

使用视图查询数据时,数据库系统会从原来的表中取出对应的数据。

视图中的数据依赖于原来表中的数据,一旦表中数据发生改变,显示在视图中的数据也会发生改变。

2、视图的作用:

(1)、使操作简单化,可以对经常使用的查询定义一个视图,使用户不必为同样的查询操作指定条件

(2)、增加数据的安全性,通过视图,用户只能查询和修改指定的数据。

(3)、提高表的逻辑独立性,视图可以屏蔽原有表结构变化带来的影响。

3、视图操作sql:

创建视图:

create  view viewName(参数列表/可以不写这样就是默认和下面的select一样)

as select * from   表名;

例1:

(1)、create  table viewdemo(id int primary key , name char(10),score  float);

(2)、create  view  view1

as select* from  viewdemo;

(3)、create view view2(name,score)

as select name ,score from  viewdemo;

修改视图:

alter  view  viewname (columns)  as  select columns from   tableName ;

例:

alter view  view2 (id ,name)  as select  id,name from  viewdemo ;

删除视图:

drop  view if exists  view  name;

列:

drop   view  view2;

二、索引

1、什么是索引

索引是一个单独的、存储在磁盘上的数据库结构,它们包含着对数据库表里所有记录的引用指针。

MySQL中索引的存储类型有两种:BTREE(树)和 HASH(哈希),具体和表的存储引擎有关。MyISAM和InnoDB存储引擎只支持BTREE索引。

2、索引的好处

适当使用索引能提升数据库查询速度!

3、实例:

在创建表的时候创建索引

CREATE   TABLE  表名  [  列名称  数据类型 ]

[  UNIQUE  |  FULLTEXT  ]   [  INDEX   |   KEY    ]    [  索引名称  ]   ( 列名称  [  length  ]  )  [  ASC | DESC ]

说明: UNIQUE  、 FULLTEXT  为可选参数,分别表示唯一索引、全文索引;INDEX 与 KEY为同义词,两者的作用相同,用来指定索引;

(1)、普通索引(index): 普通索引是MySQL的基本索引类型,允许在定义索引的列中插入重复值和空值

例:

CREATE  TABLE book

(

bookid   INT  NOT  NULL,

bookname VARCHAR(100)  NOT  NULL,

authors  VARCHAR(100)  NOT  NULL,

info  VARCHAR(500) NULL,

year_publication   YEAR  NOT  NULL,

INDEX(year_publication)

);

(2)、唯一索引(unique):唯一索引列的值必须唯一,但允许有空值。主键索引是一种特殊的唯一索引,不允许有空值。

例:

CREATE TABLEbook

(

id  INT  NOT  NULL,

name  CHAR(50)  NOT  NULL,

UNIQUE  INDEX   UniqueIdx(id)

);

(3)、联合索引:组合索引即是在多个列上创建索引。查询时,只有在查询条件中使用了这些字段(创建组合索引的时候指定的哪些列)的最左边字段时,索引才会被使用。

CREATE TABLE student

(

id  INT  NOT  NULL,

name  CHAR(50)  NOT  NULL,

age  INT  NOT  NULL,

info  VARCHAR(200),

INDEX   MultiIdx(id,name,age)

);

(4)、全文索引:MySQL只有MyISAM存储引擎支持FULLTEXT索引,并且类类型为CHAR、TEXT、VARCHAR。并且需要指定表的存储引擎为MyISAM。

例:

CREATE TABLE t4

(

id  INT  NOT  NULL,

name  CHAR(50)  NOT  NULL,

age  INT  NOT  NULL,

info  VARCHAR(200),

FULLTEXT INDEX   FullindexName(info)

) ENGINE = MyISAM ;

在已经存在的表上创建索引:

语法:

ALTER  TABLE  table_name  ADD  [  UNIQUE  |  FULLTEXT  ]   [  INDEX   |   KEY    ]

[  inex_name  ]  (col_name [ length ] ,…)  [ASC | DESC ]

(1)、普通索引:ALTER  TABLE  book  ADD  INDEX        indexName( bookname(30) );

(2)、唯一索引:ALTER  TABLE  book  ADD UNIQUE INDEX  UniqueIdx( bookid );

(3)、组合索引:ALTER  TABLE  book  ADD  INDEX  BkAndInfoIdx( authors(20), info(50) );

(4)、全文索引:ALTER TABLE t6  ADD  FULLTEXT  INDEX infiIdx(info);(前提是这个表的存储引擎为 MyISAM)

使用 create  index  创建索引:

语法:

CREATE   [  UNIQUE  |  FULLTEXT  ]   [  INDEX   |   KEY    ]INDEX  index_name

ON   table_name ( col_name[ length ] , … )  [ASC | DESC ]

例:在表book的bookname字段上建立名为BkNameIdx的索引。

CREATE INDEXBkNameIdx   ON   book (bookname);

例: 在book表的bookId字段上建立唯一索引。

CREATE   UNIQUE    INDEXUniqueIdx    ON   book (bookId);

4、删除索引:

(1)、ALTER   TABLE  table_name   DROP   INDEX  index_name;

(2)、DROP    INDEX     index_name   ON  table_name ;

5、总结:

这样我们的视图和索引就建立了,是不是建立了视图我们可以使用show table 来查看,是不是已经建立了索引以及是不是有效我们也可以使用explain select * from student where name=’sss’;来查看这样就会出现一张表其中就有select_type 看这里的查询类型我们就可以知道是不是建立的索引起效。

当我们建立了表、视图、索引之后如果你想删除表则要考略这样一个问题,即和这个表有关的所有对象都删除还是只

删除这个表;

cascade(级联)  restrict(限制)以上的事由这两个来完成。

delete  table student  cascade;   删除所有和student表相关的对象(视图、索引、触发器、、、)。

delete table student  restrict ; 只是删除了student表。

解释: 聚簇索引就是逻辑顺序和物理顺序保持一致,所以只能建立一个聚簇索引,但可以建立多个唯一索引等。

索引: rdbms 中索引一般采用b+树、hash索引来实现,b+树索引具有动态平和的有点,而hash索引具有快读查找的特点。索引是关系数据库的内部实现技术,属于内模式的范畴。

注意点: 在insert 中一般大家都会省去要插入的属性列的列出但是这样有一个影藏的危险,就是当你插入的数据一个相互兼容或者是相同类型的时候,你只要输入就可以。这样不好,我们要在插入的时候吧每个列列出来这样的话就安全多了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/163036.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月22日 下午4:36
下一篇 2022年7月22日 下午4:46


相关推荐

  • Qwen Code CLI:让命令行直接听懂人话

    Qwen Code CLI:让命令行直接听懂人话

    2026年3月13日
    4
  • java script的基础理解以及常规的使用注意事项「建议收藏」

    java script的基础理解以及常规的使用注意事项「建议收藏」js:javascriptjs一种具有函数优先的轻量级,解释型或即时编译型的高级编程语言。虽然它是作为开发Web页面的脚本语言而出名的,但是它也被用到了很多非浏览器环境中,JavaScript基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式(如函数式编程)风格。Netscape管理层希望它外观看起来像Java,因此取名为JavaScript。但实际上它的语法风格与Self及Scheme较为接近。在语句上还是有一些类似之处,但本质上还是很不一样的:js是基于对象的,边解释边执

    2022年7月7日
    25
  • circos 可视化手册- text 篇

    circos 可视化手册- text 篇欢迎关注微信公众号 生信修炼手册 不论是 heatmap 还是 scatter histogram 反应的都是基因组上某段区域对应的 value 值的分布 这里的 value 都是数值 对于 value 是字符串的情况 专门定义了 text 这种图表类型 用于展示 看一个 text 的实例 text 在图上就是一圈的字符串标记 字符串可以添加连线 表明对应的染色体位置 配置文件的写法如下 首先看下 fil

    2025年6月15日
    4
  • java dom4j读取xml_java dom4j解析xml用到的几个方法

    java dom4j读取xml_java dom4j解析xml用到的几个方法搜索热词1.读取并解析XML文档:SAXReaderreader=newSAXReader();Documentdocument=reader.read(newFile(fileName));reader的read方法是重载的,可以从InputStream,File,Url等多种不同的源来读取。得到的Document对象就带表了整个XML。读取的字符编码是按照XML文件头定义的编…

    2022年7月26日
    10
  • 深入理解Java自定义注解(二)-使用自定义注解

    深入理解Java自定义注解(二)-使用自定义注解

    2022年3月12日
    57
  • mysql基本操作_MySQL创建数据库表

    mysql基本操作_MySQL创建数据库表1、数据库简单来说,所谓的数据库就是存储数据的容器,而且是永久存储的。2、为什么需要数据库3、为什么要学习MySQL数据库最早MySQL数据,瑞典AB公司开发的一款开源型的关系型数据库。随着时间的推移,瑞典AB公司把MySQL数据库转让给Sun公司(Java语言的创始公司)后来,Sun公司经营不善,又把MySQL数据库转让给甲骨文公司(Oracle数据库)4、数

    2022年10月6日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号