粉丝70获赞297

数据库是按照数据结构来组织、存储和管理数据的仓库,而数据库管理系统主要用于对数据库的操作和管理,是一种软件,比如 mysql 就是一种关系型数据库管理系统。 mysql 的安装方式有很多种,这里主要介绍三种常用的安装方式。 第一个是使用 maxcrow 官方提供的安装程序进行安装, maxcrow 的官网是 maxcrow 点 com, 进入官网之后,在页面顶部就可以看到一个下载的 tabeye, 点击一下就可以进入到下载页面,在页面的最下面有一个开源社区版的链接地址,点进来之后就可以看到各种系统对应的安装包, 右侧这一列是各种语言的驱动程序, a, p, i 和工具等等。当我们点击下载链接之后,他会提示我们登录二狗账户,点击这个不用了,谢谢,就可以直接下载了,也可以使用。第二种安装方式就是使用操作系统自带的包管理工具来安装,只需要在命令行中输入一条 instal 命令就可以了。最后一 种式使用刀口来安装也非常简单,只需要在命令行输入一条刀口, pro max girl 命令就可以自动下载并安装 max girl 了。后面也会为大家演示在 mac, linus 和 windows 上的安装过程,如果你已经安装好了,可以直接跳过这些。本节课内容就到这里,我们下节课再见。 max 系统推荐使用 homebrew 包管理器来安装,打开终端之后直接输入一条 install 命令就可以了。 需要注意的一点是,安装完成之后默认是不会自动启动服务的,需要执行一下下面的命令来启动服务,也可以使用下面的命令来设置为开机自动启动。 启动之后我们就可以使用命令行来连接一下 mysql 的服务,稍微解释一下这一行命令。 mysql 是一个命令行客户端的程序,我们刚刚启动的是服务端,现在我们要使用客户端来连接服务端后面的 杠 u, route 表示使用 route 用户来连接,杠 p 表示使用密码。登录回车之后就会提示我们输入密码。 max 系统中使用 home pro 来安装的 mysql 默认是没有密码的,直接回车就可以了。回车之后可以看到一个 msql 和一个大于号的提示符,就表示我们已经成功连接到了 msql 的服务端了。 这里可以输入一些 skr 语句来测试一下,比如我们可以输入一个用来查看 my skr 中有哪些数据库的语句, show date basis 就可以看到所有的数据库了,这些数据库都是 mysql 安装好之后默认创建的,可以使用 use 命令来切换到某一个数据库,比如我们切换到 mysql 这个数据库,然后再输入一个 show tables 命令,就可以看到数据库中有哪些表。还可以使用 select 命令来查看表中的数据, 比如就来查询一下 tablesprivate 这个表中的数据,回车之后就可以看到结果了。大家先不用关心这些语句的含义,这里 只是为了掩饰 mysql 的安装和使用,来让大家对 mysql 有一个初步的了解。后面我们会详细讲解 skl 语句的各种用法。除了自带的命令行客户端之外, mysql 还提供了一个可视化的图形化 gy 工具 mysql workbox, 它可以帮助我们更加方便的设计、创建和管理数据库表、用户等等。 可以到官网下载对应版本的安装包来安装,安装过程也非常简单, mac 系统的话直接双击安装包,然后把它拖到应用程序里面就可以了, windows 的话一路下一步就可以了。安装完成之后,双击打开 workbang。 左侧是一个导航菜单,包括三个部分,最上面这一个是连接管理器,可以用来创建和管理到不同的 maxcrof 段的连接。 点击加号就可以创建一个新的连接,比如我们来连接一下刚刚安装的 mysql 服务端。第一个字段是连接的名称,可以随意填写,这里就简单填写一个 local house 的,表示连接的 是本地的 msql 服务。连接方法,主机名、端口号和用户名都保什么人就可以了。然后点击一下下面的测试连接按钮,如果弹出成功页面的话,就表示配置没有问题,点击右下角的 ok 按钮之后连接配置就完成了。在页面上也能够看到刚刚添加的这个链接了,点击一下就可以连接到 msql 的服务端。 左侧是一个导航区域,里面有很多功能。最上面的部分是数据库管理,在这里可以查看服务器的状态管理用户和权限,数据导入导出等等。 导航区域的第二部分是实力管理,可以在这里执行服务的启动停止,查看运行日志和配置参数等等操作。 最后一部分是服务器的性能监控,可以查看服务器的运行状态、性能以及资源的使用情况。中间的部分是一个 sql 编辑器,可以在这里输入 sql 语句并执行,下面就会看到执行的结果。左侧菜单栏的第二个选项是一个模型设计工具, 可以用来设计和浏览数据库的压图。比如我们点进来看一下,可以看到它自带了一个 sakila 的数据库模型,这是 max q l 自带的一个演示数据库,用来帮助我们学习 max q l。 这里还有一个非常冷门的小知识点,就是 sakila, 也是 max l 的 logo 里面那个小海豚的名字。我们点击一下这个模型就可以看到数据库的压图了, 可以看到里面有哪些表表之间的关系是怎么样的,这样可以更加直观的了解这个数据库的结构。也可以在设计一个新的数据库的时候,使用这个工具来设计。右键点击某一个表,然后点击一下编辑按钮,就可以看到这个表的详细信息了,包括它的字段、缩影、逐渐等等。 最后一个选项是一个数据迁移工具,可以将其他数据库的数据迁移到 max q 二中,或者将 max q 二的数据迁移到另一个数据库中。除了 work 半句之外,还有很多其他的旧爱工具也非常好用,比如 debut work, navicate 等等,大家可以根据自己的喜好来 来选择。 dpr 是一个免费开源的数据库管理工具,它支持大部分的主流数据库,这个是官网提供的,支持数据库列表,只要你能抢到的数据库基本上都支持。还支持包括 windows、 mac、 linux 在内的多种操作系统,基本上完全可以满足日常的使用了,它的安装也非常简单, 可以使用包管理器来安装,也可以从官网下载安装包来安装。安装的过程这里就不演示了,除了免费开源的社区版之外,也提供了功能更加强大的专业收费版。 最后再介绍一下 navicat, 它是一个收费的数据库管理工具,功能方面和刚刚的两个工具基本相同,支持大部分的主流数据库,但是都是收费的,而且每个数据库都提供了单独的版本,比如你用 mysql 的话,需要单独购买 mysql 的版本, 那过两天你要想用 mongodb 的话,不好意思你还得再重新购买 mongodb 的版本,或者你也可以购买一个更贵的包含所有数据库的专业版。 niket 的安装也非常简单,时间关系 这里就不演示了,大家可以自己去官网下载安装包,然后安装就可以了。 linux 系统上的安装过程和 mac 类似,也是推荐使用包管理工具来安装,不过不同的 linux 发行版的包管理工具不太一样,比如五版图的 a p t center s 的 m, vidora 的 dnf 等等,但是安装命令都是类似的,后面加上 install, 然后加上 messacle gun server 就可以了。 或者也可以到官网下载对应版本的 rpm 包,然后再手动指定这个包来安装也是 ok 的。下面就以无斑图系统作为例子,来演示一下安装的过程。 输入 instal 命令之后会提示我们是否继续安装,输入 y 之后就会开始下载和安装了,这里我们需要稍微等一下,安装完成之后会自动启动 msql 的服务,可以使用下面的命令来查看服务的状态,看到这里显示的 active 就表示服务已经启动成功了,如果没有启动的话,也可以使用下面的命令来手工启动一下 下。这里说一下很多同学经常会遇到的几个问题。第一个就是 note 用户密码的问题,和麦克上不同的是,另一个系统安装完成之后默认是有密码的,如果密码错误的话,当然也就无法连接到 msql 的服务。 乌斑图系统上的话,可以找到这个位置的这个配置文件,它里面记载了一个默认的用户名和密码,那我们就可以使用这个用户名和密码来连接到 msql 的服务。在命令行终端输入 msql 杠 u 后面加上配置文件中的用户名,后面再加上一个杠 p, 然后复制一下密码,回车之后就可以连接到 msql 的服务了。 但是这个用户名和密码都不太好记,如果每次都需要到这个软件里面找一下用户名和密码,也是非常麻烦的。这就是我们的第二个问题,可不可以修改一下 rot 用户的密码,然后直接使用 rot 用户来连接呢?当然是可以的,连接到 msql 的服务之后,就可以使用下面的语句来修改 rot 用户的密码了,这里需要稍微注意一下,修改密码的语句在 不同的 msq 版本上是不同的,如果你使用的是五点七以下的版本,那么使用上面两行命令是可以的。如果你使用的是比较新的五点七点九之后的版本,那么上面这两行语序就不可以了, 因为帕索尔的字段和帕索尔的函数都被废弃了,密码的加密方式也发生了变化,需要换成下面的语句来修改密码。最后不要忘记执行一个 flash 命令来刷新一下权限,然后就可以使用新的密码来登录了。 第三个问题是关于 maxcare 服务的监听地址的,很多时候数据库服务是需要单独安装在远程服务器上的,为了方便,我们一般也会使用 workbench 或者 navycat 这样的可视化的客户端工具来连接到远程的 maxcare 服务,但是在刚刚安装好之后,经常会提示无法连接。 这种情况一般有几个常见的原因。首先第一个就是可能你的福气并没有开放三三零六端口的访问,可以放开三三零六端口的权限,如果在开放环境使用的话,也可以直接关闭防火墙。第二个就是 数据库中的 rot 用户默认是没有开放远程访问的权限的,可以使用下面的语句来查看一下 rot 用户的权限。如果结果中 hot 字段的内容是 local hot 的话,就表示这个用户只能在本地访问。 可以使用下面的语句把耗子的字段的值改成百分号,然后就可以在任何地方访问了,但是这样也会带来一定的安全风险,所以不建议在生产环境中修改成这样的配置。 最后还有一个是关于配置文件中的监听地址的,默认情况下, myscal 服务至监听本地的 ip 地址,这样的话从外部也是无法连接到 myscal 的服务的。不同系统的配置文件位置也会有所不同,详细请参考我们的笔记文档。 使用 vi 打开这个配置文件之后,向下找到一个 bid drives, 也就是绑定地址这个位置。这两行配置是用来设置服务监听的, ip 地址的默认是指监听本机的 ipd 值,这样我们从外部是无法连接到 maxcrow 的服务的。可以把这两行后面的幺二七点、零点零点一 改成四个零,表示监听所有的 ip 地址,然后保存退出,再重启一下 myscal 的服务,然后再到 g u i 工具中修改一下配置,使用 note 用户登录测试一下, 可以看到已经成功登录到了 mysql 的服务端了。最后我们再来看一下 windows 系统上的安装过程, windows 安装过程比较简单,从官网下载好安装包之后,基本上一路下一步就可以了。 首先选择一个安装类型,可以选择默认的开发者类型,这样除了 mysql server 之外,还会帮我们安装图形化界面、 workbench 以及 share 和 rooter 等工具。当然也可以选择只安装 server, 点击执行按钮之后就开始安装了, 然后一路下一步就可以了。和 mac 或者 linux 系统上不同的是,中间会有一部提示我们设置 note 用户的密码,也就是后面我们登录 max k 二服务设 需要使用的密码。安装完成之后会自动启动 mascal 服务,我们可以使用自带的命令行客户端来连接一下,启动之后输入刚刚安装时设置的密码,然后就可以看到熟悉的 mascal 命令行客户端了。 mexico style 是一个交互式的 g s python 和 s g l 的终端,可以用于执行数据库管理任务,它提供了自动语法、高量语法检查、自动完成和上下文的感知的提示,从而提高了开发人员和 dba 的生产力。它的安装非常简单,直接从官网下载对应版本的安装文件,然后一路下一步就可以了。 安装完成之后,可以在命令行中输入 myscls h 命令来启动。看到命令提示符左边变成了这样,带有背景颜色的 myscl 和 gs 就表示启动成功了。 messico shire 的命令都是以反斜线开头的,比如反斜线 help 命令,可以查看帮助信息。反斜线 connect 命令可以连接到 mecco 数据库, 比如来连接本地的 mascal 服务器的话,就可以输入反斜线 connect, 后面加上空格,然后写上 root at locals 就可以了。回车之后会提示我们输入密码。输入之后就可以看到左边的命令提示符多了一个灰色背景的部分,表示已经连接到了本地的 maxcal 服务器了。 连接之后他会提示我们目前并没有选择任何的数据库。可以使用反斜线 usb 命令来选择一个数据库,比如我们就来选择一下 game, 这个数据库就在后面加上库的名字就可以了。回车之后就能够看到左边的命令提示符,又多了一个 game, 表示当前选择的数据库,也就是我们在执行 s 杠语句的时候,都是在 game 这个数据库中执行的。 在 game 的后面还有一个 g s, 表示当前的语言是 javascript。 那之前我们也提到过 mexico shell 是支持 g s, python 和 s l 三种语言的,默认是使用 g s, 如果想要切换到其他语言的话,可以输入一个反斜线,后面直接加上语言的缩写 就可以了。比如反斜线 py 就可以切换到 python 语言,然后就可以在这里直接执行 python 的代码反斜线 sql 就可以切换到 sql 语言,切换到 sql 之后就可以在这里直接执行各种 skl 语句了,后面在终端或者 navicat 中执行 skl 语句的效果是一样的。 r 口官方还提供了一个 bscode mexico shell 插件,可以在 vscod 中直接使用 mecco shell。 打开 vscod 之后,在扩展中搜索 mecco 就可以找到这个插件了,直接安装就可以了。 安装完成之后,在导航栏就多了一个 masco show 的图标,点击这个图标就可以打开 mscoco 的终端来使用了。这个插件有点类似于 python 的猪皮特 notebook, 可以在这里执行 python g s 或者 sk 语句,执行之后的结果就会在下面显示出来。 亮点是所有执行过的语句都会被记录下来。 mexico shell 比较适合用来做一些数据库的管理工作,它可以通过编写一些日常经常重复使用到的脚本来提高工作效率, 比如备份数据库管理集群等等。如果你是一个开发人员,那么一个更加强大和方便的图形化工具可能更加适合你。本节课就到这里,我们下节课再见。 关系型数据库管理系统和非关系型数据库管理系统是两种不同的数据库管理系统。关系型数据库管理系统采用了关系模型来组织数据,借助于集合代数等数据概念和方法来处理数据,通过二维表来表示数据之间的联系, 二维表的每一行表示一条数据,记录每一列表示一个字段,也就是记录的某个属性。不同的表之间通过关联字段来建立联系,这种关联关系就是关系型数据库管理系统的特点。 mythical、 oracle、 host, grace、 xpl 等等都是常见的关系型数据库管理系统的代表。 与之相对的是非关系型数据库管理系统,他是对关系型数据库管理系统的补充和扩展。由于互联网的快速发展,仅仅使用关系型 数据库已经不能满足需求了,比如各种短视频、流媒体、地理位置信息、社交网络等等。这些数据的特点是数据量大,数据结构复杂,数据类型多种多样,这也就决定了关系型数据库管理系统并不能很好的处理这些数据,所以就出现了非关系型数据库管理系统。常见的非关系型数据库有下面这些。 c 口是一种用来操作关系型数据库的语言。在关系型数据库中,数据一般都是以表的形式来存储的, c 口可以用来操作表中的数据。几乎所有的关系型数据库都支持 c 口。 在之前的 mac 口安装以及常见问题那一节,其实你已经接触过一些 c 口语句了,比如更新骆驼用户密码以及防权限时使用的 update 语句,查询用户时使用的 c like 语句。你可以在 mac 口的客户端命令行中直接输入这些语句, 也可以在可视化的旧爱工具,比如 work on 曲或者 narrative cat 中执行这些语句。一般来说, c 口语句并不区分大小写,但是为了提高可读性, 我们一般会把关键字大写,把表名、列名和其他名称小写。按照功能的不同, c 口语句可以分为以下几类。数据定义语言,用来定义数据库对象,比如数据库表列等等。相关的关键字包括 great, job, altar 等等。 数据操作语言,用来对数据库中的记录进行新增、删除或者修改。关键字包括 insert, delete 和 update 等等。数据查询语言,用来查询数据库中的记录。关键字包括 select 和 where 等等。 数据控制语言,用来定义数据库的访问权限和安全级别,以及创建用户等等。关键字包括 grant 和 revok。 下面我们就从创建一个数据库开始,一步一步来学习一下 c 口语句的使用。 可以在 mac c 口的命令行客户端或者 g u i 工具中执行一个 created based 语句来创建一个数据库。比如老杨如果想要开发一款游戏的话,那么首先必须要创建一个数据库,用 用来存储游戏中的各种数据,那我们就来看一下如何操作。首先连接到客户端之后,输入一下 show databases 来查看当前已经存在的数据库,可以看到现在有四个数据库。然后我们来创建一个名字叫做 game 的数据库,在命令行输入 create database, game 回车之后,数据库的创建就完成了,然后再输入 show databases 来查看一下,可以看到现在就多了一个 game 的数据库,如果你不习惯使用命令行的话,也可以在 gui 工具中执行这个语句,结果是一样的。 在之前的课程中,我们介绍了 organg 的使用,为了让大家多接触一些不同的工具,这节课我们就来看一下 navycat, 每个人的喜好也是不同的,这里你可以使用任何你喜欢的工具。 打开 nv 开的之后,先来点击左上角的连加钮来新建一个连接,数据过类型选择 mc 孔,输入连接信息之后点击测试连接,如果没有问题的话就可以保存链接了。然后在左边的连接列表中就可以看到我们刚刚创建的连接, 这样以后就可以直接双击来连接到这个 mc 口的福气了。连接之后就会显示出所有的数据库,包括我们刚刚创建的 game, 这个数据库双击一下就会进入到这个数据库中,能够看到它里面的表视图和存储过程等等内容。 由于这个数据库是刚刚创建的,所以里面还没有任何内容,点击一下左上角的新建查询按钮,可以打开一个新的查询窗口, 在这里我们可以输入各种 c 口语句。和刚刚在命令行中执行一样,我们输入 sodat basis 来查看当前已经存在的数据库,然后点击一下上面的这个执行按钮,快捷键的话是 ctrl 加 r 或者 ctrl 加 r, 在下面就可以看到所有的数据库列表了,和刚刚在命令行中看到的是一样的。 删除数据库也非常简单,可以使用 drop database, 后面加上要删除的数据库的名字就可以了,比如来删除刚刚创建的 game 数据库的话,就可以输入 drop database 后面加上 game。 执行之后再来看一下,可以看 game 数据库已经被删除了,在左侧连接列表中还是能看到这个数据库,是因为界面并没有刷新,右键点击一下,在弹出菜单中选择刷新,刷新之后就看不到这个数据库了。 当然我们也可以使用 gy 工具来创建一个数据库,鼠标右键点击连接之后选择新建数据库,输入数据库的名字之后点击确定就可以了。下面两个选项可以不用填写,他们是用来设置自复题和排序规则的,然后点击确定就可以创建这个数据库了。 再来刷新一下连接列表,就可以看到刚刚新建的这个数据库了。我们也可以通过右键菜单中的选项来编辑或者删除这个数据库,也是非常方便的。时间关系这里就不演示了。 有了数据库之后,我们就可以在数据库中创建表了。在创建表之前,我们需要先使用右词语句来选择一个数据库,比如这里我们就选择使用 game 这个 数据库,那么就输入 use game, 然后点击执行或者使用快捷键来执行一下。执行之后就可以看到左侧的连接列表中 game 数据库被加速显示了,表示我们当前正在使用这个数据库,也可以在上面的下拉列表中直接选择 game 数据库也是一样的。然后就可以使用 create 语句来见表了, create 后面加上一个 table 关键字,然后加上一个表的名称,最后加上一对括号,括号中是字段的名称和数据类型, 字段之间用逗号隔开,最后一个字段后面不需要加逗号。比如我们要做的游戏中需要一个玩家表,表中就需要包含玩家的 id、 名字、等级、经验、金币等等信息, 那么就可以输入 create, 后面加上一个 table 的关键字,然后加上一个表的名称,比如 player 后面加上一对括号。括号中首先是玩家的 id 是一个整数,然后是名字是一个字符串,大小是一百个字符,然后是等级也是一个整数,再加上一个同样是整数的 的经验值,最后是一个时间值,数值类型的金钱。这里就涉及到了 mecco 的数据类型。 mecco 中的数据类型大致可以分为五个大的类别,包括数值类型、日期和时间类型、字符串类型这些常用的传统类型,以及新增的阶层类型和空间类型。这两个新类型 每种类型也都包括一些不同的子类型,我们可以根据需要来选择,比如数值类型包括整数类型和浮点数类型。整数类型根据占用的存储空间的不同,又包括 tenniint、 spawn int, int 和 big int, 分别对应一到八个字节的存储空间,可以存储不同范围的整数。 浮点数类型包括 float 和 double, 分别对应四个字节和八个字节的存储空间,可以存储不同范围的浮点数。日期和时间类型包括 date, time、 day time 和 time。 stamp, 分别对应日期、时间、日期、时间和时间。戳字符串类型包括 chart, what chart, text 和 blob 等等,分别对应定长字符串、变长字符串文本 以及二进制数据。比如刚刚我们定义的 word 叉,括号一百就表示长度为一百的变长字符串,而 dancing mo 十到二二就表示长度为十,并且保留两位小数的十进制数值比较。新版本的麦 c 口还支持接线类型以及点线多边形等几何空间类型。 创建好表之后,我们可以使用 d e s c 语句来查看表的结构。 d e s c 是 describe 的说写,意思是描述用来描述表的结构。 比如如果想查看刚刚创建的 player 表的结构,就可以输入 dfc, 后面加上表明 player, 然后点击执行按钮或者按下快捷键 ctrl 加 r 或者 ctrl 加 r 就可以了。在下面的执行结果中就会显示出表的结构,包括表中每列的名称,数据类型是否允许为空,默认值等等。 如果我们创建表的时候发现表结构有问题需要修改的话,那么就可以使用 alt 语句来修改表结构。比如我们发现文家名字的长度可能不够,需要修改为更长的长 长度,那么就可以使用 alt 语句来修改一下表的结构。 alt 后面跟上 table 关键字和表明,然后跟上 modify column 关键字表示修改列,然后跟上想要修改的列名和新的数据类型。然后执行一下之后,我们再来查看一下新的表结构。可以看到内幕的数据类型已经变成了 warx 两百。 除了数据类型之外,字段的名称也是可以修改的,比如我们可以把 name 这一列改成 nickname 昵称,那么就可以输入 autotable 关键字后面加上表明 player, 然后再加上一个 renamecolom 关键字表示重命名。字段后面加上旧的字段名和一个 to 关键字,最后再加上我们想要修改成的一个新的字段名 nickname, 然后执行一下,再来看一下表结构, 可以看到 name 这一列已经变成了 nickname。 除了修改列的名称和数据类型之外,也可以使用 at com。 我们来添加一个新的字段,比如我们就来添 加一个玩家最后登录的时间,那么就可以输入 auto table player 后面加上一个 atom 关键字,然后加上想要添加的自断名 last login, 最后是一个 day time 的数据类型。执行之后再来查看一下表的结构,可以看到在最后一列多了一个类型是 day time 的 last login, 说明添加已经成功了。 可以添加字段的话,当然也就可以使用 drop column 来删除一个字段,比如我们把刚刚添加的 last login 字段再删除掉,只需要输入 alter table player, 后面加上一个 job column 关键字,最后加上想要删除的字段名称就可以了。 执行之后再来查看一下表结构,可以看到 last login 这一列已经被删除了。最后如果我们想要删除整个表的话,可以使用 droptable 语句,比如来删除刚刚创建的 player 表的话,就可以输入 droptable 后面加上表明 player, 然后执行一下就可以了。执行之后刷新一下数据 库,可以看到 player 表已经不见了。以上就是创建和管理表的一些基本操作,我也非常推荐你自己动手来尝试一下。 到目前为止,我们已经学会了如何创建数据库和表,以及如何来修改他们的结构。这节课我们来看一下如何对表中的数据进行一些常用的操作。首先还是来新建一个玩家表, critable 关键字后面加上表明 player, 然后是 id, 姓名、等级、经验和金钱这几个字段。创建完成之后,我们来向这个表中插入一条数据,可以使用 insert 语句,它的语法结构是这样的, 首先是一个音色的音图,关键字后面跟上表的名称,然后是括号括起来的列的名称,再用 values, 关键字后面加上具体的值就可以了。如果表明后面的括号中包括了所有的列,并且顺序也和表结构保持一致的话,那么这个括号以及它里面的列名就都可以省略掉。直接在 表明后面加上 y 六次关键词,然后加长值就可以了。也可以只写上部分列的名称,只要没有列出来的部分,就会使用我们在键表时设置的默认值来填充。回车之后就可以看到提示我们插入了一条数据,然后可以使用 c like 语句来查看一下数据。 c like 后面跟上要查询的列名,也可以使用一个信号来代替所有的列, 然后跟上一个 form 关键字和想要查询的表的名称,表示从哪个表来查询数据。然后来执行一下这条语句,就可以看到我们刚刚插入的数据了。因斯尔特也可以插入多条数据,直接在 y 六后面加上多组数据就可以了,数据之间用逗号隔开, 比如我们再来插入两条记录,然后来执行一下,这样就可以插入多条数据了。再来使用 c like 查询一下数据,可以看到我们的玩家队伍又扩大了。这里李四和王五同学的等级和经验都是闹,这是因为我们在创建表的时候并没有指定 默认值,那默认就会是一个 not 表示一个空值,这样显然是不太合理的。一般游戏中的玩家等级都是从一级开始,那我们就可以修改一下这个表结构,把等级的默认值改成一。大家还记得怎么来修改表的结构吗?没错,是使用 alt table 关键字后面加上表的名称,然后加上一个 modify, 然后是字段的名称和类型, 在最后加上一个 default, 一,表示默认值是一级,然后再来插入一条数据,执行之后再来查看一下数据,可以看到最后插入的这条记录虽然没有指定他的等级,但是他的等级已经默认为一级了。 我们也可以在建表的时候就直接指定一个默认值。除了默认值之外,还可以使用 now 或者 not now 来指定这个字段是否允许为空值,或者使用 unic 来指定这个字段必须是唯一的。这些都是一种约束,用来保障数据的正确性和完整性。经常用到的约束包括下面几种,除了刚刚我们提到的默认值,非空和唯一约束之外, 还有主见约束和外见约束等等。主见约束用来保证数据的唯一性不为空,并且每个表只能有一个主见,外见约束用来保证数据的一致性,一个表的外见必须是另一个表的主见。这些约束内容大家可以刻下自己尝试一下。 这里有个小问题,我们之前插入的李四和王五同学的等级还是 now, 我们可以使用 update 语句来修改一下他们的等级, update 语句后面跟上表的名称,然后用 set 关键字加上要修改的列名和值,后面跟上一个 y 条件词句,表示要修改哪些数据。比如要把李四同学的等级修改为一级,就可以在 where 后面指定内幕为李四, 这样就可以把李四同学的等级修改为一级了。同样的方法,我们再来修改一下王五同学的等级,然后再来查看一下数据,可以看到现在所有玩家的等级都是一级了,但是后面的经验和金币还是闹,如果也像刚刚那样一条一条修改的话,显然是非常麻烦的,其实是可以一次性修改所有的数据的, 只要把后面的 vr 条件词句去掉就可以了,这样就会把所有的数据都修改掉。比如我们要把所有玩家的经验和金钱都修改为零的话,就可以输入 update, 后面加上表明 player, 然后加上一个赛的关键字,再加上想要设置的自断的名称和值就可以了。如果有多个自断的话,中间可以用逗号格开 再来执行一下,然后再看一下结果,可以看到所有玩家的经验和金钱都已经被修改成零了。这里需要提醒一下各位同学,在实际的开发中不加威尔条件是非常危险的行为,尤其是在执行 update 或者迪丽的语句的时候。 最后再来看一下如何删除表中的数据,我们可以使用 delete 语句后面跟上表明,然后使用外二条件此句来指定要删除哪些数据。比如我们要删除所有金钱为零的玩家,就可以在外二条件后面指定 go 等于零, 然后再来查看一下数据,可以看到所有的玩家都被删除了, 我们需要对数据库执行一些导入或者导出的操作,方便我们对数据进行备份,或者将数据从一个库迁移到另一个库中。比如这里我们就给各位同学准备了一些数据库文件,里面是我们课程中需要使用到的一些数据,方便大家跟着教程一边学习一边实践,以及在后续的课程中来演示一些比较复杂的 c 口语句。 看完这一小节之后,你就可以将这些数据导入到你自己的数据库中了。数据的导入导出可以使用命令来完成,也可以在图情话界面中直接操作。这里我们先来看一下命令行的方式,可以使用 mecco dump 命令来导出数据,输入 mecco dump 之后, 后面加上杠 u 参数,指定一个用户名,然后加上杠 p 参数,指定密码,后面再加上数据库的名称和表的名称,表的名称可以省略,如果省略的话就会导出整个数据库的所有数据,最后加上一个大于号和文件名来表示将数据导出到这个文件中。比如我们来导出一下 game 数据库中的数据,回车之后会提示 是输入密码,输入之后就会将数据导出到 gamersql 这个文件中了。我们来打开一下这个文件,可以看到里面就是一条条的 c 口语句,这些语句就是用来创建表以及插入数据的,这样我们就可以将这个文件分享给其他人,就可以直接导入到自己的数据库中了。 那下面就来看一下如何导入数据。由于后续的课程中会涉及到一些复杂的 c 口语句,会对数据有些要求,这里也提前准备好了一份数据,刚好趁着这个机会来导入一下,这样后面的课程中就可以直接使用了。 数据文件在我们的课程资料中,大家可以自行下载一下。导入数据使用的是 mysco 命令,输入 mysco 之后,后面一样也是跟上杠 u 指定用户名,然后是杠 p 参数指定密码,然后是数据库的名称,最后再加上一个小于号和文件名, 回车之后会提示输入密码,如果没有错误提示的话,导入就完成了。我们打开图形化工具来查询一下,就可以看到我们导入的这些数据, 当然也可以在图形画界面中来操作,这里就不再演示了。下节课开始我们会使用这些数据来讲解和练习 mayor 子句,用来提取那些满足指定标准的记录,它可以同 select, update 和 delete 一起使用,比如查找所有等级为一的玩家,就可以在 where 后面加上条件, level 等于一就可以了。除了等号之外,还有其他的比较运算符都可以使用,比如大于小于大于等于,小于等于不等于等等。 有的时候我们需要查找满足多个条件的数据,比如查找等级大于一并且小于五的玩家,就可以使用 on 来连接这两个条件。为了后面加上第一个条件 level 大于一,然后再加上一个 on, 再加上一个条件 level 小于五。 执行完成之后就可以看到结果中只有等级在一和五之间的玩家了。同样的,如果想要查找经验大于一并且小于五的玩家,就可以把 level 换成 exp, 然后再来执行一下,那就可以看到现在结果中只有经验在一和五之间的玩家了。除了按的以外,还有 alt 和 note 这两个逻辑运算符。需要注意的是,如果同时使用他们的话,是需要注意一下他们之间的优先级的。优先级顺序是 note 大于 on 的大于二。 比如我们想查找等级大于一小于五或者经验大于一小于五的玩家,就可以把上面两条按的语句用二来连接起来,这样就可以把刚刚的两个查询结果合并起来了。执行之后就可以看到结果中有等级大于一小于五的玩家,也有经验大于一小于五的玩家。这里因为按的的优先级要更高一些,所以先执行了两个按的,然后才执行的二。 我们也可以使用括号来改变优先级,比如使用括号把中间的两个条件括起来的话,那么就会先执行中间括号中的偶尔条件,然后再执行两边的按的了,可以看到执行的结果也发生了变化。之前我们使用了等号来查找等级为一的玩家,但 但是如果我们想查找多个不同等级的玩家,就可以使用 in 来指定多个值。比如查找等级为一三五的玩家的话,就可以在第二条件后面加上一个 in, 然后在括号中指定一三五这三个值,中间使用逗号隔开,这样就可以查找等级为一三五的玩家了。印还经常会和此查询一起使用,这个后面我们会详细讲解, 可以使用 betin 和暗的来指定一个连续的范围,比如我们想查找等级在一和十之间的玩家,就可以在威尔条件后面加上一个 level 字段,然后使用 betin 和暗的来指定一个范围,比如一到十,这样就可以查找等级在一和十之间的玩家了,包括一和十。执行之后就可以看到返回了我们想要的结果, 这条语句也等价于 level 大于等于一,并且小于等于十,他们的执行结果是一样的,我们可以在条件语句的前面加上一个 note 来表示取反,比如刚刚的条件前面加上 note 的话, 就表示等级不在一和十之间的玩家了。 note 可以加在任何一个条件语句前面,比如刚刚我们执行过的 in, 或者是各种比较运算服都可以。 有的时候我们需要进行一些模糊查询,比如查找姓王的玩家或者名字中包含王的玩家,这个时候就可以使用 like 来查找 like, 后面加上一个用来匹配的模式,模式中可以使用下面两种通配符,百分号表示任意一个字符,下划线表示任意一个字符。比如查找姓王的玩家的话,就可以在威尔条件后面加上一个 name like, 然后使用一对单元号把王括起来,后面加上一个百分号,表示名字中第一个字是王,后面可以是任意多个字符的玩家。 执行之后可以看到返回了所有姓王的玩家。而如果我们想查找名字中包含王字的玩家,就可以在王的前面也加上一个百分号,表示前面也有可能是任意多个字符,这样就可以查找到名字中包含王的玩家了。 可以看到查询结果中除了刚刚所有姓王的玩家以外,多了一个兰陵王。如果我们想查找姓王并且名字只有两个字的玩家呢?这个时候就可以使用下划线来匹配一个字符,这样结果中就只剩下王五一个,其他三个字的就都被过滤掉了。同样的,如果在后面再加一个下划线的话,就可以查找名字是三个字的王姓玩家了。 有的时候我们需要查找的模式比较复杂,就可以使用 regular expression 来匹配正则表达式,正则表达式中可以使用通配符来定义匹配规则,可以使用的通配符包括下面这些, 点号表示匹配任意一个字符,减小号匹配开头 w 匹配结尾。使用中括号括起来的字符列表表示匹配其中任意一个字符。也可以使用中杠的表示一个范围,比如中括号零杠九就表示匹配零到九之间的任意一个数字。中括号 a 杠 z 就表示匹配任意一个小写字母。竖线表示或者的意思,比如 a 竖线 b 就表示 是匹配 a 或者 b, 还是刚刚的例子,我们想查找姓王并且名字只有两个字的玩家,我们来看一下政策表达式的方式应该怎么写。 vr 后面加上一个字段 name, 然后是表示使用政策表达式的关键字 r 一区 exp 后面加上一个我们想要的政策表达式就可以了。 这里的减角号表示开头, w 表示结尾,点表示匹配任意一个字符,这样就可以查找姓王并且名字只有两个字的玩家了。那如果想查找名字中包含王字的玩家呢?那就只留下王字,其他都去掉就可以了。 注意这里并不需要加上百分号或者下划线,正则表达适中,并没有这两个通配符,他们是在 like 中才有的,大家不要搞混了。如果想查找名字中包含王或者章的玩家,就可以使用中括号把王和章括起来, 表示匹配其中任意一个字符,这样只要名字中包含王或者张的玩家就都可以被查找出来了。我们来执行一下,就可以看到我们想要 的结果了。另外一种方式是使用竖线来表示,或者可以把中括号去掉,然后在王和章之间加上一个竖线,我们来执行一下,可以看到结果是一样的。下面我们来做一些练习,巩固一下刚刚学到的内容,大家可以暂停来自己尝试一下,我们会在下面给出答案。 有的时候我们需要查找某个列的纸是空的数据,这个时候有一个需要注意的地方就是不能使用等号来判断,这也是很多同学最开始的时候容易搞错的地方。 比如想查找邮箱为空的玩家,就不能使用一秒等于 note 来判断,因为 note 值与其他任何值都不相等,包括 note 本身。所以如果我们使用下面的语句来查找没有填写邮箱的玩家的话,就会得到一个空的结果级,而这并不是我们想要的结果。 正确的做法是使用 is now 来判断,这样就可以查找到没有填写邮箱的玩家了。同样的,如果我们想查找填写了邮箱的玩家,就可以使用 is not now 来判断。 myseco 还提供 用一个专门用来比较 note 的比较操作符,就是在等号两边分别加上将括号把它括起来,这样也是可以查找到邮箱是 note 玩家的。但是我还是推荐大家使用 east note 来判断,因为这种写法更加直观,也比较常用,而且在 oracle 等其他数据库中也是通用的。 还有一点需要注意的就是,有的时候数据库中的数据是一个空字符串,表面上看 top 闹都是空,但实际上他们也是不一样的闹需要使用 is not 来判断,而空字符串应该使用等号来判断。看一下下面这个例子,相信大家就能明白了, 还是来查询一下没有填写邮箱的玩家。回车之后可以找到两条记录,这两条记录的邮箱都是空的,然后在后面再加上一个一秒等于空字不串的条件, 然后来执行一下,可以看到查询的结果中多了一条记录,而这条记录的邮箱是一个空字符串,也就是说 no 表示没有值,也就是没有填写邮箱,而空字符串表示填写了一个空的值。这样他们的区别是不是就很明显了呢? 奥特曼用来对查询结果按照某个字段来进行排序,如果不指定的话,默认是升序排序。比如想要按照等级从小到大的顺序来把玩家排列起来的话,就可以在查询语句的后面加上一个奥特曼,然后指定一个列的名称,比如这里就用等级 level, 这样就可以按照等级升序排列了。如果想要降序排列的话,可以在列名后面加上 dsc 再来执行一下,这样就可以按照等级来降序排列了。如果想要按照多个列来进行排序的话,可以在后面加上一个列名,比如我们在等级降序的基础上再加上一个按照经验升序排列,也就是在后面再加上一个 efp 就可以了。后面什么都不加的话,默认就是按升序来排列,当然也可以显示的加上一个 asc 来表示升序, 那我们再来执行一下,这样返回的结果就先按照等级来降序排列,等级相同的话再按照他们的经验来升序排列了。奥特拜后面除了可以使用列名之外,还可以使用列的序号来排序,比如 如果我们想要按照等级降序来排列的话,就可以在后面加上一个五,因为等级 level 是这个表的第五列,然后后面再加上表示降序的 d, e, s, c 来执行一下,可以看到这样结果也是一样的。 聚合函数用来对某个列执行一些计算,比如求和平均值,最大值,最小值等等。常用的聚合函数包括下面这些,比如想知道所有玩家的总人数,就可以使用 cont c like 后面加上一个 com 的星,然后是 freeman 和表明,然后执行一下就可以看到结果了。或者查询所有玩家的平均等级,就可以使用 avg 这个函数括号中指定要计算的列名就可以了,类似的还有求和最大值,最小值等等,大家可以可以下自己尝试一下。 有的时候我们想要统计一下所有玩家中的男女比例,就可以使用分组查询的方式来实现。 globa 用来对查询结果进行分组,后面加上一个或者多个列名,表示按照这些列来分组。然后前面的 c like 语句中就可以使用 我们刚刚学到的 content 或者 some 这些聚合函数来对这个列进行计算了,这样可能还是不太好理解,我们来看一个例子,比如我们想知道所有玩家中每个等级的玩家有多少名,就可以使用 green 来统计, green 后面加上一个 level 表示按照等级来分组。 前面的 select 语句后面加上等级和一个 count 括号 level 来计算每个等级的玩家有多少名,我们来执行一下, 这样就得到了每个等级的玩家数量了。 gruba 还经常和 having 一起使用,用来对分组后的结果进行过滤,比如我们想知道刚刚的结果中数量大于四的等级有哪些,就可以在后面加上一个 having count 括号 level 大于四,这样结果中就会只保留数量大于四的等级了。 另外一个经常同古鲁拜一起使用的是奥德拜来对结果进行排序,比如刚刚的结果并没有一个固定的顺序,如果我们想按照数量来降序排列的话,就可以在后面加上一个奥德拜 count 括号 level, 然后加上一个表示降去的 ds c 就可以了。生活中实际这样的例子也非常多,比如热搜榜,排行榜等等。同样的大家也可以尝试一下其他的聚合函数。 下面来做一个小练习,统计每个姓氏玩家的数量,并将结果按照数量来降去排列,只显示数量大于等于五的姓氏,你可以暂停来自己尝试一下,我们会在下面给出答案, 怎么样,你做出来了吗?这里涉及到一个函数 substrain, 它的作用是截取字符串的一部分,第一个参数是要截取的字符串,第二个参数是开始为止,从一开始。第三个参数是截取的长度。那这里的 substring name e, e 就表示截取 name 字段的第一个字符,也就是姓氏。然后再使用 grouby 来按照姓氏分组,再使用 heavy 来过滤数量大于等于五的 形式。最后使用奥特拜来将序排列。 limit 用来限制查询结果的数量,比如刚刚的练习中,我们得到了所有玩家的姓氏和数量,如果我们只想返回姓氏排行榜的前三名,应该怎么做呢?这个时候就可以在后面加上一个 limit 三就可以了, 来执行一下,这样就只返回了前三名的形式。厘米,他也可以指定一个偏移量,比如我们想返回第四名到第六名的话,就可以在后面再加上一个逗号三,第一个三表示偏移量,表示从第四名开始,第二个三表示返回的数量。 这里有个问题,就是由于我们前面已经限定了数量大于等于五,所以这里只返回了第四名和第五名的姓氏,因为第六名的数量不到五个,所以被过滤掉了。那我们把还用这个条件去掉,再来执行一下,就可以看到返回结果中有第六名的姓氏了, 他只有四个人,所以刚刚被过滤掉了。这种方式其实也是分页查询的原理,也就是我们在各种网站上 常经常看到的分页效果。 distinct 关键字可以用来去除重复的记录,比如我们想知道所有玩家的性别,就可以使用 distinct 来去除重复的记录,这样就可以得到驱虫之后的结果了。 uni 用来合并两个查询的结果, 在之前我们查询过等级为一到三的玩家,来复制一下这条语序,然后再来执行一下,可以看到结果中有三条记录,然后再来查询一下经验为一到三的玩家。 执行之后可以看到结果中有四条记录。那如果想把这两个查询结果合并起来的话,也就是所有等级为一到三以及所有经验为一到三的玩家的话,就可以使用 uni 来合并一下。 合并的方式也非常简单,只需要把两条语句用 uni 连接起来就可以了。我们来执行一下可以看到这样就可以得到所有等级为一到三以及所有经验为一到三的玩家的并级了。需要 注意的是, unny 默认会去除重复的记录,比如刚刚的结果中,第一条语句有三条记录,第二条语句有四条记录。但是如果我们把两条语句合并起来执行的话,结果却只有六条,原因是因为其中一个玩家既满足等级为一到三级,又满足经验为一到三, 所以在合并的时候就被去掉了一条,如果不想去掉的话,可以使用 uni 二来合并,在 uni 的后面加上一个 out 关键字,再来执行一下,就可以看到结果中有七条记录了。 uni 和二有些类似,只不过二是用来合并两个条件的,而 uni 是用来合并两个查询结果的。 uni 用来合并两个查询结果,也就是取两个查询结果的病急,而 intersect 则是用来查找两个结果的交集的。还是刚刚的例子,我们把 uni 换成 intersect 就可以查找这两个结果的交集了。我们来执行一下,可以看到结果中只有刚刚重复的吕秀才这一条记录了。 except 用来查找两个查询结果的差集。 还是刚刚的例子,我们把 intersect 换成 except, 就可以查找这两个结果的差集了。也就是说查找等级为一到三的玩家,但是经验不在一到三之间的玩家,可以看到结果中只有两条记录,刚刚的吕秀才就被过滤掉了。 有的时候我们需要使用一个查询的结果作为另一个查询的条件,这个时候就可以使用此查询了。比如我们想知道所有等级大于平均等级玩家,就可以先查询一下平均等级, 可以使用 avg 喊出来求出所有玩家的平均等级,然后再把这个平均等级作为条件来查询,大于这个平均等级的玩家在前面加上一个 where level 大于就可以了。 此查询除了可以用在威尔词句中之外,还可以用在 slag 语句中,比如我们想知道所有玩家的等级和平均等级的差值,就可以在 slag 语句中使用此查询。我们先来查询一下所有玩家的等级,然后在后面加上一个平均等级。 这里的 select average level from player 就是一个自杀群,可以看到平均等级是一个浮点数,看起来并不是很方便,可以使用 run 函数来做一个四舍五入,这样就得到了一个整数的平均等级了,再用玩家的等级减去这个平均等级, 那就得到了每个玩家的等级,平均等级以及他们之间的差值了。注意看一下结果中每一列的名字,最后两列的名字直接使用了我们刚刚的表达式,这样不太方便阅读。那我们也可以使用一个 x 关键字来给这个列起一个别名,比如平均值这一列,我们可以起一个名字叫做 ivory 曲,最后这个差值的列可以叫做 deep。 再来查询一下,可以看到结果中的列名已经变成了我们刚刚起的别名了,这样看起来就更加人性化,也方便理解了。除了在威尔词句或者 select 语句中使用之外,此查询还可以用在 update 语句, delete 语句, creat 或者 insert 等等各种语句中使用。我们也可以使用此查询来创建一个新的表,比如 可以把所有等级小于五的玩家数据插入到一个新的表中,表明就叫做 new player。 还是先来查询一下所有等级小于五的玩家,然后在前面加上 corry table, 后面加上表明就可以了。执行之后这个新的表就创建完成了。再来查询一下, 可以看到这个新的表被成功的创建了,他的结构和 player 表是完全相同的,里面只有等级小于五的玩家数据。最后再来看一下如何使用此查询来插入数据。 比如刚刚我们创建的新表中只有等级在五级以下的玩家,现在我们想把等级在六到十之间的玩家也插入到这个新的表中,那么就可以使用 inside in two 语句来插入数据。 inside in to 后面加上要插入的表明,然后后面加上自查询的结果就可以了。执行完成之后,可以看到提示我们插入了多少行数据,然后再来查询一下这个新的表, 可以看到等级在六到十之间的玩家也被成功的插入到这个表中了。 exist 用来判断一个查询是否有结果,他的反馈值只有零和一两种,比如 你想知道是否有等级大于一百的玩家,就可以使用 exist 来判断一下。 exist 后面加上一个字,查询,也就是我们想要判断的查询,这里的话就是查询所有等级大于一百的玩家。我们来执行一下,可以看到结果是零,就表示并不存在等级大于一百的玩家。那如果把条件改成等级大于十呢? 再来执行一下,可以看到结果是一就表示存在等级大于十的玩家。 表关联用来查询多个表中的数据,关联的表之间必须有相同的字段,一般会使用表的逐渐和外线来关联。 有关联分为下面几种类型,内连接,只返回两个表中都有的数据。左连接就是返回左表中所有的数据和右表中匹配的数据,右表中没有的数据用 note 填充。相应的右连接就是返回右表中所有的数据和左表中匹配的数据,左表中没有的数据用 note 填充。下面就来看一下这 几种关联的具体用法。游戏中除了玩家之外还需要有装备,我们先来看一下装备表的结构,这个表的结构非常简单,只有三个字段,分别是装备的 id 名称以及所属玩家的 id。 内连接就是使用 inner join 关键字来指定关联的表,然后是 on 关键字和两个表中关联的字段,最后可以加上位尔关键字和查询条件。那我们就来执行一下这条语句, 这样就把玩家表和装备表关联起来了。可以看到我们结果中既包含玩家的信息,也包含了玩家对应装备的信息,他们之间使用玩家 id 这个字段来关联起来。 左连接用来查询左表中所有的数据和右表中匹配的数据,右表中没有匹配数据的话就会使用 note 填充,还是刚刚的例子,我们来使用左连接来查询一下,看看结果是什么样的。直接把 in the drive 换成 left drive 就可以了,然后再来执行一下这条语句, 可以看到结果中包含了玩家表的所有数据,然后是玩家对应的装备信息,有装备的话就会显示装备的信息,如果没有的话就会使用 note 填充。同样的右连接就是用来查询右表中所有的数据和左表中匹配的数据,左表中没有的数据就会使用 note 填充, 还是刚刚的例子,我们来改成右链接,再来查询一下,看看结果是什么样的。直接把 left drawing 改成 right drawing 就可以了。然后再来执行一下,可以看到结果中包含了装备表的所有数据,以及这些装备所对应的玩家的信息,没有对应关系的玩家信息部分就可以使用 note 来填充。 表连接除了使用 joy 和 on 关键词来指定关联的字段之外,还可以使用 where 关键词来制定。还是刚刚的例子,我们可以把 joy 去掉,表明后面加上逗号,然后在 where 后面加上关联的条件,再来执行一下,可以看到结果是一样的。 也可以在表明后面加上别名,然后在外耳关键字后面使用别名来指定关联的条件,再来执行一下,可以看到也是没有问题的。表关联也可以使用多个表,时间关系,这里就不延迟了。数据库中有个技能表 skill, 大家可以刻下自己尝试一下。使用连接的时候需要注意的一点就是迪卡尔奇的问题, 如果连接没有指定条件或者条件不正确的话,就会产生迪卡尔吉,比如如果把上面查询语句的条件去掉的话, 那结果就会是这个样子的。可以看到我们的结果中每一条数据都会和另一个表中的每一条数据进行组合,这样就会产生很多的数据,而一般这并不是我们希望看到的,所以在使用连接的时候一定要注意连接条件是不是正确的。 其实表连接的本质就是 dk 二级,再加上条件过滤,如果不加过滤条件的话,那当然就会把所有的数据都组合起来了。 锁眼是一种用来提高查询效率的数据结构,它可以帮助我们快速的定位到我们想要的数据,如果没有锁眼的话,就只能从头开始便利所有的数据,直到找到满足条件的数据为止。当数据非常少的时候,这样并不会有什么问题,但是如果当数据量非常大的时候,查询效率就会直线下降, 锁眼就是为了解决这个问题而产生的。下面先来看一下如何在买 c 口中创建和使用锁眼。可以在建表的时候直接指定锁眼,也可以在建表之后再来添加一个锁眼。锁眼的创建语法像下面这样, creatinex 是创建锁眼的关键字 音代词,前面可以加上可选的所以类型, uniq 表示唯一,所以 fox 表示全文,所以 special 表示空间,所以再加上一个所以的名称,后面是按关键字和表明表示要在哪张表上创建,所以最后使用括号括起来的一个或者多个字段名,这些字段名就是我们要对哪些字段 来创建锁眼。一般来说,我们会对一张表的逐渐字段或者经常用来查询的字段创建锁眼,也就是威尔后面的查询条件字段,这样可以提高查询的效率。为了让大家最直观的看到锁眼的效果,我们随机生成了两张有两千万条数据的表,这两张表的结构和内容都是完全相同的,他们的结构非常简单,只有四个字段。 再分别来看一下这两张表的数据量,可以看到他们的数据量都是两千万条。下面我们在其中一张表上建立所演,另一张不建立,然后来比较一下他们的查询效率。 我们给 fast 这张表的 email 字段来创建一个索眼, create index, 后面加上索眼的名称,比如这里就叫做 email index, 然后是一个 on 关键字,后面加上表明 fast, 最后是用括号括起来的 email 字段, 然后来执行一下。注意,这里根据数据量的不同,创建所有的时间也会有所不同,这里我们的数据量比较大,所以创建所有的时间会比较长一些,大家耐心等待一下, 等待的过程中,先来介绍一下如何查看锁眼,可以使用 show index from 语句来查询,后面加上表的名称就可以了,可以看到刚刚的锁眼已经创建完成了,再来执行一下这个查询语句, 然后在下面就可以看到所以你的名称,字段的名称,所以你的类型等等清晰了。下面就来比较一下这两张表的查询效率。我们就以查询邮箱以 abcd 开头的数据为例,先来查询一下没有所以你的这张表。为了让两边的结果一样,我们再按照 id 字段来排个序,然后来执行一下, 在下面可以看到语句正在执行,可以看到执行的时间。好的,执行完成了,可以看到执行时间大概是五秒左右。同样的语句,我们再来查询一下有锁眼的这张表 瞬间就完成了,这就是锁眼的一个作用,可以帮助我们快速定位到我们想要的数据,从而来提高查询的效率。删除锁眼,使用照片代词语句后面加上锁眼的名称,然后是 on 关键词和表的名称。比如我们 想要删除刚刚创建的这个锁眼的话,就输入照片 decks, 然后是锁眼的名称 email index, 后面加上 on 关键字和表的名称。 fast 执行之后再来查询一下, 可以看到缩影已经被删除了。除了使用 created index 语句来创建缩影之外,还可以在修改表结构的时候来创建缩影。比如我们想要给 fast 表的内幕字段创建一个缩影的话,那么就可以使用 alter table 语句后面加上表明 fast, 然后是 add index 关键字表示要添加一个缩眼, 后面加上左眼的名称内幕 index, 最后是用括号括起来的内幕字段,也可以在键表语句中直接指定一个左眼时间关系,这里就不延时了,大家可以自己尝试一下。 视图是一种虚拟存在的表,它本身并不包含数据,而是作为一个查询语句保存在数据字典中。当我们查询视图的时候,它会根据查询语句的定义来动态的生成数据。 创建视图使用 crater 语句,比如我们可以创建一个玩家表中等级在前十名的排行榜视图, crater 后面加上视图的名称,然后是 x 关键字后面加上一个想要查询的 club 语序就可以了。这里就是查询玩家表中等级在前十名的数据, 然后来执行一下,这样试图就创建成功了。试图的使用和表是一样的,可以使用正常的 select 语句来查询试图,比如来查询一下刚刚创建的,试图就可以看到试图返回的数据了,而且当表中的数据发生变化的时候,试图中的数据也会随着变化,比如把第一名的等级改成十,执行一下 update 的语句, 然后再来查询一下,试图可以看到试图中的数据也发生了变化,这就是试图的一个特性,试图中的数据是动态的,他会随着表中数据的变化而变化修改。试图使用 auto vivo 语句,后面加上试图的名称,然后是 it 关键字和新的 语句就可以了。比如我们想要把数据改成从小到大排序的话,就可以在 outer view 后面加上视图的名称 top ten, 然后是 s 关键字后面加上一个新的 select 语句,把上面的语句复制一下,然后去掉 d, e, s, c, 再来执行一下,这样试图就修改成功了。然后我们再来重新查询一下,试图可以看到试图中的数据已经变成从小到大排序了,我们可以使用招 vivo 语句来删除,试图后面加上想要删除的试图的名称就可以了。这个非常简单,这里就不再演示了,大家可以自己尝试一下。

这节课来学习数据库多对多的关系,前面讲的员工表与部门表属于多对一的关系,多个员工属于一个部门,那当然一个员工也是只属于一个部门, 所以在员工表里边可以有这个部门 id 的自断去关联部门信息。员工的部门是唯一的,所以在每一条记录里边方便记录。那来看另外一种关系, 学生表与教师表,一个学生可以有多个老师, 一个老师也可以有多个学生,这种关系就是多对多的关系。那么在表里面如何对应他们的关系呢? 比如张三这个学生他有多个老师,那这几个老师在这张表里边怎么关联?是加一个自断关联起来吗? 是不是在这里面把老十一、老十二、老十三他们的 id 都放进来? 如果这样来对应关系,怎么去查询老师的信息呢?还要把这一个字不串拆分成三个,每一部分是一个老师的 id, 这种逻辑在社会语句里面就无法实现了,所以不能这样写。 同样的,每一个老师有多个学生,他的多个学生怎么对应也是不能在这一张表里边写的。 所以像这种多对多的关系,我们往往会引入中间表,也就是第三张表,用这张表来存储学生与老师的对应关系。 怎么存储的这一列是主见,主要来看这两列,这一列是学生 id, 这一列是教师 id, 学生一,他有三个老师,这样来对应的。第一条数据是学生一,对应老师二, 第二条数据还是学生一,对应的是老师三。第三条是学生一对应的老师四,把这个学生与老师的 对应关系一一列出来,学生二有两个,老师同样是这样来对应。 那反过来看,老师二有学生一,同时有学生四,还有学生五还有学生二,老师二他拥有的学生也对应起来了。 多对多的关系就是这样处理的。那用语句该如何查询呢?这样来写, 先从学生表里边 以学生为标准来查找 他的老师。再来看一下这三张表的关系。学生与老师是多对多,那学生与这个中间表呢?看前三条数据, 学生一学生表里边的一条数据对应中间表里边的三条数据, 所以学生表与中间表属于一对多的关系。同样,老师表与中间表也是一对多的关系, 也就是说,把多对多关系拆分成了一对多的关系。学生表与老师表没有直接的关系,但是学生表与中间表有关系,这样来查 做链接,中间表 加条件。这两张表的关系是这样的,学生的 id 等于中间表里边学生的 id, 那通过这条语句,是不是就可以找到学生对应的老师的 id 了?因为这张表里边也有老师的 id, 有了老师的 id, 接着找老师的信息,再 left 老式表条件,中间表里边的老式 id 等于老实表那边的 id。 这三张表一关联,就可以把老师的名称找出来了。好,我们要查询这几个字段,学生的 id, 学生的名称,老师的名称 执行一下,这样学生和老师的对应关系书记就出来了。 张三有三个老师,小明两个老师,这种关系就是通过这个中间表来实现的。好了,这就是多对多,这节课就到这里。

啊,那么我们启动服务端啊,我们在用这个扣端工具啊啊,那么我们讲赛克结构化查询的语言的时候啊,就以这个麦克斯 睡裤啊啊,以以麦斯跟睡裤为例子啊,好了,那首先我建个睡裤, 那么点这个右键啊,他有个可以的大 boss 是吧?那么你建立个睡裤,比如说 bb 一啊,大家注意要设置这个自负极啊,一定要设置自负极,那我们设置,比如中文的 cb 二三幺二,那么我们选 cb 二三幺二猜尼斯, 然后凯瑞特,那么他给你建立个睡裤啊,一定要注意 这两个系统税库,不要去动他,那我们选箱的税库地币啊,你看这选中的是吧,这是选中的,好了,那我们建的表点这个推波词,右键 这个可瑞塔推包是吧?大兄弟,我们建个什么标?我们建个商品标,那 那么商品表啊,他就有商品编号是吧?商品的就是固字,商品编号呢,就是固字的 id 啊,在注意数列情况,我们用 挖叉,挖叉就是自负型啊,长度呢?二十 啊,那么他这是主见吗?是啊,主见唯一是吧?唯一标识, 那么这是什么商品编号好了,哎,有同学说 商品编号为,为啥不是整形的,为啥不是整形的?我给大家讲啊,比如商品编号幺二三,这编号有意义吗?他没意义是吧?一般商品编号啊,你以记开头啊,下划线, 那么你订单里边有个 g, 他代表是商品是吧?啊,你比如说我下划线,我再放一个 big 啊,有个有个字母币,这不可代表是书啊,我这列商品是书,然后呢啊,你还可以指定其他意义是吧?零零幺,你看这四个串啊,他是有意义的啊,你说幺二三,他有意义吗?他没有意义 啊,明白吧?所以啊,你要把这个主见啊,视为这个自自负型啊,他是有意义的啊,他是有意义的啊,好了,我们接着看啊,那么商品 名称,物字内幕,那么他是挖叉,你比如长度是二十,好了,那商品价, 商品价格一般是带小数点的是吧,那么我们有个 flot, 它长度就 就可以不用指定了啊,这是 这个好了,那么我们初学啊阶段呢,暂时就是用这三个字段啊,用这三个字段,那么我点键表,这什么表? 商品里边固字,大家不要把这固字写成固德啊,固德是好的意思,固字是货物商品的意思啊,确定 我们不不见了,大家看啊,那么你见完表之后啊,我把它 扶持下来啊,那么 啊,他形成了一个竖结构,那么这个是睡裤,那么这个就是带小格,这是表啊,这是表,那这个列 列举代表自断啊。啊,这是商品编号挖叉类型啊,自动串类型,长度是二十, 这个呢?商品名称啊,二十啊,飞空啊,那么这个呢?商品价格啊,是这个是什么类型啊?这是带小数点类型,数点行是吧?啊,好了,就是这个 好了,那么大家注意啊,你也可以啊,把它倒出来表把它倒出来啊,这个表怎么倒啊?我们右键 倒出一个什么 faker, 好了,你比如说我把它倒到哪里啊?刚才我们的倒到这里 是吧,你起个名字叫做顾子,顾子点三颗,好了,那么你有 有间表语句是吧,大家注意包含这个键库里边语句,行了,倒倒 这里啊,好了,万一啊,就是你这个表丢掉了,你比如说把它删掉啊,猫不如神啊,删掉啊,这个表 没了,是吧?那我有这些我还可以把它恢复过来,是吧?我一个复制一靠配我一个选中一点执行, 你看他又回来了,我点刷新,你看说你一执行这个语句建标语句,他又回来了。当然呢,这个 切键盘语句我们可以干净一点啊,他是自动给你生成这么个这么东西啊,就我们一般的 不要他也可以啊,我再把他删掉啊,这个是我们的鉴表隐句啊,刷新, 那么这是用代码来建的表啊。

呃,今天就前面,前面几天啊?就前面的话可能我们那个,呃分享到那个低代码这块比较多, 那今天我们就开始分享一个另外一个就是关于记录这一块的,就是数据库数据库优化这块,其实在我们开发的一个过程当中,我们肯定说 一个系统的一个快慢,一般的话会有一些那个要么是程序啊,要么是程序啊,写的有 bug, 或者是呃写的代码里面有什么死循环,或者是内存一搓这种情况。另外一个就是很大一部分是在数据库这一块,尤其是 top 业务的 系统,数据库占系统数据库的那个性能往往占有很大的一个比重。所以数据库优化的话,不管是 mico 数据库或者是 oligo 数据库,或者是十个 super 数据库, 在 top 业务系统当中,他的那个系统优化是是非常常见的。在我们面试的时候可能也会知道, 就是面试官的话,或者是面试人的话,经常会问一些数据库方面的知识,这个是少不了的,避免避免不了的,这每次机会啊,基本上都会问这个问题啊,我面试的时候也会问这个问题。 还有个今天的话,我们那个数据库这一块呢,可能主要是这个这个文档的话是给客户那个时候做的一个培训文档。那我们这那个时候分的话,一共 分了四部分,一个是数据库设计这一块,另外一部分是操作,操作渔具,另外一个是记录设施,还有一个是数据库架构这一块, 主要是分这四部分,从那个优化的角度,我们把数据库优化,数据库优化,那数据库优化他有可能有一个大的一个步骤,应该怎么去操作啊?应该分几部分?那我的话一般的话是分这四部分来,来那个就是来,就是一步一步的去优化他。 其实一个数据库的一个数据库的性能啊,在一开始的时候,呃,在做设计的时候占有很大一部分,那我们先了解业务,然后再做设计,如果设计的不好的话, 在我们开发的过程当中,包括我们在业务实现的时候就是非常难实现的啊。我们写代码的话,肯定就是说我们要写 很多代码,呃,大家可能知道,就是说都是做开发的嘛,代码选的越多,那他的那个出现的 bug 的几率就会越大,那这个是少不了的。所以和数据库这一块,数据库设计的好坏直接影响了整个项目,甚至影响了整个项目的一个好坏。 我们在做数据库,数据数据库,呃设计的时候就数据库设计怎么样去优化它呢?肯定是根据业务啊,我们再把这个就先擦掉,它 肯定是根据业务来来选择的不同的那个,呃,业务可以选择不同的那个数据库引擎这一块,那比如说我们对事物性要求比较高的话,我们就用什么 innot b 啊,读多写少,尽量用 mama e s p m。 大家有有问题的话可以。那个什么啊?可以就是说先留言,我们把这个文档我们讲完,讲完以后的话我们看留言再讨论一下留言哈。 另外一个就是设计不合理的一个数据字段,基于他的长度,比方说你这个字段就二十多个,二十多个那个字段的话呢?你就设成 word 叉就可以了,那就是对设置成 word 叉二五五,对吧?那就对空间的一个浪费 这一块的话,还是根据需,根据需来啊,根据需要来啊,就说有多少的话,比如我身份证号或者是一些手机,嗯,就电话号码,对吧?就十几位,那我们就尽量的去根据需要去设置,不要就设置那么大,肯定就是说 说。呃,像卧槽型的话,可能是默认的话二二五五,那可以,在我们实际的这个呃开发当中肯定就是不管了,就是定个这段类型,就定个这段名字,然后后面的就都大部分都是默认的啊,这样是不行的话,我们还是根据需要来设置, 还有个什么,还有个第三点,这个是非常重要的,默认的话我们尽量的不要用 note 浪值 啊。这个帽子的话,第一他是我们做,所以的时候可能是不太友好。第二的话我们在判断语句的时候,就在我们写那个后段逻辑, 不管是加瓦或者是那个那的靠或者是勾乱语言,你都需要去判断他是不是为空。如果不为空的话,我们在做下部逻辑,比如说做一些业务逻辑处理,其实这个的话我们可以源头上去解决这个浪子,这个空子他仔细 其实就是从数据库读出来的,那我们就从源头上去解决,给他设置默认值,那我们在业务逻辑处理的时候,我们就不用去再去做判断了,直接用就可以了,因为他源头他就不可能为空,对吧?那我们就把四个省略,就把就把这个判断给省略掉,往往我们上线以后出现问题, 什么空纸啊,什么空纸,这些往往就是说我们数据库当中他没有纸,所以就带来了他的就是什么隐形的这些地雷,哈,啊,隐形的雷。 第四个的话,我们是尽量少用这种 what 或者 tens 啊,或者是用薄膜这种字段类型,这个字段类型的话它是非常大的。哈。我们有这种字段的话,我们尽量就是以文件情文件的形式或者对象的形形式存在,就第三关就可以了。不,不要在就是在数据库当中存这个这种大的字段,因为它 占了很大的空间。还有个这个是加入这个适当的缩影,那我们在做数据库优化的时候,缩影并不是越多越好。 呃,数据库缩影的话,它占占用的就是说占用很大的一个空间哈。第二的话我们在听在这个,呃,有数据变动的时候,他要重组缩影,所以这个的话我们从效率上面来说,从性能上面来说的话,缩影如果越多的话,往往 他的性能会更低,不过查询的性能啊,查询的效率会更高。他是有一个呃,就是说什么有个比重, 就是就是看看是怎么样子吧,就是我们尽量加的,就是说合适的时候就比较好一点,大家可以做做做一下测试啊,说也并不是越多越好,越多的话他对那个数据变更的时候,他的性能会 降低很多,尤其是在数据量很大的时候。嗯,还有就是不要滥用缩影啊,这个缩影的话像大表缩影或者小表缩影,这个这个的话就是我们尽量的话就是还是根据需要来设置啊, 另外表设计的合理化,今天的话我们可以呃实现这个三贩子,其实三贩子的话,呃在那个我们上学的时候肯定就是说用的比较,呃,用的就是考试,包括 呃考试的时候或者是老师讲的时候可能用的比较多。其实在工作的当中的话,我们可能会说一些勇于,关键是我们尽量, 嗯,尽量不做这种,嗯嗯,就是荣誉这块,因为你一荣誉的话你还要考虑很多,第一你要考虑数据同步这一块,对吧?那这个数据同步的话,我们一般一部分, 如果是就是我们做的这个系统比较小的时候,我们可以用什么触发器呃来实现,关键是这个是非常小啊,尽量的话不要这样做。另外一个是我们是从业务逻辑上面, 从逻辑上面去做处理啊,传出发器啊,乘坐过程啊,这个在现代的就是说在近近几年的这种 top u 系统当中,尤其是呃规模有稍微大一点的,基本上就不推荐用的,因为他不支持横向扩展啊,支支持单个数据库引擎啊,他这样子来这样子, 所以在所以在我们呃平常工作的时候,呃,包括目前我们嗯在做这种面试或者是招聘的时候,基本上不会再问出发器或者是存储过程 啊。像这种类型,以前的话我会问的,以前的话肯定叫水库,这块是问的比较多,最近几年的话,因为最近三年或者五年以来就是很少问这个基本上就在业务当中去处理了。 另外一个是数据库油画,数据库油画的利息的话,像这个基本上都是通用的吧。像 massaco 的话,像 s pro 这种啊,这个是通用的哈。 基本上的话我们会这个主要是关注他的 type 类型啊。 type 类型, type 类型的话,他至少我们这个的话可以打到他这个优先机,优先机哈,优先机最好是的话是软宁哈, 包括 r、 e、 f 这种级别的啊,最好的话是十一节笔的,这个是最好的哈,我们可以看一下。 还有个就是它是数据库的优先记笔的话我们就已经放出来了,还可以看一下。 哎呀, 像这个的话,他肯定是表内只有一行那种数据是递增的哈,他的性能他的性能会越来越越来越差啊。 cast 的话哈,这应该是比较好的,就只匹配这种,那我们达到的级别呢?最少是这个范围级别,再往下的级别,他的性能已经很差了,像这种的话,他基本上就不走,所以了啊,这个性能是非常差的哈, 所以在我们在,在我们在那个设置 sorry 的时候,我们一定要就是说,呃,要看一下,就是用 airplan, 再看一下, 不要就是说,呃,设置完就完事了。设置完的话,有时候你用设个语句去做的话,他肯定就是说,呃,没有,没有,没有走缩影啊。这个也是这个问题的话,我们在面试的时候也会经常问到,为什么就说我们设置了缩影,他没有走啊?这个原原因很多, 下面的话我也列出了一部分,第一的话是 well 和和等这样的条件,它避免是数据类型转换,如果数据类型转换的话,包括它的什么,呃,它的类型 啊,就是这个我们等前面的呃,左边的和右边的这种呃类型不一样,他做转换的话,他的那个摄影他都会失效的哈。 还有一个是什么避免函数函数啊,避免函数函数转换的话也会是失效的。 另外一个是什么呢?另外一个避免那种星就是我们要查询,查询的话并不会影响他所有的时效,关键是在影响网络传输啊,影响网络 i o 他这个未成数,尤其是在数据库高版本的数据库当中的话,他把这个数据库这一块的话,他是呃自动是优化了。其实我们比如说我们像以前的话,我们会经常考什么史莱克的一啊,或者史莱克的零啊,对吧?他的 count, 然后查询他的数量,这样的话可能性能会高一点。 最近几年他数据库他的一个他内部就优化了,你插星和插一他的数量他的性能上面是相等的,他的内部已经优化了,所以这样的话我们就省了一些事。关键是什么呢?关键是你要插星的话,他把所有的字段都查出来,他从网络传输上面他会消耗性能的 啊。他我们尽量不要这样子啊,因为网络传输的话也是一个很大的一个消耗哈。 另外一个是 like, 我们 like 的话我们尽量什么?我们我们要满足最主匹配原则,嗯,这这是一句话, 这句话是非常重要的哈,就最左匹配原则,因为往左的话,因为数据库他查询的话,他是从左开始匹配的,所以我们优先去满足左边的啊,尤其是像这种要开始什么什么或者是什么什么,然后我们前面的话最好不加,最好不要加这个百分不好, 这种的话性能的话那他肯定就是比呃,就是两边都加的话会性能会高一些,因为他从左边开始匹配的啊,后面的话像这种像这种查询就用的比较多了,不要在这外 当中带有函数,函数计算或者类型转换啊,还有怎么印那么 n 个,他 像这种的话就是那个菜的这种东西,反正那么他的一对吧,我们要查一条的话,我们尽量的话就要加上他不要就是说在 在那个呃,就是让这种程序或者业务逻辑当中在判断。其实我在 最近工作当中的话就遇到过他查一条,他也会把所有的都查出来,然后在逻辑在那个就代码当中啊,后代逻辑当中他在用个什么就查,就就是呃盖的 boss 的就查就就查,就用栏目的表示再取第一条,这样的话就是 就是无谓的这个性的损耗哈,因为你从数据库已经查出来了,都查到都查到哪里了,都查到业务服务器上面去了,然后再从业务服务商家去 一条,这样的话就感觉就感觉就是浪费了很多哈。还有这个表关联,表关联的话我们尽量不要超过三个表关联哈, 一般的话就是三个是最多了,然后超过四个的话你就要考虑了。然后是不是我们在做设计库设计的时候是设计的不合理, 嗯,那我们设计的不合理的话,我们要就要改进了哈,不要就是说有时候七八个表或者是五六个表,那这样的话肯定是在我们设计的时候是没考虑清楚,一般的话不要设计这么深啊,设计的越深的话,那我们查一个东西, 他的那个性能会损耗很很很多。 还有一个我们见锁引的时候,这个要记记记记记一下,就 数据后更新频繁或者重复度比较高,不适合见缩影啊。比如说我们一个表里面 呃,我们大概播到九点啊,大概播到九点都差不多,那这我们看吧,我们尽量我们呃把这个文档讲完的话,后面的话我们就看群里面我们留言的一些在沟通吧。这样子。 另外一个我们就是说在我们查询的时候还有什么 left left 状元或者是 after 状元,或者或者是什么 左左右关联,或者是什么阿布特,就是全关联这种,我们尽量不要这样子,因为尽量这这样子的话,我们就会那个什么,就会就是浪费了很多的这个性能哈,不要 左观点右观点,他会查把左边或者右边的全部查出来,或者是两个表之间都会查出来啊,这样的话会浪费啊。还有这个哈,像 unit 二和 unit 这两个大家我不知道有呃,他们两个在什么程度,有有有什么有什么区别 啊?用这个号的话是什么?他是不是他不判断的哈啊?他不判断的就是左边,就是他会把两个语句所有的都,所有的这个语,所有的这种呃,产品的那个记录啊,都会呃合并起来啊,合并的过程当中他不会做任何处理的, 他直接就把他给合并起来了,要 unit 的话他会做处理哈,他的性能会低一点,比如说有重复,有重复子弹,或者是啊有重复的这个呃数据行,他就会把它合并的。 另外一个就是数据库优化常用命令,这个要注意一下,我们可以查看就是当前当前数据库引擎啊,当前数据库引擎他的什么他的现成数, 它的线程数哈,就是像比如说我们查实呃数据库,呃就是在挡住了或者 local 住了,那我们要查出来,查出来的话就是把它给设给它给 q 掉哈,还有一些什么慢渔具啊,像这个状态的慢渔具。 另外一个就是说我们查慢语句,他的一个呃设置,就是我们设置多查询消耗多久,我们就定义为他是慢日志啊,慢查询,还有这些就是查看表啊,大家都注意一下,这样 这东西的话,有时候我们可我们这些东西我们都是应该记住的哈,记住的过程当中的话,我们在做这种数据和优化的时候,我们在做开发的时候,查找问题的时候,我们就会省很多时间啊,不用,就是说在百度上面,或者是在呃呃再再去 查一些资料去看,对吧?比如我们查看一说这个引擎的话,我们直接用 shouting desk form 查的表明就可以了, 往这阵的话都应该背下来,我就感觉哈,因为有时候的话像这些这些常用的命令,这个应该可以背下来的。后面的话就是对呃缩影做缩影的,比如说我们组穿件缩影啊, 或者是像这种符合缩影,那我们要也要都都记下来,不然的话我们呃有时候有时 说什么呢?有时候我们在 secre 语句的当中,或者是在做条件的过程当中,那我们有时候是什么?有时候是多个阶段,那多个阶段的话我们不可能就是单个缩影一个一个的去见啊,这样的话有点浪费哈。 还有一个我们就是要用什么?要用复合缩影,复合缩影的话见到语句是这样子的, 还有个什么,我们建了以后的话,如果可以,呃,在做修改的时候,我们可以把这个 ship 给删除掉啊。删除掉的 其实上面的话主要还是从什么呢?还是主要从设计过设计以及就是说我们设计过语句啊这两部分,其这两部分来讲的。这个的话就是我 我们开发的,开发的时候就用的会比较多啊。对,开发人员,呃,可能就是说这两个是注意比较多,记得关注再走哦。


链接,卖 s q l 数据库,我在电脑上安装了一个卖烧烤数据库,来尝试连接一下。 首先我们输入 c, m d, 打开命令提示符, 在这块我们输入 net start methoco, 就是开启 methoco 服务, 它会提示你 mysco 服务正在启动,已经启动成功,我们接下来把这个关闭掉, 然后安装好一个连接 miceco 图形化的一个界面的一个软件,我们就可以直接图形化界面去操作 masco 数据库, 在这里我们输入一个名称,点击确定,然后用户名是 route 不变, 我的 messical 主机就是我电脑自己也可以写 local host, 也可以写电脑的 ip 地址,密码是一二三四五六, 默认保存密码,自己用学习可以设置这么简单的密码,如果说大家在 工作环境或生产环境,建议设置一个复杂的密码,我们点击测试链接,它会提示你 connect successful, 也就是说连接成功,点击确定,然后点击连接,然后他会提示你您已变更连接细节,你要储存变更吗?是 现在我们已经连接到了 messacle 的一个数据库,这个是数据库的名字,叫做小伟,当然也可以我们删掉删除数据库是 也可以自己创建都可以,它默认有一个 massacle 的名字,就叫 massacle 的一个数据库,里面有一些表格,这是我们数据库自己的,比如说它的密码, 这些我们都不要去改变它。 如果说需要另外学习的话,我们新建新建一个数据库即可,比如说测测试基本字符是 j b 二三幺二,下面就是 j b 二三幺二 china 杠 d 创建, 然后之后我们就在可在这个数据库底下,然后创建表格,创建数据库,数据表列名数据库类型, 然后这边就可以学这个数据库类型,然后长度默认主键,这些都可以自己去选择。 西安华彩网络出品,新华三陕西一级代理商,瑞杰一级代理商 销售新华三瑞杰路由器、交换机、防火墙上网、行为管理、无线控制器、无线 ap 服务器、工业交换机等联系我们赵公幺七七九二七九零八三八。

各位同学大家好,本小节我们一起来学习 massacre 水库这种标识,了解 massacre 水库系统标示会安装 massacre 水库服务,并可以通过客户端进行水库操作。 我们先来看一下买车后介绍。买车口是一个小型官型数据库管理系统,被广泛的应用在 internet 上的中小型网站中。 它的开发者是瑞典买烧烤 a b 公司,在二零零八年被上公司收购,现在买烧烤属于 oracle 旗下产品。 买烧烤数据库由体小、速度快、成本低、开放圆满的特点,一般中小型和大型的网站的开发都选择买烧购作为网站数据库,是 最受欢迎的 c 库之一。 massaco 服务器安装要使用 massaco 数据库,需要先进行 massaco 服务器的安装。第一步,从官网下载安装包。第二步,安装 massaco 服务器。 我们打开谷歌浏览器,进入满十二口官网,官方网址是三 w 点满十二口点 com。 用官网后我们发现整个网站都是英文,可以在链接后面加杠精。 进入中文官网,我们要找到下载入口,拉到在页面最下面可以看到有下载产品列表,我们选择第一个买烧购社 版本,点击后就是下载页面,我们可以看到当前最新版本是八点零点三一推荐下载的是 windows 安装版,当然也有解压版,这里我们下载安装版。点击进入安装版的下载页面, 我们选择第二个离线安装版,第一个是在线安装版,点击下载这里我们不注册账号,选择 no sense。 可以看到谷歌浏览器左下角已经开始下载, 这里我已经下载好了,版本是八点零点三零,大家如果想要下载之前的版本,可以返回到上一个页面,点击档案, 这里可以选择以往的版本进行下载。 接下来进行买 shogo 服务器安装,找到已经下载好的安装包,然后双击运行, 这里会先安装满小狗安装器, 这里需要耐心等待一下。 接下来通过安装器安装,我们收购服务选择安装的类型是警服器安装,其他类型有默认安装口端安装安装所有 自定义安装。点击下一步,这里要点击执行。要注意的是买烧烤服务器用行会依赖一些环境,如果提示下载安装点 net 等大家按照提示操作即可。点击执行 以及下一步,这里要进行产品相关配置,点击下一步。 首先配置的是类型和网络,这里默认是 t c p ip, 网络端口是三三零六。点击下一步, 这里配置的是身份证验证方法,默认即可。点击下一步配置。账号 和角色,这里需要填写 look 的密码,我们这里只是进行学习,建议密码简单好记,我们的密码设置为 look。 点击下一步配置 windows 服务默认即可。点击下一步 服务器文件权限默认即可。这里可以知道买 circle 数据库文件默认是存放在 c 盘下,下一步 点击执行。当所有的配置步骤都变成对勾时,表明完成了买收购服务器的安装好,点击完成。点击下一步 点击完成当我们完成买 circle 服务器的安装,需要进一步验证。安装后,我们可以找到三个快捷方式, 第一个是买十二口的安装器,另外两个是买十二口的命令行客户端,我们打开命令行客户端,就要输入密码 入他回车出现了欢迎界面,显示了当前买烧购数据库的版本为八点零点三零。比如说我们的买烧购服务安装成功了, 我们切换到 ppt, 如何启动或停止买收购服务呢?我们使用 model 加二打开运行, 输入 s e r v i c e s 叫 m i c 回车,打开 windows 服务。其他方式打开服务,也可以在服务列表中找到满折扣服务。 买烧烤八零在左侧就可以对其进行启动或停止。 我们也可以使用买 circle 命令来操作数据库,比如当前列表中的一些命令。收 database 用来显示数据库, read database 数据库苗用来创建数据库。 use 数据库苗可以连接数据库。 so tables 显示数据库下的表, table 表面自断列表用来创建表 d e s c 表面显示表结构 e s i t 退出数据库。接下来我们演示一下使用买 circle 自带的命令行客户端, 输入 qq 密码 logo, 首先使用命令收 d 叉 base 显示数据库, 可以看到该命令常用出了数据库列表,这几个数据库是系统自带的,大家不可随意删除。然后使用 create a titter table 数据库名来创建数据库, 对控名称为 test。 回车执行成功,使用上一条命令收 database 显示数据库列表。 我们发现 test 数据库碰见成功了,可以使用 user 数据库名连接数据库 回车,这里显示数据库已更换,表明已经成功连接 test 数据库。 接下来可以使用搜 tables 查看 test, 注意库下的表, 发现是空的。接下来我们可以使用命令创建表,这里创建一张学生表, 后面是表的字段 id, 硬的类型物为空 至键再新建一个字段,内蒙, 大力型,长度是二十五为空, 你说显示已经创建成功。紧接着我们可以使用 d, e, l, c 丢动它。查看表的结构, 可以知道该表有两个字段, id 和内蒙。当然我们也可以对表的数据进行专业改查,大家自行练习即可。最后我们使用 e s i t 退出,出一步切换到 ppt。 最后给大家介绍一款客户端软件 circle young, circle younger 是一个易于使用的快速而简洁的图形化管理。买 circle 数据库的工具,它能够在任何地点有效地管理你的数据库。 找到 sarco 要的快捷方式,双击打开。首先需要连接买 saco 服务器,买 saco 主机地址是本地 locals 的用户名是入他,密码是入他 端,口号是三三零六,可以进行测试。连接显示可以连接成功,我们点击连接按钮。连接到服务器后,我们可以看到刚刚通过命令创建的数据部 task, 我们点开 里面有我们创建好的 c o 动态表。左标右击改编表, 可以查看表的结构。鼠标右击打开表,可以查看表 记录。我们发现通过图形化界面可以更加方便的查看数据库表结构和数据。 这里希望大家区别数据库服务和客户端软件,不要认为安装了客户端软件就可以连接数据库了,需要运行买售后服务器,客户端才能访问到 最后都会提供一些 epi 去操作水库命令,行客口端是通过执行命令来操作水库, 这个样子是自家家开发的。然后是利用买收购提供的 api 操作数据库。最后我们要学习 gdbc, 它也是通过执行买收购相关的 api 去操作数据库。 交纳 ppt, 接下来我们进行小结,本小结我们学习了买烧购书 库。我们知道买车购是一个小型关行税库管理系统,可以在官网进行下载,下载的版本是社区版本,安装时仅安装服务器, 安装需要检查下载依赖环境,默认 pcp ip, 网络端口是三三零六账号密码,建议简单设置,要配置 windows 服务,我们默认即可。 我们可以通过各种方式打开服务,然后找到买车购服务,对其进行启动或停止。我们还演示了一些车购命令,希望大家要熟悉。 最后介绍了收购样额客户端,方便我们去操作税库。同学们,以上就是买收购税库的学习,建议大家观看学习。

那在讲新的内容之前呢,咱们把上午所讲的内容做一个小节啊,做个小节,那上午呢,咱们讲了这样几个核心的概念,第一个呢叫数据库管理系统,第二个叫数据库,第三个就是数据库表, 数据库表,那数据库表呢?也就是咱们所说的这个关系表,也就是这个二维表啊,叫二维表,二维表,那什么是二维表?那日后呢?他就有行和列,就行和列啊,这个东西组成的,那日后呢?长得可能就这样, 就这样啊,这就是一张二维表啊。好了,那在买车扣说管理着很多的数据库,你注意看啊,日后在你的买车扣里边可以有很多的数据库,可以有很多的数据库,那 每一个数据库呢?又可以对应着很多表啊,那所以说啊,一个改色孔里边他可以有很多的数据库, 并且这个数据库里边还可以有很多的表,很多的表啊。在实际的开发环境中,一个数据库一般对应着一个应用,这个应用呢指的就是一个应用程序啊,一个应用程序,那数据库中保存着很多张表, 一定要注意关系啊,有很多的数据库,每一个库里边呢还能有很多的表,一张表对应着不同的业务,不同的对应业务,那表彰保存着对应业务的数据啊, 那啥是业务呢?那你比如说你想完成一个银行转账这样的小系统的话,那首先你是不是得有一张表啊? 表里面记录的是某个人啊,他的余额呀,等等等等啊,这呢就相当于一个转账的业务,那这张表呢,咱们就可以叫他账户表,账户表,那后续呢?咱们会根据这个业务啊,后续呢还会继续去讲。现在你知道啊,这个满色沟里边, 看这个图来,在满色口里边,你指的就是日后呢,你可以有多个数据库, 每一个数据库呢,还可以有多个表。就这关键啊,他先是库,库里边呢有表,那如果你的电脑要是安装了满足够的软件,那就可以称为是满足够的服务器了,他就可以提供满足够的服务。 买收购中管理着多个数据库,数据库中包含着多张表,表中包含着多 叫数据啊,一个表里边有多叫数据,其实之后呢,咱们会经常称他为叫表,那这个表指的是啥?就是数据库里边的表,他也称为叫数据库表, 数据库表啊,数据库表,那所以说呢,日后咱们就可以给他简化,直接叫他表就成了啊,这就是他们的关系里边可以有多数据库, 每个库里边分有多个表,多个表,多个表,那一张表里边可以有多条数据啊,多条数据,那这以上呢,就是对于上午咱们所讲的一个小节了,那数据库管理系统干嘛?就是管理和维护你数据库的, 那你数据库里边可以有多张表,那当然啊,他管理的时候呢,你的数据库也可以有多个啊,也可以有多个。

这里我准备了一张麦收购体系结构图,最上面这部分是客服端连接器,比如价位远连接麦收购用到的 g、 d、 p、 c, 还有 p、 h、 p 拍摄等等,都可以连接麦收购服务器。我们主要看下面这部分麦收购服务当体系结构它分为这么几层,首先是连接层, 主要用来处理购物端连接认证授权以及相关权措施,还有最大连接数等等,都是在这一层来处理的。比如我们连接服务端的时候,输入用户名密码,然后在连接层就会做交易,交易密码是否正确,以及当前用户具有什么样的权限, 这些都是连接层的工作。连接层往下就是服务层,那收购大多数核心功能都是在服务层实现的,比如跨传出引擎的实现、收购接口、 dml、 ddl 语句的封装、 存储过程、试图触发器等等,还有解析器、优化器、缓存以及不分类参数的执行,都是在这一层实现的。然后继续往下就是引擎层存储,引擎控制的是数据的存储和读取方式,这个我们前面也提过,麦收购给我们提供了很多的存储引擎,比如 我们前面介绍过的印度 db、 macio、 common 的存储引擎,还有 max、 arm memory 等等。如果这些存储引擎满足不了我们的需求,我们还可以进行扩展,你需要用就把它增加进来,你不需要就可以把它拔掉,这就称之为一颗插拔式存储引擎。然后你注意看,这里有一个 index, 也就是锁引, 他是在引擎层实现的,这是我们后面要讲的重点。既然输赢是在引擎层实现的,那也就意味着不同的存储引擎,所以呢,结构是不一样的。注意,数据不是存在存储引擎的,存储引擎工作是数据怎么组织、怎么存、怎么取,但最终这个数据还是落在磁盘上,所以最后还有一层 储存,用来和存储已经交互存储具体的数据。当然还有一些日志数据,比如 redo log、 undo log。 所以二禁止日志、错误日志、查询日志、慢查询日志,这些我们后面都会一一介绍,现在你想有个大致的了解。

哈喽,大家好,我是小成。那这期视频的话呢,和大家分享一个小知识点,就是我们如何来使用买搜扣版的云数据库。为什么要使用这个云数据库呢?其实他用起来很简单,而且也很便宜, 你只需要购买,然后注册,注册完了之后呢,不管你的项目是在自己的电脑上啊,不管你是 windows 电脑还是麦克电脑,或者说你的项目是在你的一个服务器或者虚拟主机上啊, 无所谓,在哪都可以。然后你只要有了这个云数据库呢,你用一个呃数据库的地址,账号密码,然后呢就可以访问到你这个云数据库,而且它容量呢也可以弹性的增加,然后费用也很低。 而且如果你是新手的话呢,你用一个数据库,你在自己的电脑上就不需要再装码搜口了,这样的话对于有些新手可能不太会装环境的来说,呃也是一个 很方便的地方。那这期视频的话,我就以阿里云的满搜口云数据库为例,给大家讲一下如何来购买注册和使用这个满搜口云数据库。那我用电脑给大家操作一下, 首先呢我们打开这个阿里云的官网,百度阿里云,然后,然后因为我已经打开了,然后你就去这个产品,这不有个产品对吧?然后产品里边有,呃热门产品,热门产品你 搜一下,呃,这个,这个里边没有弹性肌酸存储数据库,那这里就有一个云数据库,他数据库里边有很多种的数据库,你可以根据啊自己的需要去使用。那我的话,我觉得因为我是平时是用 pcp 的,所以说我就用这个云数据库。二 ds 买搜扣版,他其实就是 是一个买收口版的元素女库,那你看后面点着 hote 就代表他用的人很多,对吧?很火热,我们点进去, 然后我们点立即购买就可了,就可以了。他第一年就是你第一次购买的时候呢,他是很便宜的,大概一年只有十几块钱,二十块钱,那后面可能贵一下,但是你也可以一下子买好几年,这样的话就是你前几年都是很便宜的。 呃。基本上阿里云的产品都是你首次购买的时候都很便宜,所以说如果你觉得你要长期用的话呢?你可以第一次购买的时候就买的那个年限长一点,你看限时优惠十九块九每年,对吧?你可以呃,买的时候就把它买的时间长一点。 那我们就比如说我们先关了这个,我们就正常购买,他其实有一些活动,你比如我刚才点这个按钮,他会有很多活动。呃。但是如果 说你正常购买的话可能会贵一些,可能会贵一些,那我先点立即购买试一下,然后他就问你包年包月,然后地狱,这个你就选一个离自己家近的就可以了,然后类型就选马苏口,然后系列的话就就选基础版就可以。 我这个之前就是选用的基础版,这个高科硬板好像贵不少,就选基础版就可以。如果说你需要这种安全性啊,呃,比较高的话,你可以选这个高科硬板,然后存储类型,这个是 ess d, 这个应该就是一个混合硬盘。 ssd 是不是应该更贵啊?差不多, 然后青岛,然后选配置,配置的话你可以选一个啊,很低的配置,刚开始,然后呃容量的话二十 g 起步,然后购买时长是呃一年,那因为我这 是没有参加他的任何活动,所以说一年是四百块钱,那如果你参加了他的活动的话呢?其实第一年是很便宜的,大概也就几十块钱就可以买到,那我这个因为我已经购买了,所以说我就 就不点下一步了。然后呢,其实你点下一步,如果你是首次购买的话,你就一步一步操作,然后最后付款就可以了,然后付款完成之后呢?呃,他这就有一个阿里云的首页,你从阿里云的首页也可以从从哪个地方,或者你从哪个地方进,也可以就是这有一个控制台, 或者说你从一个数据库这个管管理页面进这个管理控制台也可以,然后进去控制台, 接着控制台之后找到你这个云数据库。二 ds 版你购买了吗?对吧?然后点进去我这个就已经购买了。然后呢你就能看到自己的一个实力, 包括他的使用情况,那你看我的使用情况只有呃,零点零点七三百分,之所以说我的使用频率是很低的。 然后呢实力列表,这有个概数,因为我这个概数的话就是你有多少个数据库实力,然后你可以点一下你的实力列表,那我这里边就只有一个实力是包你包月到一百五十七天后到期,是马修口八点零版本,哎。然后呢你可以点这个管理, 点视力后面这个管理,然后呢他就可以看到你这个数据库的一个基本的情况,这样配置,对吧?然后包括这个你用了多少空间?一共有多少空间,对吧?然后呢就都可以看到,然后呢他这个地方有一个登录数据库,登录数据库呢,其实就等于是用了一个 这个阿里云的一个简单的数据库的管理工具,但是这个数据库的管理工具大家看起来是不是很复杂呀?对吧?然后用起来的话也很麻烦,这个我感觉这个页面好复杂呀,所以说我没有用这个,我就把它关掉, 我们不需要用他来动数据库。呃,我们等一会把这个数据库地址记下来,然后把他的账号密码记下来之后呢,我们直接可以用我们的服务器或者用我们的电脑就可以登录他的数据库, 那我们现在点这个账号管理。账号管理,你看我这现在是有两个账号,对吧?那如果你创建账号的话呢,你就可以在 就可以继续创建,创建很多这个数据库的账号,然后这有一个数据库玩的, 你点这个创建数据库呢,就可以创建数据库,他其实是这样的,你比如说你创建了一个数据库吧,叫 tix 的 三,然后呢 utf 杠八这个自负极的格式,一般我们都是选这一个, 呃,然后授权账号,就是刚才我们不是有一个账号管理吗?账号管理里边就有你创建的数据库账号,然后呢你选了一个账号,呃,比如说我选这个 tice 二,那等会用 tice 二这个账号来登录 tice 三这个 来登录太三这个数据库的时候呢,就可以登录。如果你不授权账号的话呢, 那这个你这个数据库就没有账号可以登录了,对吧?然后呢?这个权限是读写,然后你创建, 然后呢?我刚才就又创下了一个数据库 杠三,对吧?然后呢他,嗯,这个数据库的话,他绑的账号就是太子的二,就是说太子的二可以放在数据库,那我之前呢还有一个账号是太子的二,也可以访问 hhh 这个数据库,对吧?这个都明白了, 然后我们可以看一下账号里边呢有一个泰斯特一,那泰斯特一刚才我们刚才新建数据库的时候为什么没有问,呃,是否给泰斯特一赋予权限呢?因为这个泰斯特一呢是默认的一个账号,就是你购买完成之后,他就会给你这个实力分配一个这样的账号, 就是他是一个高权限账号,高权限账号默认就是说可以操作所有的数据库,所以说他就不需要给太司第一分配权限了。呃,那太司二呢?就是一个普通账号,那我刚才给太司得二分配了权限,就是他可以操作我新建的那个数据库。然后我们现在再点一下这个 数据库连接,那数据库连接的话呢,这样就可以看到有内网地址,外网地址,还有他连接这个数据库所用到的这个端口, 那这个内网地址就是说,呃,如果你恰好买了同一个地域的阿里云的服务器,那样的话,你就可以在连接数据库的时候呢,这个数据库的地址就可以填这个内网地址。 但是,嗯,如果你没有,并没有购买同一个地域内的阿里云的服务器,你就不要填这个内网地址,你就填这个外网地址,对吧?填这个外网地址,然后就可以,呃,连接数据库,然后通过账号密码,然后后面有一个设置白名单。 设置白名单的话,就是说你需要设置一下你这个访问这个数据库的这个服务器的这个 ip 地址。那如果你是自己的电脑的话呢?你首先需要知道你自己电 看到我的这个有一个官网的 ip 地址,你,你需要啊,把他在这个白名单里边设置设置进去, 这里有一个,呃,添加,添加白名单分组,对吧?或者说是添加白名单分组,哎,不对, 这里有一个修改,那我这个这些就是已经添加进去的了,我可以点一下后面这一个修改白名单分组吗?对吧?然后把把你的这个白名单添加进去, 这里有好几个分组,是因为他可以给不同的数据库设置不同的白名单组,这个明白吧?那我用的是这个组,所以说,呃,如果说你新建了一个分组的话呢?你需要把你这个白名单添加进去,就说允许这个 ip 地址来访 你的数据库。设置好这个白名单之后呢,返回这个数据库连接这个页面,然后我们找到这个外网地址, 因为我之前已经设置好白名单了,就是说,呃,这个地址就是我的这个我这个电脑的 ip 地址,那我可以看一下我电脑的地址,我用的是花生壳这个内网穿透,那我现在电脑的地址是幺幺九点幺六六点幺三四点幺二零, 那我就关了,那这个地址我已经填上了,所以说我现在可以直接连接,我们点一下数据库连接,那我们就通过这个外网地址来连接,复制一下这个外网地址 复制,然后呢我们找到数据库管理工具 这个 luck, 然后我们新建一个买收口的连接, 连接名的话我们就随便起一个名吧,叫测试二二二二二二。然后主机地址的话,我们就粘贴上刚才那些地址,然后用户名的话,我们就找到这个账号管理,然后输上 fast 二 密码的话,哦,这个密码我忘了,我重置一下吧。重置密码我随便起一个吧, 随便起一个,然后确定 刷新一下,然后我把我刚才输的这个密码太二的这个密码输在这里 测试连接, 哎,连接成功,那我们保存一下,然后连接,那这样的话我就已经连接到我刚才创建的数据库了,那大家就可以看到这里边有一个数据 裤,就是 hhh, 还有个数据库就是 fast 杠三。那为什么是这两个数据库呢?是因为我们点开这个数据库管理,看一下这个 hhh 跟 tst 三 他绑定的账号是太死杠二,对吧?所以说呢,我登录太死的二这个账号的时候呢,我就可以访问这两个数据库,呃,但是我访问不了太死第一这个数据库,因为太死第一这个数据库没有绑定这个太死的二这个账号,对吧? 那这样的话就是一个数据库的基本的使用的一个过程。那这期视频的话就和大家分享到这里,那如果你有什么其他的疑问的话呢,也可以在视频下方给我留言,如果我看到的话也会给大家回复的,那我们下期视频再见,拜拜。