当前位置: 首页 > news >正文

第2章 数据库设计

数据库设计

  • 1 关系数据库设计理论三大范式
  • 2 连接数据库和基本信息
    • 2.1 连接数据库
    • 2.2 基本信息查询
  • 3 创建数据库和表
    • 3.1 创建数据库
    • 3.2 创建表

1 关系数据库设计理论三大范式

​ 关系模型(Relational Mode)是一种基于表的数据模型,广泛应用于数据库管理系统(DBMS)中。

​ 关系模型的核心思想,将数据组织成表,每个表包含一组相关的行和列。

​ 行和列之间的关系通过主键和外键来定义,从而实现数据的王整形、一致性和可维护维护性。

  • 属性(Attribute):列的名称。
  • 关系(Relation):列属性之间存在的某种关联。
  • 表(Table):由多个属性以及众多元祖所表示的各个实例组成。
  • 键(Key):由一个或多个属性组成,其值能唯一标识关系中的一个元组。如果某个关系A中的一个(组)属性是另一个关系B的键,则该(组)属性在A中被称为外键。
  • 笛卡尔积(交叉连接,Cross Join):第一个关系的每一行数据分别与第二个关系的每一行数据组合。
  • 自然连接(Natural Join):第一个关系的每一行数据与第二个关系的每一行数据进行匹配,若得到交叉部分则合并,若无交叉部分则舍弃。
  • θ连接(Theta Join):加上约束条件的笛卡尔积,先得到笛卡尔积,在根据约束条件删除不满足条件的元祖。
  • 外连接(Outer Join):执行自然连接后,将舍弃的部分也加入,并且把匹配失败处的属性设置为null。

范式:

  • 第一范式(1NF):目标是确保每列的原子性,如果每列都是不可再分的最小数据单元(也被称为最小的原子单元),则满足第一范式。
  • 第二范式(2Nf):要求每张表只描述一件事件。
  • 第三范式(3NF):如果一个关系满足第二范式,并且除了主键以外的其他列都不依赖于主键列,则满足第三范式。

2 连接数据库和基本信息

2.1 连接数据库

mysql -h localhost -u root -p

2.2 基本信息查询

# 查询服务器版本和当前信息
select version(),current_date;#把MySQL作用计算器
select sin(pi() /5),(9+1) *5;#用分号分隔多条SQL语句
select version(); select now();#MySQL可以写成多个的形式,最后带上终止分号
select 
user()
,
current_date;#取消查询,当输入 "\c" 之后,当前输入的命令就取消了
select 
users
\c
  • 查询通常由分好结尾的SQL语句组成。
  • 输入查询语句后,MySQL将它发送到服务器执行并显示结果,然后显示下个 "mysql>"提示符,表名已准备好接收另一个查询。
  • MySQL以表格形式(行和列)显示查询的结果。第一行是标签(或列名),其他行为查询结果。
  • SQL关键不区分字母大小写。

MySQL所处状态含义:

提示意义和说明
msyql>准备就绪,等待接收新的查询
->等待多行查询的下一行
'>等待下一行,等待以单引号(')开头的字符串完成
">等待下一行,等待以单引号(")开头的字符串完成
`>等待下一行,等待以单引号(`)开头的字符串完成
/*>等待下一行,等待以单引号(/*)开头的字符串完成
#当以单行输入查询语句是时,如果忘记分好结尾,那么MySQL会一直等待我们输入";" 
mysql> select user()->
#'> 和 ">提示符表示当前正处于字符串的收集过程中。
mysql> select * from mytable where name = 'clay and'>

3 创建数据库和表

# 1.使用 show语句查询当前服务器上存在的数据库;
show dtabases;#2. 如果msyql数据库存在,那么我们可以进入MySQL数据库查询当前数据库的表。
use mysql;##查询当前数据库中的表
show tables;

3.1 创建数据库

#创建数据库
create database DEMO;
  • 在UNIX操作系统中,数据库名称是区分字符大小写的。

3.2 创建表

#创建数据表
create Table table_name(column_name column_type);
  • 表名:代码数据表的名称,如果我们想要存储用户信息,则可以取名为 userinfo。
  • 表字段名:表示表中有哪些属性。
create table if not exists `userinfo`(`id` int unsigned auto_increment,`name` varchar(100) not null,`age` int not null,`date` date,primary key(`id`)
) engine=innodb default charset=utf8;
  • 设置字段值不为null,字段属性设置为 not null。
  • auto_increment:列定义为自增的属性,一般用于主键,数值自动加1.
  • primary key:用于把列定义为主键,可以使用多列来定义主键,列之间以逗号分隔。
  • engine:设置存储引擎。
  • charset:设置字符集的编码。
  • varchar(100) 与 int:代表字段使用的数据类型。
#查看表结构
describe userinfo;

相关文章:

  • Serv00 免费邮局 搭建属于自己的域名邮箱 支持 SMTP / Catch-all
  • 5月24日day35打卡
  • python打卡训练营打卡记录day35
  • Nginx-详解(二)
  • 使用CodeBuddy基于Pygame模块实现贪吃蛇游戏
  • 细说STM32单片机FreeRTOS消息缓冲区及其应用实例
  • 精益数据分析(84/126):打造商业造钱机器——从融资思维到盈利模型的落地实践
  • 【DAY28】类的定义和方法
  • 2025家政预约小程序开发:功能模块解析与行业解决方案
  • 【MySQL】CRUD
  • OpenSSH 9.9p2 编译安装全流程指南
  • Linux概述
  • go多线程压测监控
  • [Linux] 再谈 Linux Socket 编程技术(代码示例)
  • 【AI论文】工具之星(Tool-Star):通过强化学习赋能具备大型语言模型(LLM)思维的多工具推理器
  • 一体化雷达波明渠流量计简介
  • 【数据集】中国大陆城市建筑楼面面积高分辨率数据集(2017年)
  • Vue 3 路由传参使用指南
  • JavaSE核心知识点03高级特性03-04(Lambda表达式)
  • 【RocketMQ 生产者和消费者】- 生产者启动源码 - MQClientInstance 定时任务(4)
  • 苏州网站制作的公司/nba最新交易新闻
  • 哪些女性网站做女性慈善事业/网络推广的网站有哪些
  • 2345网站入口/搜索指数
  • 我想弄个网站/seo流量排名软件
  • 投诉网站建设/优化seo哪家好
  • 网站建设基本知识代码/品牌全网推广