MySQL(一)——范式

一、MySQL介绍

  • 属于数据库的一种
  • 目前属于Oracle甲骨文公司
  • MYSQL称之为关系型数据库
  • MySQL数据库是一种C/S模型,即客户端和服务端模型,客户端通过账号、密码连接服务器,连接成功后才可以进行数据库的操作(增加、删除、变更、查询 CRUD)
  • MySQL的服务端采用的是IO复用+可伸缩的线程池,实现了网络高并发的经典模型。

二、SQL语句类别划分

1、DDL(Data Definition Language):数据库定义语言

  • 定义了不同的数据库、数据库表、列、索引等数据对象的定义
  • 常用的SQL:crate(创建)、drop(删除)、alter(更新)

2、DML(Date Manipulation Language):数据操控语言

  • 用于添加、删除、变更和查询数据库记录
  • 常用的SQL:insert(添加)、delete(删除)、update(更新)和 select(查询)

3、DCL(Data Control Language):数据控制语言

  • 控制不同数据库段直接访问和访问级别的语句
  • 常用SQL:grant、remove

三、数据库范式

名词概念
实体现实世界中客观存在并可以被区别的事物。比如“一个学生”、“一本书”、“一门课”等。注意:这里所说的“事物”不仅仅是看得见摸得着的“东西”,也可以是虚拟的,比如说“老师与学校的关系”。
属性教科书上解释为:“实体所具有的某一特性”,由此可见,属性一开始是个逻辑概念,比如说,“性别”是“人”的一个属性。在关系数据库中,属性又是个物理概念,属性可以看作是“表的一列”。
元组表中的一行就是一个元组。
分量元组的某个属性值。在一个关系数据库中,它是一个操作原子,即关系数据库在做任何操作的时候,属性是“不可分的”,否则就不是关系数据库了。
码(键)表中可以唯一确定一个元组的某个属性(或者属性组),如果这样的码有不止一个,那么大家都叫候选码(候选键),从候选码中挑一个出来做老大,它就叫主码(主键)。
全码如果一个码包含了所有的属性,这个码就是全码。
主属性一个属性只要在任何一个候选码中出现过,这个属性就是主属性。
非主属性与上面相反,没有在任何候选码中出现过,这个属性就是非主属性。
外码一个属性(或属性组),它不是码,但是它别的表的码,它就是外码。

我们首先来了解下面几个概念

  • 部分函数依赖
    • 设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。
    • 例子:学生信息表R(学号,身份证号,姓名),学号属性取值唯一,在R关系中,(学号,身份证号)→(姓名),(学号)→(姓名),(身份证号)→(姓名);所以姓名部分函数依赖与(学号,身份证号)
  • 完全函数依赖
    • 设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。
    • 例子:学生基本信息表R(学号,班级,姓名)假设不同的班级学号有相同的,班级内学号不能相同,在R关系中,(学号,班级)→(姓名),但是(学号)→ 姓名)不成立,(班级)→(姓名)不成立,所以姓名完全函数依赖与(学号,班级)
  • 传递函数依赖
    • 设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。
    • 例子:在关系R(学号 ,宿舍, 费用)中,(学号)→(宿舍),宿舍 != 学号,(宿舍)→(费用),费用!=宿舍,所以符合传递函数的要求
1、第一范式(1NF)
在任何一个关系数据库中,第一范式是对关系模式的基本要求,不满足第一范式的数据库就不是关系数据库。

所谓第一范式(1NF)是指数据库表的每一列(即每个属性)都是不可分割的基本数据项(每一列保持原子特征),同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。

简而言之,第一范式就是无重复的列。

学生表

学号姓名年龄地址
01张三18XX省XX市XX区XX大学

因为上表中地址信息还包含省市区可以拆分,所以不属于第一范式

拆分改造后:

学生表(学号、用户名、性别、年龄、地址ID)
地址表(地址ID、省、市、区)

拆成上述学生表和地址表就变成第一范式咯

2、第二范式(2NF)

第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。

属性完要全依赖于主键(针对联合主键 -> 消除部分依赖)
在1NF基础上,非主属性完全依赖于主键,如果不是依赖主键,应该拆分成新的主体,拆分成一对多的关系。
也就是说第二范式需要确保数据库表中每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。

例子

学生选课表(学生ID、学生姓名、学生性别、课程名称、课程成绩)
主键(学生ID、课程名称)
学生姓名→学生ID (部分依赖)
学生性别→学生ID (部分依赖)
课程成绩→(学生ID、课程名称)(完全依赖)
拆分改造后:
学生表(学生ID、学生姓名、学生性别) 主键:学生ID
课程成绩表(课程ID、课程名字、学生ID、成绩) 主键:课程ID

3、第三范式(3NF)

在2NF基础上,属性不依赖于其他非主属性(消除传递依赖)

例子

学生表(学生ID、学生姓名、学生性别、学院名称、学院电话)
主键:学生ID
学生姓名-》学生ID
学生性别-》学生ID
学院名称-》学生ID
学院电话 -》 学生ID -》查询学院-》查询学院电话
拆分改造后:
学生表:(学生ID、学生姓名、学生性别、学院ID)主键:学生ID
学院表:(学院ID、学院名称、学院电话) 主键:学院ID

4、总结
1NF:确保每列保持原子性
2NF:确保表中的每列都和主键相关
3NF:确保每列都和主键列直接相关,而不是间接相关
  • 数据库范式的作用:
    • 进行数据库设计时字段、库表划分的依据
  • 数据库范式的优点:
    • 减少数据冗余(最主要的好处、其他好处因此而附带)
    • 消除异常(插入异常、更新异常、删除异常)
    • 让数据组织的更加和谐
  • 数据库范式的缺点:
    • 应用范式越高、表越多、表越多带来的问题:
      • 查询时需要连接多个表,增加了查询的复杂性
      • 查询时需要连接多个表,降低了数据库查询的性能

ps:范式不是越高越好,一般满足3NF即可!

四、启动和退出

1、启动

连接前服务端必须要启动

 mysql -u XXX -p XXX
 mysql:代表客户端命令
  -u 后面跟用户名
 -p 后面跟用户密码

在这里插入图片描述

2、退出
退出用户端登录: exit
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值