MySQL学习(三、数据库设计与查询语句)

这篇博客详细介绍了MySQL数据库的设计,包括数据库的基本概念、实体间的关系、设计步骤及数据规范化。此外,还深入讲解了查询语句,如字段表达式、where子句、聚合函数、模糊查询和分组查询等,帮助读者掌握数据库操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1  数据库的设计

1.1  数据库的基本概念

1.2  实体和实体之间的关系

1.2.1  一对多  1:N

1.2.2  一对一  1:1

1.2.3  多对多 N:M

1.3  数据库设计的步骤

1.3.1  数据库设计的具体步骤

1.3.2  绘制E-R图

1.3.3 将E-R图转成表

1.3.4 例题

1.4  数据规范化

1.4.1  第一范式:确保每列原子性

1.4.2  第二范式:非键字段必须依赖于键字段

1.4.3  第三范式:消除传递依赖

1.4.4  数据库设计的例题

2  查询语句

2.1  字段表达式

2.2  from子句

2.3  dual表(伪表)

2.4  where子句

2.5 in | not in

2.6  between...and | not between...and

2.7 is null | is not null

2.8  聚合函数

2.9  通配符

2.10  模糊查询(like)

2.11  order by排序

2.12  group by分组查询

2.13  having条件

2.14  limit

2.15  查询语句中的选项

2.16  union联合

2.16.1  union的使用

2.16.2  union的选项

2.16.3  union的注意事项


1  数据库的设计

1.1  数据库的基本概念

1)关系:两个表的公共字段。

2)行:也称记录,也称实体。

3)列:也称字段,也称属性。

  就表结构而言,表分为行和列; 就表数据而言,分为记录和字段; 就面向对象而言,一个记录就是一个实体,一个字段就是一个属性。

4)数据冗余:相同的数据存储在不同的地方。

注意: 1、冗余只能减少,不能杜绝; 2、减少冗余的方法是分表;3、为减少数据查找的麻烦,允许数据有一定的冗余

5)数据完整性:正确性+准确性=数据完整性

正确性:数据类型正确    准确性:数据范围要准确

思考:学生的年龄是整型,输入1000岁,正确性和准确性如何?

答:正确的,但不准确

思考:年龄是整型的,输入字符串,正确性和准确性如何?

答:不正确

1.2  实体和实体之间的关系

1、一对一

2、一对多 (多对一)

3、多对多 

1.2.1  一对多  1:N

1、主表中的一条记录对应从表中的多条记录。

2、一对多和多对一是一样的。

班级表和学生表

如何实现一对多?

答:主键和非主键建关系

问题:说出几个一对多的关系?

答:班级表和学生表、年级组长表和班级表

1.2.2  一对一  1:1

1、主表中的一条记录对应从表中的一条记录;  ——>主要用于数据库的优化

如何实现一对一?

主键和主键建关系就能实现一对一。

``` 思考:一对一两个表完全可以用一个表实现,为什么还要分成两个表?

答:在字段数量很多情况下,数据量也就很大,每次查询都需要检索大量数据,这样效率低下。我们可以将所有字段分成两个部分,“常用字段”和“不常用字段”,这样对大部分查询者来说效率提高了。【表的垂直分割】 ```

1.2.3  多对多 N:M

主表中的一条记录对应从表中的多条记录,从表中的一条记录对应主表中的多条记录。

如何实现多对多?

答:建立第三张表来保存关系。

问题:说出几个多对多的关系?

1、科目表和学生表的关系 ;2、商品表和订单表; 3、游戏目录表和玩家表

1.3  数据库设计的步骤

1.3.1  数据库设计的具体步骤

1)收集信息:与该系统有关人员进行交流、座谈,充分理解数据库需要完成的任务。

2)标识对象(实体——Entity)标识数据库要管理的关键对象或实体;

3)标识每个实体的属性(Attribute);

4)标识对象之间的关系(Relationship);

5)将模型转换成数据库;

6)规范化。

1.3.2  绘制E-R图

E-R图的语法

绘制E-R图

1.3.3 将E-R图转成表

1、 实体转成表,属性转成字段

2、 如果没有合适的字段做主键,给表添加一个自动增长列做主键。

1.3.4 例题

1、项目需求

   BBS论坛的基本功能: 用户注册和登录,后台数据库需要存放用户的注册信息和在线状态信息; 用户发贴,后台数据库需要存放贴子相关信息,如贴子内容、标题等; 用户可以对发帖进行回复; 论坛版块管理:后台数据库需要存放各个版块信息,如版主、版块名称、贴子数等;

2、标识对象

参与的对象有:用户、发的帖子、跟帖、板块

3、标识对象的属性

1.4  数据规范化

Codd博士定义了6个范式来规范化数据库,范式由小到大来约束,范式越高冗余越小,但表的个数也越多。本实验证明三范式是性价比最高的。

1.4.1  第一范式:确保每列原子性

  • 第一范式确保每列的原子性(不可再分性);
  • 如果每列都是不可再分的最小数据单元(也称为最小子单元),则满足第一范式(1NF)。

思考Q2:如下表设计是否合理?

不合理。不满足第一范式,上课时间可以再分。

思考Q1:地址包含省、市、县、地区是否需要拆分?

答:如果仅仅起地址的作用,不需要统计,可以不拆分;如果有按地区统计的功能需要拆分。

在实际项目中,建议拆分。

1.4.2  第二范式:非键字段必须依赖于键字段

  • 如果一个关系满足1NF,并且除了主键以外的其他列都依赖于该主键,则满足第二范式(2NF)
  • 每个表只能描述一件事
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值