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

数据库基础-数据库基本概念(1-1)

你好,欢迎来到数据库基础系列专栏,欢迎留言互动哦~

目录

  • 一、数据库基础
    • 1. 数据库基本概念
      • 1.1 数据库
      • 1.2 什么是数据库管理软件
      • 1.3 表
      • 1.4 行
      • 1.5 列和数据类型
      • 1.6 主键
      • 1.7 什么是 SQL

一、数据库基础

1. 数据库基本概念

1.1 数据库

数据库是一个以某种有组织的方式存储的数据集合,可以理解为一个 excel 文件。文件本身不保存具体的数据,数据是放在一个个 sheet 中的。

准确的说。数据库不等同于 mysql,数据库是物理存储方式。 mysql 其实是 DBMS(数据库管理软件)。什么是管理软件呢?只是很多时候我们习惯性将 mysql 这种管理软件叫做数据库而已。后续我们也简单这样理解吧。

1.2 什么是数据库管理软件

我要在 excel 中查询某一条记录怎么查询? 有人会说:excel 有语句可以查询,但是因为这里是因为 excel 提供了语法解析。如果没有这个解析我们怎么做?我们就需要一个中间层 - mysql

在这里插入图片描述

1.3 表

excel 文件中的一个 sheet。

1.4 行

一条完整的数据就是一行数据, 很多数据都是有指定字段的 - 比如一个用户信息包括用户名、密码、生日、年龄、性别等。

1.5 列和数据类型

excel 记录中的列,数据能按照列来存储对关系数据库非常重要,也是数据粒度小的表现、例如用户信息中的用户名、昵称、密码、年龄、生日、性别应该总是独立的列。

通过把它分解开、可有可能利用特定的列对数据进行排序和过滤,例如筛选出所有 20-30 岁的用户,按照年龄排序。如果将年龄和性别放在一起,筛选出 2-30 岁的所有女生就无法做到。

关系数据库中还有个很重要的特性 - 每个列需要指明数据类型,并且只能保存指定的类型。

数据库中每个列都需要指明数据类型,数据类型定义列可以存储的数据种类,例如,如果列中存储的为数字(年龄), 则相应的数据类型应该指明为数值类型。

如果列中存储的是日期,则应该是日期类型等。

数据类型还能帮助正确的排序数据,并在优化磁盘使用方面起重要作用。因此对数据类型要引起重视。

1.6 主键

表中每一行都应该有可以唯一标识自己的一列,比如身份证号码,一般我们把可以唯一区别某一行的数据的列称为主键。

主键用来标识一个特定的列。没有主键,更新和删除表中的指定数据很困难。

表中任何列都可以作为主键,只要满足:

  • 任意两行都不具备相同的主键值;
  • 每个行都必须具有一个主键值(不允许为 NULL)。

主键有几个潜规则:

  • 不能修改主键的值 - 就像可以改名不能修改身份证号码;
  • 已经使用过的主键不能再使用(就像已经废弃的身份证号码不能重复使用一样)。

1.7 什么是 SQL

SQL 是结构化查询语言(Structured Query Language)的缩写,SQL 是一门专门用来和数据库通信的语言。

优点:

  1. sql 不是某个特定数据库供应商专有的语言,集合所有重要的 DBMS 都支持 sql。所以学会了基本上可以用于所有数据库;
  2. sql 简单易学,它的语句全都是由英语单词构成,而且单词数目不多;
  3. sql 尽管简单,但是非常灵活,可以写出复杂的逻辑。

其实可以这样理解 sql 语言的诞生:本身是可以用库代替。没有必要去发明一门语言来增加学习难度,但是库的接口会让问题变得更复杂:

  1. 各种库之间的接口会不一样,难以统一;
  2. 如果需求越来越复杂,库会不停的升级,多个库升级会让问题变得更复杂;
  3. 不同的语言的库会让问题复杂度加倍增加;
  4. 发明一种语法可以脱离具体的库会让问题变得统一,就好比当今存在各种标准:http 协议、typec 数据线等;
  5. 这种思维在编程中大量存在:正则表达式、xpath 语句、sql 语句等都是为了解决这类问题。
http://www.lryc.cn/news/25648.html

相关文章:

  • 学习笔记-架构的演进之服务容错策略-服务发现-3月day01
  • 采编式AIGC视频生产流程编排实践
  • Leetcode23. 合并k个升序链表
  • 从用户出发,互联网产品策划方法论
  • STM32 E18-D80NK红外检测
  • Linux常用命令--进程和计划任务管理
  • Unity TextMeshPro
  • 虹科分享| 浅谈HK-Edgility边缘计算平台
  • React Router v6详解
  • 帮助100w人成功入职的软件测试面试常见问题以及答案
  • tensorflow2.4--2.回归问题分析
  • 【2023】DevOps、SRE、运维开发面试宝典之Kafka相关面试题
  • CentOS系统编译安装PHP-5.6.27版本
  • 和风SDK查询城市ID(保姆级教程)
  • 暴力递归到动态规划
  • Java:Java仍然处于领先地位?
  • 虚拟地址空间
  • Python基础篇(十五)-- Pygame游戏编程
  • LeetCode 热题 HOT 100 Java 题解 -- Part 2
  • 【项目实战】IDEA常用快捷键汇总
  • 更新 TKK 失败,请检查网络连接。谷歌翻译 translation插件不能用解决办法 亲测有效
  • SpringBoot整合MybatisPlus多数据源
  • 【教程】如何使用Java生成PDF文档?
  • I.MX6ULL内核开发13:pinctrl子系统和gpio子系统-led实验
  • Linux系列 使用vi文本编辑器
  • 【java基础】接口(interface)
  • ChatGPT(GPT3.5) OpenAI官方API正式发布
  • CAD中如何将图形对象转换为三维实体?
  • 【K8S笔记】Kubernetes 集群架构与组件介绍
  • 9 怎么登录VNC