MySQL知识点回顾

数据概念

DB:数据库(database): 存储数据的库,保存了一系列有组织的数据。

DBMS:数据库管理系统(Database Management System): 上面的数据库就是通过DBMS进行创建的, DBMS就是一个数据库产品。

SQL结构化查询语言(Structure Query Language): 专门用来与数据库(DBMS)通信的语言。

优点:

  1. 所有的DBMS(数据库软件)都支持SQL
  2. 简单易学
  3. 语言灵活,可以完成很多复杂和高级的数据库操作

三者之关系:使用DBMS输入SQL来操作DB

MySQL产品的介绍

服务器的启动和停止: 用管理身份运行CMD窗口.
开启:net start 服务名.
关闭:net stop 服务名.

服务器可以在系统的服务中查看,并且MySQL也可以设置为自动和手动,我这里设置的是自动,电脑开启之后会自动开启MySQL,不用每次手动开启那么麻烦,当然相应的会拖延开机时间.

如何找到服务名
MySQL的登录与退出(这里只讲CMD命令下的开启方式):

// 在CMD窗口中输入,[]中的内容为可省略,端口号是自己设置的,mysql默认是3306
mysql [-h(主机名) localhost -P(端口号)] -uroot -p(密码)
// 一般我们可以直接缩写,最后一个root为密码
mysql -uroot -proot
// 示例:
mysql -h localhost -P3306 -uroot -proot

讲完了MySQL的前置需求,现在我们说一下SQL的四大分类.

DDL :操作数据库、表
DML:增删改表中的数据
DQL:查询表中的数据
DCL:管理用户/授权

接着我们再说下MySQL中的语法规范:

  1. MySQL中不区分大小写,建议关键字大写,表名、字段名小写
  2. 每条语句用分号结尾,在CMD窗口中,如果不加分号,那么系统会认为语句没有写完,不会执行,但是在软件中可以直接选择执行,不加分号也可以,这里建议是加上分号
// 这是一条SQL查询语句
SELECT 
	*
FROM 
	employees
WHERE 
	id = 1;

数据库的设计

主键外键的简单了解

主键: 用来确定一条记录的唯一标识,就像每个员工都有自己的编号,通过这个编号,就可以知道这个员工的所有信息.

外键: 用于与另一张表做关联.就像每个员工都有一个职位编号,职位编号对应了职工表中的主键. 用一句话描述就是:"表A中的字段,是表B中的主键,那么这个字段就是外键.

需要注意的是,一个表只能有一个主键,但是可以有多个外键

多表之间的关系

一对一:

	人和身份证:一个人只有一个身份证号码,而一个身份证号码只能对应一个人,这就是一对一关系.
	实现方式:
			可以在任意一方设置唯一外键指向另一方的主键

一对多(多对一):

	古代的门派和弟子:一个门派可以有多个弟子,但一个弟子只能加入一个门派,这就是一对多关系
	实现方式:
			在多的一方建立外键,指向"一"一方的主键

多对多:

	江湖侠客和武林秘籍:江湖侠客可以学很多门武功,同样,一个武功可以被很多江湖侠客所学习.  
	实现方式:
			多对多关系需要借助第三张中间表,中间表需要包含两个字段,分别指向两张需要实现多对多关系表的主键.

数据库设计的范式

概念: 设计数据库是,需要遵循的一些规范,要遵循后面的范式要求,必须先遵循前边的所有范式要求

关于范式前提的几个重要概念:

  1. 函数依赖:A–>B,如果通过A属性(属性组)的值,可以确定B属性的值,则称为B依赖于A
    如:学号–>姓名 (学号、课程名)–>分数
  2. 完全函数依赖:A–>B.如果A是一个属性组,则B属性值的确定需要A属性组中的所有属性值.
    如:(学号、课程名)–>分数
  3. 部门函数依赖:A–>B,如果A是一个属性组,则B属性值的确定只需要A属性组中的某些值
    如:(学号、课程名)–>姓名
  4. 传递函数依赖:A–B.B–>C,如果通过A属性值(组)的值可以确定B属性的值,再通过B属性值确定C属性值,那么则称C传递依赖于A
    如:学号–>系名,系命–>系主任
  5. 码:如果一张表中,一个属性或属性组,被其他属性所完全依赖,则称这个属性(属性组)为该表的码
    主属性:码属性(组)的所有属性
    非主属性:除主属性外的所有属性

第一范式(1NF):

每一列都是不可分割的原子数据项,就相当于一张表中的一条数据,是最基本的范式

第二范式(2NF):

在1NF的基础上,非码属性必须完全依赖于码(在1NF的基础上消除非主属性对主码的部分函数依赖)

第三范式(3NF):

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

例表:
表
(此表的主属性组为:ID、课程名)
首先分析一下此表存在的问题:

  1. 数据冗余
  2. 存在部分函数依赖,(姓名,系命,系主任依赖于ID),这样如果小明和小红毕业了,那么对应的系名,系主任也就消失了,这显然不合理
  3. 存在传递依赖:(系名依赖于ID,系主任依赖于系名)

下面将表设置为如下,则可以解决以上所有问题.
在这里插入图片描述

以上所有内容借鉴 尚硅谷与传智播客。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烟雨红尘客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值