文章目录
- Mysql必知必会系列一、入门准备和简单操作
- 1、前言
- 2、mysql先修知识巩固
- 2.1、数据库系统概述
- 2.2、数据模型
- 2.2.1、数据模型简介
- 2.2.2、概念模型
- 2.2.3、数据模型的组成要素
- 2.2.4、关系模型
- 2.2.4.1、基本术语
- 2.2.4.2、关系模型的数据操纵与完整性约束
- 2.3、数据库系统的结构
- 2.3.1 概念
- 2.3.2、数据库系统的三级模式结构
- 2.3.3、数据库的二级映像功能与数据独立性
- 3、mysql的下载、安装以及环境配置
- 3.1、mysql的下载
- 3.2、mysql的安装
- 3.3、mysql配置
- 4、mysql服务的启动和终止
- 4.1、Windows系统下
- 4.2、Linux系统下
- 4.3、Mac系统下
- 5、mysql命令行参数
- 6、mysql的登录和退出
- 6.1、用户登录连接
- 6.2、用户退出
Mysql必知必会系列一、入门准备和简单操作
1、前言
很久以前,博主在学习新知识的时候并没有记笔记的习惯,这样就导致了学的知识容易忘,还记得刚开始学语言的时候,其实很多头文件也会忘掉;而直到学算法后会慢慢补题,慢慢写自己的题解和算法讲解,我才养成了记笔记的习惯,现在我的
数量也非常多了,这也记录了我的成长,我也感觉到我学到了很多。所以,等到这次
快结课了,我想记录和整理我的
所学。这也是本篇及整个专题的来源。我希望读者也能养成记笔记写
的习惯,真的,这对你的帮助非常大!建议读者在学习过程中的时候多使用
的
文档或者用
mysql --help something
即可获取一些命令的解释和使用。
本系列主要参考王珊老师的数据库系统概论(第五版),一些理论知识都是从该书上整理出来的,也相当于博主的读书笔记。
读者在学习此文的时候根据自己的实际需求通过目录选择自己需要阅读的章节。
如果有错误或改进之处欢迎评论区留言。
2、mysql先修知识巩固
2.1、数据库系统概述
- 数据(Date)
简单来说,描述事物的符号记录就称为数据,它可以是数字,也可以是文字、图形、图像、音频等多种表示形式。数据是数据库中存储的基本对象。我们需要知道的是数据的含义称为数据的寓意,而数据和其语义是不可分的。
- 数据库(DataBase,DB)
数据库顾名思义就是存放数据的仓库,只不过这个仓库是在计算机存储设备上,而且数据库是按一定的格式存放的。 严格上来讲,数据库是长期储存在计算机内、有组织的、可共享的大量数据的集合。数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度(redundancy)、较高的数据独立性(data independency)和易扩展性(scalability),并可为各种用户共享。
概括的来说,数据库总共有三个特点:永久存储、有组织和可共享 三个基本特点。
- 数据库管理系统(DateBase Management System,DBMS)
这个就是一个计算机的基础软件。像等都是
,它主要功能包括一下:
- 数据定义功能。这需要
提供数据定义语言(DDL),用户可以通过它方便地对数据库中的数据对象的组成与结构进行定义。
- 数据组织、存储和管理。
- 数据操纵功能。这需要
提供数据操纵语言(DML),用户可以使用它操纵数据,实现对数据库的基本操作,如增删查改等。
- 数据库的事务管理和运行管理。
- 数据库的建立和维护功能。
- 其他功能。
- 数据库系统(DBS)
是由
+
+
(数据库管理员)组成的存储、管理、处理和维护数据的系统。其中数据库管理员在数据库的建立、使用、维护等工作中起着非常大的作用。
我们可以用下图形象的表示一个数据库系统:
2.2、数据模型
2.2.1、数据模型简介
数据模型(data model)也是一种模型, 它是对现实世界数据特征的抽象。 也就是说数据模型是用来描述数据、组织数据和对数据进行操作的。现有的数据库均是基于某种数据模型的。数据模型是数据库系统的核心和基础。数据模型应满足是三个方面的要求:
- 能比较真是地模拟现实世界。
- 容易为人所理解。
- 便于在计算机实现。
根据模型应用的不同目的,我们也将这些模型划分为两大类,它们分别属于两个不同的层次。 第一类是概念模型,第二类是逻辑模型和物理模型。
其中第一类概念模型(conceptual model),也称为信息模型,它是按照用户的管带你来对数据和信息建模,主要用于数据库设计。
而第二类中的逻辑模型主要包括层次模型(hierarchical model)、网状模型(network model)、关系模型(relational model)、面向对象数据模型(object oriented data model)和对象关系数据模型(object relation data model)、半结构化数据模型(semistructured data model)等。第二类中的物理模型是对数据最底层的抽象,它描述数据在系统内部的表示方式和存取方式,或在磁盘或磁带上的存取方式和存放方法,是面向计算机系统的。
2.2.2、概念模型
- 信息世界中的基本概念
- 实体(entity)。客观存在并可相互区别的事物称为实体。
- 属性(attribute)。实体所具有的某一特性称为属性。一个实体可以由若干个属性来刻画。
- 码(key)。唯一标识实体的属性集称为码。例如学号是学生实体的码。
- 实体型(entity type)。具有相同属性的实体必然具有共同的特征和性质。用实体名及其属性名集合来抽象和刻画同类实体,就称为实体型。
- 实体集(entity set)。同一类型实体的集合就称为实体集。例如,全体学生就是一个实体集。
- 联系(relationship)。实体之间的联系通常是指不同实体集之间的联系。实体之间的联系有一对一、一对多和多对多等多种类型。
- 概念模型的一种表示方法:实体-联系方法
该方法使用图来描述现实世界的概念模型,
方法也称为
模型,这里推荐一篇
:点这里。
2.2.3、数据模型的组成要素
一般地讲,数据模型是严格定义的一组概念的集合。这些概念精确地描述了系统的静态特性、动态特性和完整性约束条件(integirty constraints)。 因此数据模型通常由数据结构、数据操作和数据完整性约束条件三部分组成。
- 数据结构
数据结构描述数据库的组成对象以及对象之间的联系。 总之,数据结构是所描述的对象类型的集合,是对系统静态特性的描述。
- 数据操作
数据操作是对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括操作及有关的操作规则。 数据操作是对系统动态特性的描述。
- 数据的完整性约束条件
数据的完整性约束条件是一组完整性规则。
2.2.4、关系模型
数据库领域中主要的逻辑数据模型有:
- 层次模型(hierarchical model)
- 网状模型(network model)
- 关系模型(relational model)
- 面向对象数据模型(object oriented data model)
- 对象关系数据模型(object relational data model)
- 半结构化数据模型(semistructure data model)
其中关系模型是最重要的一种数据模型。关系数据库系统采用关系模型作为数据的组织方式。
2.2.4.1、基本术语
- 关系(Relation):一个关系对应着一个二维表,二维表就是关系名。
- 元组(Tuple):在二维表中的一行,称为一个元组。
- 属性(Attribute):在二维表中的列,称为属性。属性的个数称为关系的元或度。列的值称为属性值;
- (值)域(Domain):属性值的取值范围为值域。
- 分量:每一行对应的列的属性值,即元组中的一个属性值。
- 关系模式:在二维表中的行定义,即对关系的描述称为关系模式。一般表示为(属性1,属性2,…,属性n),如老师的关系模型可以表示为教师(教师号,姓名,性别,年龄,职称,所在系)。
- 键(码):如果在一个关系中存在唯一标识一个实体的一个属性或属性集称为实体的键,即使得在该关系的任何一个关系状态中的两个元组,在该属性上的值的组合都不同。
- 候选键(候选码):若关系中的某一属性的值能唯一标识一个元组如果在关系的一个键中不能移去任何一个属性,否则它就不是这个关系的键,则称这个被指定的候选键为该关系的候选键或者候选码。
2.2.4.2、关系模型的数据操纵与完整性约束
关系数据模型的操作主要包括查询、插入、删除和修改数据;这些操作必须满足关系的完整性约束条件。
关系模型中数据操作的特点是集合操作方式,即操作对象和操作结果都是集合,这种操作方式也称为一次一集合的方式。
相应地,非关系数据模型的操作方式是一次一记录的方式。
关系的完整性约束条件包括三大类:实体完整性、参照完整性和用户定义的完整性。
实体完整性定义数据库中每一个基本关系的主码应满足的条件,能够保证元组的唯一性。参照完整性定义表之间的引用关系,即参照与被参照关系。用户定义完整性是用户针对具体的应用环境制定的数据规则,反映某一具体应用所涉及的数据必须满足的语义要求。
2.3、数据库系统的结构
2.3.1 概念
在数据模型中有“型”和“值”的概念,型是指对某一类数据的结构和属性的说明,值是型的一个具体赋值。
模式是数据库中全体数据的逻辑结构和特征的描述,它仅仅涉及型的描述,不涉及具体的值。模式的一个具体值称为模式的一个实例,同一个模式可以有很多实例。
模式是相对稳定的,而实例是相对变动的, 因为数据库中的数据是不断更新的,模式反映的是数据的结构及其联系,而实例反映的是数据库某一时刻的状态。
2.3.2、数据库系统的三级模式结构
数据库系统的三级模式结构是指数据库系统是由外模式、模式和内模式三级构成。如下图所示:
- 模式(schema)
模式(也称逻辑模式)是数据库中全体数据的逻辑结构和特征的描述,是所有用户的数据视图。它是数据库吸引模式结构的中间层,既不涉及数据的物理存储细节和硬件环境,又与具体的应用程序、所使用的应用开发工具及高级程序设计语言无关。
模式实际上是数据库数据在逻辑级上的视图。一个数据库只有一个模式。数据库管理系统提供模式数据定义语言(模式DDL)来严格地定义模式。
- 外模式(external schema)
外模式也称子模式或用户模式, 它是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
外模式通常是模式的子集,一个数据库可以有多个外模式。它是保证数据库安全的一个有力措施,每个用户只能看见和访问所对应的外模式中的数据,数据库中的其余数据是不可见的。数据库管理系统提供外模式数据定义语言(外模式DDL)来严格地定义外模式。
- 内模式(internal schema)
内模式也称存储模式(storage schema), 一个数据库只有一个内模式。它是数据物理结构和存储方式的描述,是数据在数据库内部的组织形式。
2.3.3、数据库的二级映像功能与数据独立性
在2.3.2我们介绍了三级模式, 数据库系统的三级模式是数据的三个抽象级别,它把数据的具体组织留给管理,使用户能逻辑地、抽象地处理数据,而不必关心数据在计算机中的具体表示方式与存储方式。 为了能够在系统内部实现这三个抽象层次的联系和转换,数据库管理系统则在这三级模式之间提供了两层映像: 外模式/模式映像和模式/内模式映像。也正是这两层映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。
- 外模式/模式映像
模式描述的是数据的全局逻辑结构,外模式描述的是数据的局部逻辑结构。 对应于同一个模式可以有任意多个外模式。对于每一个外模式,数据库系统都有一个外模式/模式映像,它定义了该外模式与模式之间的对应关系,这些映像定义通常包含在各自外模式的描述中。
数据的逻辑独立性: 当模式改变时,由数据库管理员对各个外模式/模式的映像作相应改变,可以使外模式保持不变,应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性。
- 模式/内模式映像
模式/内模式映像是唯一的,它定义了数据全局逻辑结构与存储结构之间的对应关系。 该映像定义通常包含在模式描述中。
**数据的物理独立性: ** 当数据库的存储结构改变时,由数据库管理员对模式/内模式作相应改变,可以使模式保持不变,从而应用程序也不必改变,保证了数据与程序的物理独立性。
数据库模式即全局逻辑结构是数据据库的中心与关键,它独立于数据库的其他层次; 数据库的内模式依赖于它的全局逻辑结构,但独立于数据库的用户视图,即外模式,也独立于具体的存储设备;数据库的外模式面向具体的应用程序,定义在逻辑模式之上,但独立于存储模式和存储设备。
数据库的二级映像保证了数据库外模式的稳定性,从而从底层保证了应用程序的稳定性。数据与程序之间的独立性使得数据的定义和描述可以从应用程序中分离出去,由于数据的存取由数据库管理系统管理,从而简化了应用程序的编制,大大减少了应用程序的维护和修改。
3、mysql的下载、安装以及环境配置
3.1、mysql的下载
我们可以直接在官网下载,进入官网点击Downloads =>下载Mysql Community Editon社区版。
我们进入这个页面后根据自己的需要下载,这里选择大众的windows系统作为示例。
之后我们选择安装包下载即可。
3.2、mysql的安装
1.双击运行下载好的mysql-installer-community-8.0.25.0.msi,程序运行需要一些时间,请等待一下。
2.运行成功之后,进入欢迎的界面.选择我同意协议,不然无法进行下一步。
3. 进入类型选择页面,读者根据自己的需求选择呢即可。
- developer default(开发者默认):安装mysql开发所需的所有产品
- server only(服务器):只安装mysql服务器产品
- client only(客户端):只安装没有服务器的mysql客户端产品
- full(完全):安装所有包含的mysql产品和功能
- custom(手动):手动选择系统上应安装的产品
4.1开发者默认模式检测以下程序会安装不成功,点击下一步进入下一个安装流程—>跳到第5步。
check requirements:以下产品的请求失败,安装程序将自动尝试解决其中一些问题。标记为手动的要求无法自动解决。单击这些项目以尝试手动恢复。
4.2 选择mysql server(服务)
5.当我们点击下一步的时候安装程序出现了提示:(一个或者移动产品要求没有得到满足,那些符合要求的产品将不会安装/升级。你想要继续吗),这里我选择的是:YES。
6.在安装所选界面能看到我们接下来所需要安装的程序,点击execute。
这个时候,我们就开始进入安装进度页面了,安装需要一些时间,我们等待些许时间即可。直到界面出现如下:
我们点击next即可完成安装。
3.3、mysql配置
- 完成上一步后,系统会弹出界面需要用户配置一些信息。在product configutration(产品配置)页面能看到需要配置的程序,点击next(页面英语介绍:现在我们将逐一介绍以下产品的配置向导。您可以随时取消,如果您希望离开此向导,而不必配置所有产品)
- .先配置mysql server的类型以及网络:type and networking(类型和网络),这里有两种mysql server类型,选择第一种类型点击next。
- 设置服务器配置类型以及连接端口:继续next。
- .配置root的密码(该密码要记住),系统提示这密码虚弱。这里建议使用一些容易记住的密码。这里不提供密码找回方法。
- 添加其他管理员,点击add user 输入账号密码点击ok(如果添加的管理员只允许在本地登录就将host改成local),回到界面之后点击next。
- 配置mysql在windows系统中的名字,是否选择开机启动mysql服务,其它的没进行修改,点击"Next"。
这些重要的步骤进行完之后,后续就可以直接点击next即可。关键需要注意的就是在环境配置这里。我们需要配置环境变量。
7.配置mysql环境变量上面安装的是时候我们看到mysql默认安装路径是:C:\Program Files\MySQL\MySQL Server 5.7
我的电脑右键—>属性—>高级系统设置—>环境变量—>新建MYSQL_HOME,将安装目录输入:
找到path编辑:输入%MYSQL_HOME%\bin
完成以上步骤之后,就大功告成了,当然,这个时候我们还需要检测自己是否真的成功配置好了。那就欢迎读者继续往下阅读咯!
4、mysql服务的启动和终止
4.1、Windows系统下
- 服务启动
我们通过(如果设置了管理员权限需要打开管理员权限才可以启动
) 进入命令行窗口,这个时候我们如果需要使用
就必须先启动
服务。
我们通过net start mysql
即可启动服务。 - 服务终止
当我们在不使用的情况下,我们直接关闭窗口是不会终止
服务的,这是一种不好的习惯,所以我们在使用完
之后一定要终止五福。
我们通过net stop mysql
即可终止服务。
4.2、Linux系统下
- 服务启动
我们可以通过service mysql start
启动服务。 - 服务终止
我们可以通过service mysql stop
终止服务。 - 服务重启
我们可以通过service restart stop
重启服务。
4.3、Mac系统下
- 服务启动
我们可以通过mysql.server start
启动服务。 - 服务终止
我们可以通过mysql.server stop
终止服务。 - 服务重启
我们可以通过mysql.server stop
重启服务。
注:博主这里虽然列写了三种系统服务的启动和终止,但由于博主用的是
,所以后续是以
为基础讲解mysql。
5、mysql命令行参数
Usage: mysql [OPTIONS] [database] //命令方式
-?, --help //显示帮助信息并退出
-I, --help //显示帮助信息并退出
--auto-rehash //自动补全功能,就像linux里面,按Tab键出提示差不多,下面有例子
-A, --no-auto-rehash //默认状态是没有自动补全功能的。-A就是不要自动补全功能
-B, --batch //ysql不使用历史文件,禁用交互
(Enables --silent)
--character-sets-dir=name //字体集的安装目录
--default-character-set=name //设置数据库的默认字符集
-C, --compress //在客户端和服务器端传递信息时使用压缩
-#, --debug[=#] //bug调用功能
-D, --database=name //使用哪个数据库
--delimiter=name //mysql默认命令结束符是分号,下面有例子
-e, --execute=name //执行mysql的sql语句
-E, --vertical //垂直打印查询输出
-f, --force //如果有错误跳过去,继续执行下面的
-G, --named-commands
/*Enable named commands. Named commands mean this program's
internal commands; see mysql> help . When enabled, the
named commands can be used from any line of the query,
otherwise only from the first line, before an enter.
Disable with --disable-named-commands. This option is
disabled by default.*/
-g, --no-named-commands
/*Named commands are disabled. Use \* form only, or use
named commands only in the beginning of a line ending
with a semicolon (;) Since version 10.9 the client now
starts with this option ENABLED by default! Disable with
'-G'. Long format commands still work from the first
line. WARNING: option deprecated; use
--disable-named-commands instead.*/
-i, --ignore-spaces //忽视函数名后面的空格.
--local-infile //启动/禁用 LOAD DATA LOCAL INFILE.
-b, --no-beep //sql错误时,禁止嘟的一声
-h, --host=name //设置连接的服务器名或者Ip
-H, --html //以html的方式输出
-X, --xml //以xml的方式输出
--line-numbers //显示错误的行号
-L, --skip-line-numbers //忽略错误的行号
-n, --unbuffered //每执行一次sql后,刷新缓存
--column-names //查寻时显示列信息,默认是加上的
-N, --skip-column-names //不显示列信息
-O, --set-variable=name //设置变量用法是--set-variable=var_name=var_value
--sigint-ignore //忽视SIGINT符号(登录退出时Control-C的结果)
-o, --one-database //忽视除了为命令行中命名的默认数据库的语句。可以帮跳过日志中的其它数据库的更新。
--pager[=name] //使用分页器来显示查询输出,这个要在linux可以用more,less等。
--no-pager //不使用分页器来显示查询输出。
-p, --password[=name] //输入密码
-P, --port=# //设置端口
--prompt=name //设置mysql提示符
--protocol=name //使用什么协议
-q, --quick //不缓存查询的结果,顺序打印每一行。如果输出被挂起,服务器会慢下来,mysql不使用历史文件。
-r, --raw //写列的值而不转义转换。通常结合--batch选项使用。
--reconnect //如果与服务器之间的连接断开,自动尝试重新连接。禁止重新连接,使用--disable-reconnect。
-s, --silent //一行一行输出,中间有tab分隔
-S, --socket=name //连接服务器的sockey文件
--ssl //激活ssl连接,不激活--skip-ssl
--ssl-ca=name //CA证书
--ssl-capath=name //CA路径
--ssl-cert=name //X509 证书
--ssl-cipher=name //SSL cipher to use (implies --ssl).
--ssl-key=name //X509 密钥名
--ssl-verify-server-cert //连接时审核服务器的证书
-t, --table //以表格的形势输出
--tee=name //将输出拷贝添加到给定的文件中,禁时用--disable-tee
--no-tee //根--disable-tee功能一样
-u, --user=name //用户名
-U, --safe-updates //Only allow UPDATE and DELETE that uses keys.
-U, --i-am-a-dummy //Synonym for option --safe-updates, -U.
-v, --verbose //输出mysql执行的语句
-V, --version //版本信息
-w, --wait //服务器down后,等待到重起的时间
--connect_timeout=# //连接前要等待的时间
--max_allowed_packet=# //服务器接收/发送包的最大长度
--net_buffer_length=# //TCP / IP和套接字通信缓冲区大小。
--select_limit=# //使用--safe-updates时SELECT语句的自动限制
--max_join_size=# //使用--safe-updates时联接中的行的自动限制
--secure-auth //拒绝用(pre-4.1.1)的方式连接到数据库
--server-arg=name //Send embedded server this as a parameter.
--show-warnings //显示警告
这就是命令行的全部参数,我们可以通过
查看,只不过查看的是英文,这里全部翻译了。这里面的不需要全部知道,只需要会使用一些常用的命令行参数即可。
6、mysql的登录和退出
6.1、用户登录连接
当我们启动服务后,就可以登录了,登录命令如下:
mysql -h hostname|hostlP -p port -u username -p DatabaseName -e "SQL语句"
相信聪明的你一定可以按照上面的命令行参数理解这段语句的意思的!这里还是解释一下:
- -h:指定连接 MySQL 服务器的地址。可以用两种方式表示,hostname 为主机名,hostIP 为主机 IP 地址。
- -p:指定连接 MySQL 服务器的端口号,port 为连接的端口号。MySQL 的默认端口号是 3306,因此如果不指定该参数,默认使用 3306 连接 MySQL 服务器。
- -u:指定连接 MySQL 服务器的用户名,username 为用户名。
- -p:提示输入密码,即提示 Enter password。my
- DatabaseName:指定连接到 MySQL 服务器后,登录到哪一个数据库中。如果没有指定,默认为 mysql 数据库。
- -e:指定需要执行的 SQL 语句,登录 MySQL 服务器后执行这个 SQL 语句,然后退出 MySQL 服务器。
当然,我们登录有的时候并不需要写这么多,根据自己的需求来,博主平常登录只写mysql -p -u root
即可。这是最简的登录方式了。
6.2、用户退出
我们使用exit
或者quit
命令即可退出mysql
服务啦。