mysql数据库逻辑型字段_MYSQL典型的关系型数据库基础

1、数据库基本知识介绍

功能:存储大量的数据,查询数据

aa92602a31d3

设计模型:E-R设计模型,关系型数据库使用的都是该模型,不同的是核心代码的存储方式和读取方式。E指的是实体,R指的是关系

ER模型中的实体对应数据库中的一张表,而关系指的是两个实体之间的关系:一对一、一对多、多对多。

三范式:简单来说就是设计数据库时候的一些规范

第一范式1NF:列不可拆分

第二范式2NF:唯一标识

第三范式3NF:引用主键

数据完整性指的是数据的正确性,常用的是数据类型检查和其他约束

数据类型

aa92602a31d3

int 指的是整数

decimal(m,n)  #m指的是一共m位,小数n位

test 适用于文本,字符串比较多的场景

char(m)  固定长度,用于存储手机号码等固定长度的数据,指定m个字符,若不够不全

varchar(m)  可变长度,用于存储长度不固定的数据

datetime  #指的是日期和时间

bit(m)  #8位     使用场景:存储性别【两种状态】,内存开销小。如0表示女,1表示男

【注】创建数据库设置编码格式

aa92602a31d3

create  database wuwang  charset=utf8;

其他约束,如下

aa92602a31d3

主键决定物理存储方式,唯一标识。通过主键能快速找到一张表中的数据

唯一可以有很多,但是主键只有一个。

2、mysql图形可视化界面操作

以mysql可视化工具Workbench为例,讲这个的目的是要求在图形化界面可以做一些基本的操作

当mysql安装成功后,且mysql服务启动后,打开可视化界面就连接数据库

常用操作

创建数据库:

aa92602a31d3

编码选择utf-8【CREATE SCHEMA `test02` DEFAULT CHARACTER SET utf8 ;】

aa92602a31d3

创建表

选中tables,右键创建表

aa92602a31d3

设计表:设置表的字段

aa92602a31d3

给表中添加数据、修改数据

aa92602a31d3

3、windows下打开命令行操作mysql

首先要知道mysql安装路径

aa92602a31d3

然后shift+右键,在此处打开命令行

aa92602a31d3

mysql -uroot -p密码是安装数据库时候设置的密码

也可以在windows开始快速打开

常用操作

查询数据库版本:

aa92602a31d3

查看当前时间

aa92602a31d3

创建数据库

aa92602a31d3

删除数据库

aa92602a31d3

切换数据库

aa92602a31d3

查询当前所有的数据库

aa92602a31d3

查看当前所有表

aa92602a31d3

查看当前数据库

aa92602a31d3

创建表

aa92602a31d3

查询表的结构

aa92602a31d3

修改表

aa92602a31d3

操作命令

add是增加,change是修改,drop是删除

aa92602a31d3

更改表名和查看表的创建语句

aa92602a31d3

简单查询表数据

aa92602a31d3

插入一条数据

aa92602a31d3

全列插入,操作如下

aa92602a31d3

缺省插入,操作如下

aa92602a31d3

其他

aa92602a31d3

数据修改、更新操作

aa92602a31d3

操作如下

aa92602a31d3

删除一条数据

aa92602a31d3

【注】这里讲一下逻辑删除和物理删除,物理删除就是用delete语句删除一行,逻辑删除就是设计表结构的时候增加一个删除标记位isdelete,用户删除的时候使用update语句设置标志位是0。查询所有表数据的时候使用where条件语句

数据备份与恢复

linux下数据库备份

aa92602a31d3

aa92602a31d3

数据恢复

aa92602a31d3

首先要创建数据库,然后执行恢复操作

aa92602a31d3

4、数据库查询语句详解

查询的基本用法

aa92602a31d3

操作如下:

aa92602a31d3

消除重复行,distinct【比较的时候是看一行】

aa92602a31d3

where后面增加条件

aa92602a31d3

where后面的条件会对表中的每一行进行过滤,最后返回结果集

逻辑运算符【与、或、非】

aa92602a31d3

模糊查询

aa92602a31d3

操作如下

aa92602a31d3

范围查询

aa92602a31d3

操作如下

aa92602a31d3

【注】:有多个and的时候,从左到右进行匹配,逻辑运算符and优先级低,所以先匹配between

空判断

aa92602a31d3

【注】null表示空,不占用内存。判断的时候不能用=判断

aa92602a31d3

where后面条件运算符的优先级,这些运算符包括条件运算符、逻辑运算符、范围运算符、模糊运算符、判空运算符

aa92602a31d3

聚合

聚合的核心是为了统计,对多行数据进行统计,统计之后看不到原始的数据,得到的是一个聚合后的结果

常用的聚合函数如下

aa92602a31d3

aa92602a31d3

【注】求最大值max、最小值min、平均数avg、求和sum要求计算的列一般是数字类型。

aa92602a31d3

聚合函数是无法得到原始数据,但是我们可以通过其他手段获取,如通过子查询

aa92602a31d3

分组

aa92602a31d3

分组是为了聚合,怎么理解呢?分组将相同属性的分到不同组,然后对此做聚合操作,统计出不同组内的数据

aa92602a31d3

执行顺序:首先from语句从后面的表名获取原始数据集

然后执行where后面的条件筛选,返回经过过滤处理的结果集

aa92602a31d3

再进行分组group by,返回经过分组处理的数据

在分组处理having,对分组后的结果进行处理

最后显示结果

aa92602a31d3

排序

aa92602a31d3

aa92602a31d3

分页

aa92602a31d3

实例如下

aa92602a31d3

结合排序order by,先对原始数据进行排序,然后再按照索引取数据

aa92602a31d3

实际应用

aa92602a31d3

完整的select语句

aa92602a31d3

5、高级内容

主要内容:关系、连接查询、自关联、视图、索引、事物

aa92602a31d3

详解关系

首先关系在上文中说了是指的实体之间的关系,在项目中我们要设计表,要明确表之间的关系。这里就需要提到上文说到的E-R模型。比如下面的三张表

aa92602a31d3

首先三个表(实体)之间的关系,成绩表中用到学生和科目信息,学生和科目这两列根据第三范式引用主键要求是引用的另外两个表中的主键,而不是自己维护,这两个列就是关系列【关系字段】。这两个信息分别在学生表和科目表中维护。

aa92602a31d3

关系分析

f学生表和成绩表是关系是一对多

科目表和成绩表是关系是一对多

【注】怎么看关系是不是一对多,分析A表中的一行对应B表中多行。

存储关系

若两个表是一对一的关系,那么关系字段在两个表都可以

若两个表是一对多的关系,那么关系字段在多对应的表中

若两个表是对多对多的关系,需要另外建立一张表存储关系字段

关系设计的注意不要设置成闭合,这样会导致存储冗余

aa92602a31d3

如上图需要把关系打开,实际使用中实际考虑

关系字段

外键用来保证关系字段的正确和有效性

aa92602a31d3

插入数据会检查

aa92602a31d3

外键的级联操作

aa92602a31d3

【注】设计过程中是先确定ER模型,然后设计表结构确定关系列,最后创建表添加外键

连接查询join

aa92602a31d3

当对多个有关系的表进行查询的,既想要的结果来自于多个表考虑连接查询

多表查询

aa92602a31d3

内连接要求多个表的数据都出现才会显示结果,这个时候是不分表的顺序的

aa92602a31d3

左连接,以左表中数据为准

aa92602a31d3

右连接,以右表为准

aa92602a31d3

确定实体间是否有关系

确定是几对几的关系

确定在哪个实体之间建立关系字段

连接查询:首先连接有三种情况,内连接、左连接、右连接,详细上文已经介绍过了。返回的结果是多个表联合查询到的数据。但是实际情况下,我们不需要所有数据。所以一般会在这之上添加过滤条件,就是SQL查询讲到的内容。进行分组、聚合、分页等高级操作

aa92602a31d3

练习

aa92602a31d3

自查询

这种场景下表1和2数据量很小,但是建立一张表的开销是很大的,这个时候会造成性能浪费

aa92602a31d3

自关联

aa92602a31d3

自连接查询

首先自连接是指的本表和本表进行连接join。在物理上他们是一张表,但是逻辑上我们可以认为它们是两张表。如下,为了美观和正确显示,查询的时候用了别名

aa92602a31d3

视图:怎么理解视图呢,简单来说可以说是生成一个新的表结构,这个表存放select语句生成的结果集。

aa92602a31d3

对select语句进行封装

aa92602a31d3

修改视图alter

aa92602a31d3

事物简单介绍

aa92602a31d3

事物开始与提交

aa92602a31d3

事物开始与回滚begin和rollback

beigin后面的修改操作【增加、删除、更新】会修改内存层面的数据,但是物理上不变

索引的简单介绍

选择的数据类型

aa92602a31d3

索引操作

aa92602a31d3

性能检测set  profiling=1

aa92602a31d3

创建索引再执行查找动作

aa92602a31d3

性能检测工具查出来时间明显减少

aa92602a31d3

【注】主键和外键默认就是索引

aa92602a31d3

缺点

aa92602a31d3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值