MYSQL典型的关系型数据库基础

1、数据库基本知识介绍

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

数据库排名:https://db-engines.com/en/ranking/relational+dbms

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

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

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

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

第二范式2NF:唯一标识

第三范式3NF:引用主键

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

数据类型

int 指的是整数

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

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

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

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

datetime  #指的是日期和时间

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

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

create  database wuwang  charset=utf8;

其他约束,如下

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

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

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

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

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

常用操作

创建数据库:


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

创建表

选中tables,右键创建表

设计表:设置表的字段

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

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

首先要知道mysql安装路径

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


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

也可以在windows开始快速打开

常用操作

查询数据库版本:

查看当前时间

创建数据库

删除数据库

切换数据库

查询当前所有的数据库

查看当前所有表

查看当前数据库

创建表

查询表的结构

修改表

操作命令

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

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

简单查询表数据

插入一条数据

全列插入,操作如下

缺省插入,操作如下

其他

数据修改、更新操作

操作如下

删除一条数据

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

数据备份与恢复

linux下数据库备份

数据恢复

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

4、数据库查询语句详解

查询的基本用法

操作如下:

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

where后面增加条件

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

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

模糊查询

操作如下

范围查询

操作如下

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

空判断

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

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

聚合

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

常用的聚合函数如下

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

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

分组

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

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

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

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

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

最后显示结果

排序


分页

实例如下

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

实际应用

完整的select语句

5、高级内容

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

详解关系

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

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

关系分析

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

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

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

存储关系

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

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

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

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

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

关系字段

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

插入数据会检查

外键的级联操作

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

连接查询join

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

多表查询

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

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

右连接,以右表为准

确定实体间是否有关系

确定是几对几的关系

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

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

练习

自查询

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

自关联

自连接查询

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

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

对select语句进行封装

修改视图alter

事物简单介绍

事物开始与提交

事物开始与回滚begin和rollback

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

索引的简单介绍

选择的数据类型

索引操作

性能检测set  profiling=1

创建索引再执行查找动作

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

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

缺点

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,240评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,328评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,182评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,121评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,135评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,093评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,013评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,854评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,295评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,513评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,398评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,989评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,636评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,657评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352