欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

118 Shangilicon Valley - Linux 云计算 - 网络服务 - 数据库 - MySQL 组成结构简介

最编程 2024-04-23 14:26:27
...
  • 00:01
    大家好,欢迎大家继续收看上硅谷的Linux云算视频,我是刘川老师。那么我们本节课呢,来讲一下关于关系型数据库当中的一些名词的一些解释。首先呢,第一个就是记录,所谓的记录就是一条数据记录那。一般情况下,在数据库当中,表当中的行。这条记录,一行就是一条记录,多行就是多条记录。一行一般会记录某一条信息,那某一条信息。然后呢字段,字段呢,在数据库当中呢,是列啊。我们的数据库当中的每一个列就称之为是一个字段。被一个列称之为一个字段,而这个时候在数据库中的这个列呢,不光是。记录的是同类型的数据。还要。要对记录的数据进行一个数据约束。这个列当中所记录的数据必须遵循什么样的一个条件,什么样的才能往这存,不符合标准的不能往这存。
  • 01:04
    不符合标准。不能往。举个例子啊,举个例子。刚才我们是不是有个表。那这就是一个字段,年龄是一个字段啊。性别是一个字段对吧,那我问你年龄这个字段能填汉字吗?能填汉字吗?写18岁。18岁。这样写行吗?不行,为什么?计算机不识别这种汉字的,18岁我们只识别数字。而且这个年龄,这个位置的年龄大小有没有限制啊。能写复数吗?不能。能写大于。咱就稍微宽泛点吧,能写大于200岁吗?一般不能,为啥?我们目前地球上应该没有超过200岁的人,比如超过200,超过150岁的应该都很。很少,甚至没有吧,我反正我是没有听说过,那这个地方你会发现我们这个列,或者叫这个字段是有一定的规则限制的,那比如说看这个字段。
  • 02:02
    这个字段也有规则限制什么呀。请问我们目前的性别是不是就凉了?是不是就是男和女?还有别的性别吗?比如说。人妖,那那那不算呀,那还是那。那变来变去还是某一个吗?还是具体某一个嘛,他不。你懂的啊,你懂的。所以说你像我们这些表格当中的字段都要有一定的一个这种。内容的这么一个约束和限制。好了,这就是关于记录和字段的一个概念。咱们看一下关于呃。数据库当中的数据类型。这个数据类型其实就是指的我们刚才那个字段上对于要存储到字段内的数据的一个限制。数据类型指的是对特定字段的一个所要存储的数据的数据规则。决定了数据保存在这个字段里的方式,包括分配给这个字段的一个宽度。以及是否可以保存字母数字啊,时间啊啊。
  • 03:05
    日期那种格式。我们对数据库字段的一个限制,那。任何数据啊。或者是数据的组合,都应该有数据的一个类型,用于存储字母。数字、日期、时间、图像、二进制等,那数据类型是数据本身的特征。我们把这个数据类型设计到或者说写入到这个字段上之后,这个字段就只能存储这一类型的。比如说。年龄这个地方。啊,年龄这个地方。我设置只能写数字,那这个里边就只能写数,你写别的就会报错。然后呢,来设置一下这个单的格式啊。然后这个地方有什么常规数值。货币啊。
  • 04:00
    这就是数据类型,你看。时间、日期等等。这就是数据类型。也可以自定义,比如说没写成数值。然后呢,你在里边打汉字啊。18。没有设置吧,设置啥。这个时候它是不生效的啊,当然它和我们正常那个数据库不太一样啊,它它不是去限制了,我们数据库里边会直接限制不让你写啊,直接限制不让你写,那这个我们可以用。比如说这个地方有个数值,小数点后几位,他说小数点会有两位,那比如说我们写一个有三位的啊。18点。0000。它就给你保存两位,为什么?这就是字段类型的一个约束和限制。啊,字段类型的约束和限制。当然我们拿Excel表格来做这个实验,还是有所这个区别的啊,正常的这个数据库肯定和它是不太一样的,但是差不许多。
  • 05:06
    所以说,数据类型是数据本身的一个特征和特性。被我们。我们把这个数据类型设计到这个字段之后,再往这个字段里存数据,就必须遵循这个数据类型。咱们来看一下我们这个,呃。My circle,注意是my circle常见的数据类型,我这个地方为什么要呃这个强调是my circle的数据类型呢?是因为不同的数据库里边所支持的这个数据类型啊,以及数据类型里边具体的一些要求啊,都不是特别一样啊,所以说这地方我就强调一下是MYSQL数据库的基础的一些数据类型,当然并不只有这么多啊,而且有非常多,我们就看三类字符串类型的,数值类型的和日期类型了。那字符串类型呢?常见的有叉类型和挖叉类型。差类型指的是零到255长度的某一固定长度的一个字这个字段。
  • 06:02
    比如说这个字段里边只能写入这个固定长度的。而挖差指的是零到25长度范围内,可以随便写长度。零也行,二五也行,只要是这个范围内就行,或者说我给你指定一个范围啊,我给你指定个范围。就是这个类型。然后呢,这个数值类型一般分为整数型和浮点型,整数型就是不带小数点的,浮点型就是带小数点。类型和float类型。而日期和时间啊。年月日TIME10分秒。当我们把这个某一个字段设置成date类型之后,那这个列当中只能写年月日格式。啊,当我们把某一个。字段设置类型,那这个字段只能写小点类型。这就是我们所谓的数据结构啊。数据类型不是数据。的数据类型。其实就是对字段的一个需要输入的内容的一个约束。
  • 07:03
    OK,那我们再来看一下关于MY的约束类型啊,MY约束类型,那约束呢,也是一种限制啊。他通过对表的行和列。做出对数据的一些限制和约束,那刚才那个已经其实对这个呃列,也就是说我们的字段做了一些约束了啊。但这个地方还是有些约束的,也是对数据写入到数据库当中的一些约束,那来确保我们数据在数据库当中的完整性和唯一性。这个约束比较多啊,比较多。有主键约束,有外键约束,有唯一约束,有非空约束和默认值。注意这个地方,这些东西,这些约束,也通通都是my circle类型的约束。其他类型的数据库不一定有,或者说不一定一样。OK,我们来看一下主见约束,所有的主见约束相当于是唯一约束和非空约束的组合,OK,那停,先不看主见,先来看什么呢?先来看唯一性,就是是啥。
  • 08:07
    所有的唯一性约束指的是我们指定的表的列。和列的组合,列好理解,就是一个字段嘛,列的组合是啥?就是多个字段嘛,多个列。不能重复。列或者列的组合不能重复,保证数据的唯一性,这叫唯一,啥意思啊?Excel表格里吧。姓名这一列就得设置唯一性约束,为啥?两个人姓名能完全一样吗?不能,为啥完全一样了,到时候我找的时候,到底是这个张三还是那个张三,还是那个张三。回想一下你在那个上学的过程当中,对吧?班级里边偶尔会遇到重名的,你们怎么来区分啊,大什么小什么对吧?出现三个出名的。比较奇葩的是,当年我和我老师出名了,对吧?
  • 09:01
    他叫刘川啊。当老师,我叫刘川当学生,基本上他很少叫我起来回答问题啊。幸亏当年我呢,在班里还是一个班*啊。每次偶尔叫我回答,叫我起来回答问题,他都。一个班级职务很少叫名,为啥很尴尬,感觉是在像叫自己,所以说你像在这个表当中,姓名这个位置基本上是不能够,不是基本是绝对不能够让他有重名的。绝对不能让出名的。当然啊,现实生活中会有什么,会怎么区分啊,靠别的信息来区分,为啥姓名重啊,别的不一定重啊,年龄不一定重啊,出生地址不一定重啊,对吧?你去咱们那个,呃,就是*局里边去找那个什么,去找那个某一人,你会发现在数据库里边找重名的一抓一大把,为啥?哎呀,中国人起名字就这样啊,就喜欢某一个名字特别流行,就喜欢什么现在这个什么子涵呀。什么这那的对吧,起个同名的太多了。
  • 10:03
    所以这个东西避免不了啊,但是呢,我们在进行一个设置的时候,咱咱就拿咱别说这个姓名了,咱就说这个账号。你玩游戏,游戏账号,游戏账号能重吗?不能,为啥重了?到底你俩以谁的为主啊?这就是唯一性约束。这个很好理解,那。违约数不能出现重复的值,但可以啊。但可以为多个空的值啊。可以为多个空的值。然后呢,同一个表可以有多个唯一约束,也就是说一个表里边。这个可以是唯一约束,这个也可以试,这个也可以试,这个也可以试,都可以试。下多个列组合的约束啊。也可以是。失之生重。是这种唯心约束,那在创建唯心约束的时候,如果不给唯一约束命名啊。认同。唯一约束不仅可以在一个表内创建,还可以在多个表创建唯一约束。
  • 11:04
    两个表里边儿。这个表里的这个列的唯一约束也对另外那个表生小,那个表里的这一列也不能和这个重复。这就是我们这个唯一性约束的一个。方式和概念,方式和概念。然后呢,我们再来看一下刚刚他说了是什么,嗯。唯一约束和非空约束,那咱来看一下非空约束,所有的非空约束很简单,就是确保当前列的值不为空,也就是说该字段里边不能有空值啊。非空约束一般只能出现在表对上,表对象的列上,表对象的列上啊,这个概念不太好理解啊,我们后期来这个,呃。创建数据库的时候,来提一下这个概念就可以了。提下这个概念就可以。这就是非控制水。就说。这一列里边不能空着,必须得有内容。就和账号似的,账号不能空着,必须得有内容。
  • 12:00
    我们来看一下。主键约束,主键元束相当于唯一约束加非空约束,首先第一个是不能为空,第二个是还不能重复。主间源数不允许重复,也不允许出现空置。每个表最多只能有一个主键。建立主见约束,可以在列级别创建,可以在某一列。也可以在表级别充电啊。什么呀,多个表有一个唯一约束也是可以的。当创建主键约束时,系统会默认在所在的列或列组合上创建一个唯一的索引。索引概念后边讲,先不管这个。租金约束。概念很好理解了吧?先看外约束、外键约束是保证一个或两个表之间的参照完整性,外键是构建于一个表上两个字段或两个表上两个字段的一个参照关系。外键约束就不是一个表的事了,而是多个表之间,两个表之间啊。
  • 13:03
    这个A表和B表都有一个字段,这两个字,这两个字段的一个约束性啊,叫做外界约束。不是在同一个表里的约束,就是外径约束。再来看最后一个,叫默认default。这个N类型特征就是默认的所有的类型值都可以设置个NL。整数类型、浮点类型都可以视为。默认值。这就是我们的这个MYQ的约束类型。那MY的约束类型。啊,这些东西呢,都是在我们进行啊。就是数据库创建的时候,一个创建规则,那一个创建规则。我们再来讲一下什么叫MY的索引。刚才提到了这个。系统会默认在所在的列或列组上、列组合上创建一个对应的索引。OK,我们来看索引,索引是一个单独的。
  • 14:00
    物理结构啊。他这个索引在哪?这个索引和表是同一个级别的。那这个索引是和表是同一个级别的,它都存在数据库当中。它是某个表的一个字段,或者是若干个字段的一个集合,啥意思啊?我这个里边有十好几个字段。啊,十号几个字段,然后呢,有上万上千万条数据。上万上千万上数据,这个时候我如果想从这个表里边查询的时候,你会发现这个表特别大,打开都有点费劲。但是我想查询,怎么快速查询呢?我有个条件就是查名字,通过查名字查到那OK,由于这个表非非常大,列非常多,我如果想减少查询效率的话,就去减少了,就想加快查询效率的话,怎么办呢?就把这个表当中唯一约束创建成一个什么呢?创建成一个独立的一个表格,新的表格,比如说我把这个表里边这么多列,其中的某一列或某两列,某三列取出来,去创建成一个新的表。
  • 15:06
    出一个新的表。当我查的时候,我又从新表里边儿查,当从新表里边儿查到了,要查到那几条记录之后,再按照这个新的表里边查到那几个记录的信息,再来这个大表里边。再把完整信息取出来。它就是一个什么目录结构,你可以理解为索引就是一个目录。啊,你可以理解为索引就是一个。OK,把那个本来里边内容非常多的那个东西截取出一部分来,然后放入到一个什么啊。额外的地方通过查他来定位我们要查询的资源位置,然后再由定位到的资源位置,再去查具体的详细信息。啊,你看表的存储有两部分组成,一部分来自存放的数据,另外一部分来存放索引页面。那通常呢,索引页面相对应的数据页面要小很多。也就是说它只是。
  • 16:02
    完整表的某一小部分。啊,某一小分,那数据检索花费的大部分开销是磁盘读写啊。花费较小一些,那没有索引,就需要从磁盘上读取一个完整的一个表。啊,如果有索引就只需要查索引就可以了,所以合理的建立索引可以加快我们数据的一个检索过程,所检索就查询过程。这个好理解吧。所谓的啊。所以。就是为了加快数据的一个查询效率。所以说啊,一定要。对这个索引起到了一个重视啊,起到一个重视。好了,这是我们索引的概念,那我们再来说一下关于这个。他们的慢S的锁的概念,那慢S锁的概念。稍稍等一下,我折叠一下。
  • 17:00
    那的锁呢?是一种锁定结构,大家都知道我们数据库啊,是一个允许多用户。共同使用的这么一种什么数据集合结构?数据库可以由多个用户同时来进行对共享数据的一个使用啊,存取。当多个用户对同一个数据进行并行的一个读取的时候。这个时候就会产生。对同一个数据并发的这么一个情况。产生一个。并发的情况,同时来对同一个数据进行。操作的时候,这个情况就会。这个情况我们一般称之为对数据的并发操作。这种并发操作偶尔会对数据造成一定的这个什么呢?破坏啊或者说。是不一致性的调整。比如说张三往里写了个东西,李四同时往里写了个东西,那最终是把张三和李四哪一个作为标准写入到这个文件当中呢?就会出现这样的问题。
  • 18:03
    出新证的问题。就会破坏税的一致性。那么怎么保证这个事儿发生呢?加锁。加锁是实现数据库并发控制的一个非常重要的技术。怎么加锁?就是比如说张三、李四、王五三个人都要同时往里写,那OK,那假如说张三先写,张三写的时候就加个锁,那李四也想同时写不了了,王五也想同时写,写不了了。只只能有一个人在同一时间对这个表或者说对数据进行操作。这三个写入操作只能有一个先写这个人,写的时候是数据库是锁定了,这两个人写不了。但那也写完了。OK,然后李四再来写。李四写的时候又被锁定了,其他人写不了,李四写完再解锁王五的写,王五写的时候又锁定了,其他人都不能写,就这个意思。当事物在对某个数据对象操作之前,先向系统发起请求,对要进行操作数据进行加锁。加锁后的事物。
  • 19:03
    就对该数据有了一定的控制性。那该事物及释放之前,其他事物是不能对该。数据对象进行操作的。这就和什么一样。这就和。对吧。比如说公寓里边的那个。公共的那个洗衣机吧,啊,公共的洗衣机吧。想问你那个公寓里边投币式的洗衣机,张三扔了这个三块钱在里边洗衣服,呃,请问李四能同时往里扔三块钱在洗衣服吗?不能,为啥,你等李四洗,得等张三洗完了才能再进行洗。张三在洗的时候,那个洗衣机的状态是一个工作状态。我们可以理解为它是一个锁的状态。然后再往里边投钱也没有用啊。必须等张三洗完了,洗衣机闲置下来解锁了,然后再进行对这个数据进行第二波操作,那第二波操作谁使用谁锁定。
  • 20:04
    这就是数据库的锁的结构。啊,这个水果锁结果也相对比较好理解一些。OK,那我们继续来看。MYSQ的存储引擎,那MYSQ存储说到存储引擎,哎,我们来看这个我们之前总结的这个图。存储引擎呢?我们给它定位到是什么呢?是表示层和物理层之间的一个层次。那么对比着来看啊,文件系统当中的逻辑层叫文件系统类型,哎,ET cit FS叉FS这些,它的作用是用来干什么?用来将我们的文件保存到分区块,数据块或者扇区上的。那就如何将文件保存成数据块?这种数据,那同样我们如何把库表字段记录保存成SQL文件呢?谁说了算数据库的存储引擎,那我们数据库的存储引擎就类似于文件系统的,文件系统类型是一样的。
  • 21:00
    功能上起码理解为是差不多的。我们来看一下。存储引擎就是存储数据、建立索引、更新、查询数据等技术的实现方式,那存储引擎是基于表的,而不是基于库的啊。所以存储引擎也称为叫表类型,那orle呀,SQL server之类的只有一种存储引擎啊。然后呢?MYSL它是一个开源的,提供了很多插件式的,也就是说你想用什么来调用这个存储擎,就可以使用了插件式的存储擎,所以MYSQ有很多种类型存擎。它所有可以根据自己的需求去选择对应的存储性,或者自己来编写存储性也行,那。在MYSQL当中,MYQ的常见的特征有这么几个。Mysq is am运行。DB存memory DB。的一个村。第一个默认存储引擎啊。
  • 22:01
    然后呢,插入和查询,插入数据和查询的效率比较快,支持全文索引。然后呢,不支持事务啊。不只是事物,不是事物就麻烦很大呀,对吧。然后呢,有几所外界约束等功能。一诺DB呢支持事务,支持航机所支持为运输。Memory工作在内存当中啊。通过散列字段保存数据速度快,但是由于工作内存中不能永久保存数据,需要。在memory当中的数据持久化到我们的磁盘上,所有的持久化就是必须让它同步到我们磁盘上,以进行永久固定的保存。所谓的存储引擎。就是如何将。库表结构的这种数据保存成数据库文件的一个过程,或者一个一个这种要求啊,这种要求,这就是我们的存储引擎的一个特征。
  • 23:01
    那最后呢,我们来说一下什么叫事物。是我们之前已经简单解释过了啊,事务就是并发控制的一个基本单位啊,基本单位那可以把一系列要执行的操作称之为叫事务,而事务管理就是管理这些。物主的一个。管理工具管理工具。事务呢,一般定义成要么完全执行,要么完全不执行,经典的就是银行转账无从一个账号扣款,另外一个账号增款,那要么两个都执行,要么两个都不执行。不能一个扣了,另一个不增,那钱去哪儿了?被银行昧下了对吧,那肯定不行。所以说,一般情况下,一个事物就是多个事件的一个集合,那多个事件要么都完成,要么都不完成。否则数据就不一致了。啊,否则数据就不一致了。那看一下MYSO中,并不是所有的数据引擎都支持输入管理的,只有诺地利支持,所以说这个地方要选择一下啊,如果你想让你的这个数据在存储的时候支持存储引擎,支持数管理的这种功能,必须要选好存储引擎才可以。
  • 24:07
    没问题吧?好了,那那就是到此为止,我们的这个MY的理论基础就差不多了啊,当然并不是所有还有一些更高更深的,那么这个地方就先不讲了啊。就先不讲了。梅西,我先了解这个地方。一下关于数据库的理论基础部分,什么是数据库啊?数据库与文件系统区别以及常见的数据库有哪一些?以及我们关系型数据库my circle,注意这个地方强调是my circle的一些特征和结构介绍。表类型、数据类型、约束类型啊索引索、存储引擎、事物等。这些概念大家一定要去好好的去理解一下啊。好好的去理解一下。OK,那么本节课就到这儿了,我们下节课再见。