Mysql操作——数据库基础

本文主讲:关系型数据库的概念、及其一些核心的元素与简单的语法等等…..

数据库概念及作用【了解】

数据库的功能

概念:数据库是以一定格式组织的数据集合,通俗来说就是计算机内一些具有特殊格式的数据文件集合(数据库是文件)

作用:存储数据

image-20211011192834538

抛出问题:既然数据库是一种文件,那么我们为什么不用其他文件存储数据呢?因为数据库有以下优点!

1:持久化存储

2:读写速度极快

3:保证数据的有效性

4:对程序的兼容性好,容易扩展

数据库的分类及特点【了解】

据库排名网站:https://db-engines.com/en/ranking

数据库的分类

数据库一般分为关系型数据以及非关系型数据库

不同分类数据库的概念与特点

关系型数据库:是指采用关系模型来组织数据的数据库,通俗来说采用二维表格组织数据的数据库就是关系型数据库

二维表示例

image-20211011192909691

关系型数据库的主要产品:MySQL 、Orcle、SQLite(移动端)SQLServer

MySQL官网:https://www.mysql.com/

————————————————————————————————————————————————————

非关系型数据库概念:非关系型数据库也称为 NoSQL,即 not only SQL ,它是利用键值对 key-value等方式来存储数据的!

非关系型数据库主要产品:MongoDB 、Redis

关系型数据库与非关系型数据库的对比分析

关系型数据库优点:

1:用的是表结构存储数据,容易理解

2:使用的是通用的SQL语言

3:减少了数据的冗余和数据不一致的情况发生

4:可以进行表与表之间的复杂查询

关系型数据库缺点:

1:固定的表结构、灵活性不高

2:为了维护表结构而牺牲大量的读写速度

3:高并发读写能力差

非关系型数据库优点:

1:格式灵活,数据类型多种多样,可以是键对值,甚至是文档,图片,应用场景广泛,但是关系型数据库只支持原有的数据类型

2:数据没有耦合性,容易扩展

3:无需通过SQL层解析,读写能力较高

4:成本低、NoSQL基本都是开源,部署简单

非关系型数据库缺点:

1:不提供SQL支持、学习成本高

2:在数据复杂查询方面比较麻烦

以上信息参考网站:https://www.cnblogs.com/zedian752/p/11338139.html

数据库管理系统与SQL【了解】

数据库与数据库管理系统的关系

数据库管理系统概念:为了管理数据库而设计开发的软件系统,简称DBMS,它分为三大部分,如下!

1.数据库文件集合:主要是一系列文件,这些文件用来存储数据

2.数据库服务端:主要负责对数据库的文件和文件内数据进行管理

3.数据库客户端:与数据库服务端进行通信,负责用来传输数据以及接收数据

图示

image-20211011192948605

注意事项:数据库客户端想要通过数据库服务器获得或存储数据需要使用特殊的语言(SQL)

数据库与数据库管理系统的关系:数据库是一些特殊格式文件的集合,而数据库管理系统是对数据库文件进行管理的软件系统

SQL语句

概念:SQL是结构化查询语言,是一种用来操作 RDBMS (关系型数据库) 的数据库语言,它几乎支持所有的关系型数据库的数据管理操作,也就是说SQL是关系型数据库实现数据库客户端与数据库服务端通信的语言

语法表现形式:具有特殊格式的字符串

SQL语言的分类:

DQL:数据查询语言、用于对数据的查询,例如select命令

DML:数据操作语言、用于对数据记性增加、删除、修改,例如insert、delete、udpate命令

DDL: 数据定义语言、用于新建、删除数据库、表等,例如create(新建)、drop(删除)命令

TPL: 数据库处理语言、…….

DCL: 数据库控制语言、……..

主要学习前三个SQL语言即DQL(数据库查询语言) DML(数据库操作语言) DDL(数据库定义语言)

关系型数据库中的核心元素【重点】

一:关系型数据库中的核心元素

前言:关系型数据库是由不同数目的数据二维表构成,而数据二维表由数据行与数据列构成

关系型数据库的核心元素:

数据库:数据表的集合

数据表:用来存放数据的二维表

数据行(记录):构成数据表的行

数据列(字段):构成数据表的列

图示:

image-20211011193040501

注意事项:

1:数据表中每一个数据列(每一列)的数据类型都是相同的(字段),每一个数据行都是一个完成的数据实体(记录)

2:在关系型数据中心将二维表内的一行称为一个记录,一列称为一个字段

二:数据存入关系型数据库的步骤

1:新建一个数据库

2:创建存放数据的二维表

3:将数据存入到数据表内

MySQL数据库的环境搭建【了解】

掌握MySQL数据库的环境搭建及其操作方法

第一步:安装MySQL数据库的服务端(默认创建服务端以及数据库文件)
终端指令:sudo apt-get install mysql-server

截图:

image-20211011193105730

第二步:安装mysql数据库的客户端(图形化客户端)—— navicat

1:网上下载 navicat安装包

2:运行navicat这个包即可

看截图:

image-20211011193117486

数据库操作指令

1:启动数据库 sudo service mysql start

2:重启数据库 sudo service mysql restart

3:停止数据库 sudo service mysql stop

4:查看进程中是否存在 mysql服务 ps -ajx | grep mysql

指令解析:其中 ps 为linux查看所有进程指令 -ajx 为选项 -a 代表显示所有用户进程 -j代表任务格式显示进程 -x代表显示无控制终端进程 | 是管道指令 grep mysql 表示查看mysql的进程

截图:

image-20211011193158819

mysql数据库配置文件位置

路径:/etc/mysql/mysql.conf.d/mysqld.cnf

截图:

image-20211011193208464

配置属性如下:

image-20211011193215786

linux终端(客户端)连接mysql数据库与退出数据库

前言:在利用指令 sudo apt-get install mysql-server 安装mysql数据库服务端时,默认也安装了mysql客户端,我们可以实现在Linux终端连接 mysql 数据库

连接数据库指令:mysql -u root -p

注意事项:

1:再终端利用上述指令连接mysql数据库时,应先利用指令 sudo -s 进入管理员用户 才能连接mysql数据库

2:mysql刚安装时默认密码为空,在后期可以通过指令更改密码

3:linux终端连接数据库成功后,我们在终端输入SQL语句指令就可以控制 mysql 数据库了

指令解析:-u 代表用户选项 root代表用户名 -p 代表数据库密码选项

截图:

image-20211011193244856

退出数据库指令:exit 、 quit 、Ctrl键+D键

MySQL数据库完整性约束【重点】

数据库完整性约束

概念:数据库完整性约束用于保证数据的正确性,数据库客户端在更新、插入、删除数据时需要检查数据的完整性,核实其约束条件,从而保证更新数据时是正确的。

关系型数据库(mysql、二维表)完整性约束的分类:实体完整性、域完整性、参照完整性、用户定义完整性

关系型数据库的几类完整性约束

1:实体完整性约束

概念:实体完整性要求关系型数据库二维表的一个记录中(一行)只有一个主键,且不同记录的主键值不能重复也不能为空

图示(主键约束):

image-20211011193303887

2:域完整性约束

概念:域完整性是指关系型数据库二维表内的一列(字段)的数据类型都是相同的,还有可以约束字段其取值范围、精度等

image-20211011193316428

3:参照完整性约束

概念:参照完整性是关系型数据库内的父表删除某一个记录(一行)后,子表内的该记录(一行)也要删除!(父表与子表存在一定联系!)

4:用户定义完整性约束

概念:用户定义完整性是指关系型数据库二维表内的一个字段数据类型需要满足用户规定的类型,比如说,用户规定一个字段数据类型只能是数字,那么就不能向字段内添加其余的数据类型,再比如,用户要求一个字段内数据只能填写 男、女,用户就不能向这个字段内填写其他的数据!!

————————————————————————————————————————

not null 、primary key、unique key、default、foreign key 这几个约束分别属于什么类型的约束!

primary key:主键约束(要求主键列的数据唯一,且不为空!)它属于实体完整性约束

unique key:唯一约束(唯一性、可以空,但只能有一个)它属于实体完整性约束

not null:非空约束(设置该字段不能为空) 它属于域完整性约束

default:默认约束 (设置该字段数据的默认值)它属于域完整性约束

foreign key:外键约束(建立两表的关系)它数据参照完整性约束

客户端Navicat的使用【理解】

image-20211011193402647

连接本地数据库服务器!成功后,本地数据库自带的四个数据库文件!

image-20211011193409940

使用 Navica t创建数据库

image-20211011193417066

使用 Navicat 在数据库内创建数据二维表

image-20211011193426124

image-20211011193434572

image-20211011193443505

image-20211011193450447

注意事项:在新建的表栏右击选择设计表可重新编辑这个二维表

使用 Navicat 向数据库内添加数据!

增加数据

image-20211011193502928

删除数据

image-20211011193510093

导出 SQL 文件

image-20211011193527692

导入别人的 SQL 文件

image-20211011193534749

注意事项:

1:需要在建立的数据库栏右击才有运行 SQL 文件

2:导入别人的SQL文件成功后,需要重启数据库才能看到导入的数据表(图示的数据库为 python_database)

目标:掌握怎么在 Windows 系统内的 Navicat 软件上远程连接在Linux服务器上的数据库!

前言:我们在做web开发时,我们的数据库都是存放在服务器上面(linux系统),而且这个服务器是远程服务器,不在我们身边,这是我们就要学会利用 windows系统远程连接服务器数据库了!

在 Windows 系统内的 Navicat 软件上远程连接在Linux服务器上的 mysql 数据库!

准备工作:利用服务器上的 Navicat软件将服务器数据库用户权限更改(更改为可远程连接!)

image-20211011193556888

远程登录步骤:

第一步:Windows系统打开Navicat软件

image-20211011193607264

第二步:填写数据库信息远程登录

image-20211011193617724

MySQL数据类型【重点】

你问我答:为什么要有不同的数据库数据类型的分类

答:MySQL定义数据字段的类型(数据类型)对数据库的优化是非常重要的,MySQL数据库常见三种数据类型为数值(整形、浮点型)、日期/时间、字符串

MySQL数据库三大数据类型【数值(整形与浮点型)、日期、字符串】的分类!

1.数值——整形数据类型分类:

image-20211011193630371

应用场景:

1:存储一个班级学生的年龄选择TINYINT整形类型(因为年龄最大不超过255),这样占用的空间最少还能存储数据

2:存储中国人数选择INT整形类型(因为之前的类型范围不够),INT范围是42亿多呢,够用,用BIGINT的话就浪费资源,没有达到优化数据库的目的

注意事项:

1:在存储数据时同一数据类型的不同分类对数据库的优化是非常重要的!

2:最常用的两大整形即 tinyint与int

数值——浮点型数据类型分类

image-20211011193655835

注意事项:除了float与double浮点数类型,decimal 类型也可以表示小数,decimal定义的小数更加精确

image-20211011193705556

2.字符串数据类型分类

数据库字符串类型常见分类:char、varchar、text、enum、set

定长字符类型——char

适用场景:存储字符长度固定的字符串,比如说中国邮政编码、手机号、身份证号等

定义形式:字段名称 char(字符个数)

特点:

1:最长储存255个字符

2:如果实际写入的字符不足设定长度,内部会自动用空格填充到设定的长度,例如 char(5)存储数据 he(两个字符长度),但是却占用五个字符的空间(补全空格)

3:相对于varchar,读取数据速度更快

变长字符类型——varchar

适用场景:存储的字符长度不确定,比如姓名、用户名等

定义形式:字段名称 varchar(字符个数)

特点:

1:最大可存储65535(2的16次方减1)个字节的字符

注释:
• 一个英文字符占用一个字节

• UTF-8编码的中文字符占用三个字节

• GBK编码的中文字符占用两个字节

2:当存储的字符长度小于设定的长度时,按照实际的长度存储,例如varchar(5)存储he,实际占用三个字符(最后是/0)的空间,这是与char的区别

3:相较于char,存取数据速度更快

注意事项:char最大存储255个字符,varchar最大存储65535个字节

长文本类型——text

适用场景:较长文章的存储,最长可存储65535(2的16次方减1)个字符,如果需要更长的字符可选择 mediumtext(1600万左右)或longtext(40亿左右)

定义方式:字段名称 text

注意事项:

1:长文本类型不能设置默认字符长度

2:text类型的数据不存在行中

3: mediumtext(1600万左右)或longtext(40亿左右)都是字符

4:65535个字符大约 64kb

5:utf-8的编码 text存储的字符数可能减半

枚举类型——enum、set

概念:在定义字段时预先规定好几个值,然后插入数据时只能从这几个规定好的值中选择一个

适用场景:字段插入数据时,有固定的几个值,比如性别、星期、月份时可用枚举类型

定义方式:gender enum(“男”,“女”),这样在插入数据时,只能选择男或者女

注意事项:

1:一个enum最多可存储65535个值

2:利用enum设置的字段最终只占用1或2个字节的空间,比较节省空间

3:枚举类型的enum与set的不同是,enum只能从枚举的数据中选取一个,而set可以从枚举的类型中选取多个!

3.日期数据类型分类

image-20211011193808869

你问我答:datatime类型与timestamp类型都是定义到年月日时分秒,他俩有啥不同呢?

答:定义时间的范围不同 datatime定义的范围是1000-01-01 00:00:00/9999-12-31 23:59:59
而timestamp定义的范围是1970-01-01 00:00:00 / 2038-1-19 11:14:07

知道选择一种合适的数据库数据类型的好处

好处1:节省数据库空间
好处2:增加数据的查询效率
好处3:优化数据库

登录和退出MySQL数据库及其SQL指令查询数据库版本等【重点】

MySQL数据库的操作步骤

步骤:终端连接数据库→对数据库进行操作→终端退出数据库

image-20211011193837280

使用终端命令登录(连接)数据库

前言:终端(客户端)连接数据库的原理是,终端(客户端)连接数据库服务器,利用服务器管理数据库内的数据

指令:

mysql -u root -p

回车输入密码即可连接数据库服务器

指令解释:-u 用户选项 root 用户名 -p 密码选项

注意事项:

1:必须先切换到管理员用户在输入上面指令才能连接到数据库,否则失败

2:在连接到数据库之后,你就要输入SQL指令才能操作数据库

3:连接到数据库之后,每一行SQL指令都要以分号;结尾

图示:

image-20211011193855313

image-20211011193909652

退出数据库

退出指令:exit 、quit 、Ctrl+D

数据库的常见 SQL操作指令(查看数据库版本号等)

常见指令:

1:select version( ) ;查看mysql数据库的版本号

2:select now();查看当前时间

截图:

image-20211011193929670

未完待续……