SQL 入门教程:数据库基础

SQL 入门教程:数据库基础目录汇总:SQL 入门教程:面向萌新小白的零基础入门教程 你正在读本 SQL 教程,这表明你需要以某种方式与数据库打交道。SQL 正是用来实现这一任务的语言,因此在学习 SQL 之前,你应该对数据库及

SQL 入门教程:数据库基础

目录
  • 一、数据库
  • 二、表
  • 三、列和数据类型
  • 四、行
  • 五、主键
  • 请参阅

目录汇总:SQL 入门教程:面向萌新小白的零基础入门教程

你正在读本 SQL 教程,这表明你需要以某种方式与数据库打交道。SQL 正是用来实现这一任务的语言,因此在学习 SQL 之前,你应该对数据库及数据库技术的某些基本概念有所了解。

你可能还没有意识到,其实自己一直在使用数据库。每当你在手机上选取联系人,或从电子邮件地址簿里查找名字时,就是在使用数据库。你在网站上进行搜索,也是在使用数据库。你在工作中登录网络,也需要依靠数据库验证用户名和密码。即使是在自动取款机上使用 ATM 卡,也要利用数据库进行密码验证和余额查询。

虽然我们一直都在使用数据库,但对究竟什么是数据库并不十分清楚。更何况人们可能会使用同一个数据库术语表示不同的事物,进一步加剧了这种混乱。因此,我们首先给出一些最重要的数据库术语,并加以说明。

提示:基本概念回顾

后面是一些基本数据库概念的简要介绍。如果你已经具有一定的数据库经验,可以借此复习巩固一下;如果你刚开始接触数据库,可以由此了解必需的基本知识。理解数据库概念是掌握 SQL 的重要前提,如果有必要,你或许还应该找本好书好好补一补数据库基础知识。

一、数据库

数据库这个术语的用法很多,但就本教程而言(从 SQL 的角度来看),数据库是以某种有组织的方式存储的数据集合。最简单的办法是将数据库想象为一个文件柜。文件柜只是一个存放数据的物理位置,它不管数据是什么,也不管数据是如何组织的。

数据库(database)

保存有组织的数据的容器(通常是一个文件或一组文件)。

注意:误用导致混淆

人们通常用数据库这个术语来代表他们使用的数据库软件,这是不正确的,也因此产生了许多混淆。确切地说,数据库软件应称为数据库管理系统(DBMS)。数据库是通过 DBMS 创建和操纵的容器,而具体它究竟是什么,形式如何,各种数据库都不一样。

二、表

你往文件柜里放资料时,并不是随便将它们扔进某个抽屉就完事了的,而是在文件柜中创建文件,然后将相关的资料放入特定的文件中。

在数据库领域中,这种文件称为表。表是一种结构化的文件,可用来存储某种特定类型的数据。表可以保存顾客清单、产品目录,或者其他信息清单。

表(table)

某种特定类型数据的结构化清单。

这里的关键一点在于,存储在表中的数据是同一种类型的数据或清单。决不应该将顾客的清单与订单的清单存储在同一个数据库表中,否则以后的检索和访问会很困难。应该创建两个表,每个清单一个表。

数据库中的每个表都有一个名字来标识自己。这个名字是唯一的,即数据库中没有其他表具有相同的名字。

说明:表名

使表名成为唯一的,实际上是数据库名和表名等的组合。有的数据库还使用数据库拥有者的名字作为唯一名的一部分。也就是说,虽然在一个数据库中不能两次使用相同的表名,但在不同的数据库中完全可以使用相同的表名。

表具有一些特性,这些特性定义了数据在表中如何存储,包括存储什么样的数据,数据如何分解,各部分信息如何命名等信息。描述表的这组信息就是所谓的模式(schema),模式可以用来描述数据库中特定的表,也可以用来描述整个数据库(和其中表的关系)。

模式

关于数据库和表的布局及特性的信息。

三、列和数据类型

表由列组成。列存储表中某部分的信息。

列(column)

表中的一个字段。所有表都是由一个或多个列组成的。

理解列的最好办法是将数据库表想象为一个网格,就像个电子表格那样。网格中每一列存储着某种特定的信息。例如,在顾客表中,一列存储顾客编号,另一列存储顾客姓名,而地址、城市、州以及邮政编码全都存储在各自的列中。

提示:数据分解

正确地将数据分解为多个列极为重要。例如,城市、州、邮政编码应该总是彼此独立的列。通过分解这些数据,才有可能利用特定的列对数据进行分类和过滤(如找出特定州或特定城市的所有顾客)。如果城市和州组合在一个列中,则按州进行分类或过滤就会很困难。

你可以根据自己的具体需求来决定把数据分解到何种程度。例如,一般可以把门牌号和街道名一起存储在地址里。这没有问题,除非你哪天想用街道名来排序,这时,最好将门牌号和街道名分开。

数据库中每个列都有相应的数据类型。数据类型(datatype)定义了列可以存储哪些数据种类。例如,如果列中存储的是数字(或许是订单中的物品数),则相应的数据类型应该为数值类型。如果列中存储的是日期、文本、注释、金额等,则应该规定好恰当的数据类型。

数据类型

允许什么类型的数据。每个表列都有相应的数据类型,它限制(或允许)该列中存储的数据。

数据类型限定了可存储在列中的数据种类(例如,防止在数值字段中录入字符值)。数据类型还帮助正确地分类数据,并在优化磁盘使用方面起重要的作用。因此,在创建表时必须特别关注所用的数据类型。

注意:数据类型兼容

数据类型及其名称是 SQL 不兼容的一个主要原因。虽然大多数基本数据类型得到了一致的支持,但许多高级的数据类型却没有。更糟的是,偶然会有相同的数据类型在不同的 DBMS 中具有不同的名称。对此用户毫无办法,重要的是在创建表结构时要记住这些差异。

四、行

表中的数据是按行存储的,所保存的每个记录存储在自己的行内。如果将表想象为网格,网格中垂直的列为表列,水平行为表行。

例如,顾客表可以每行存储一个顾客。表中的行编号为记录的编号。

行(row)

表中的一个记录。

说明:是记录还是行?

你可能听到用户在提到行时称其为数据库记录(record)。这两个术语多半是可以互通的,但从技术上说,行才是正确的术语。

五、主键

表中每一行都应该有一列(或几列)可以唯一标识自己。顾客表可以使用顾客编号,而订单表可以使用订单 ID。雇员表可以使用雇员 ID。书目表则可以使用国际标准书号 ISBN。

主键(primary key)

一列(或几列),其值能够唯一标识表中每一行。

唯一标识表中每行的这个列(或这几列)称为主键。主键用来表示一个特定的行。没有主键,更新或删除表中特定行就极为困难,因为你不能保证操作只涉及相关的行,没有伤及无辜。

提示:应该总是定义主键

虽然并不总是需要主键,但多数数据库设计者都会保证他们创建的每个表具有一个主键,以便于以后的数据操作和管理。

表中的任何列都可以作为主键,只要它满足以下条件:

  • 任意两行都不具有相同的主键值;
  • 每一行都必须具有一个主键值(主键列不允许空值 NULL);
  • 主键列中的值不允许修改或更新;
  • 主键值不能重用(如果某行从表中删除,它的主键不能赋给以后的新行)。

主键通常定义在表的一列上,但并不是必须这么做,也可以一起使用多个列作为主键。在使用多列作为主键时,上述条件必须应用到所有列,所有列值的组合必须是唯一的(但其中单个列的值可以不唯一)。

请参阅

  • 数据库基础
  • 什么是 SQL
  • 动手实践

(完)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/6016.html

(0)
上一篇 2023-04-19 10:30
下一篇 2023-04-19

相关推荐

  • mysql57修改用户密码「建议收藏」

    mysql57修改用户密码「建议收藏」进入mysql: mysql -u root -p 选择数据库: use mysql; 修改密码: update user set password=password('新密码&amp

    2023-03-07
    139
  • hadoop kafka spark_hadoop ha

    hadoop kafka spark_hadoop ha创建3台虚拟机 主机为桌面版 其他为迷你版本 ******************************常用命令、进程名称****************************启动集群命令: st

    2023-02-14
    129
  • MongoDB—mongodb启动问题

    MongoDB—mongodb启动问题https://blog.csdn.net/vivianXuejun/article/details/78809655 https://www.bt.cn/bbs/forum.php?mod=view

    2022-12-19
    161
  • SparkStreaming两种方式连接Flume

    SparkStreaming两种方式连接FlumeSparkStreaming 连接Flume的两种方式分别为:Push(推)和Pull(拉)的方式实现,以Spark Streaming的角度来看,Push方式属于推送(由Flume向Spark推送数

    2023-04-10
    164
  • Python程序员: 用代码实现你想要的功能

    Python程序员: 用代码实现你想要的功能随着互联网的发展,代码已经渐渐成为了一个人在信息时代中的必备技能之一。而Python作为一种简单易学、功能丰富的编程语言,已经成为了各行各业中广泛使用的工具。Python程序员可以用代码实现各种各样的功能:爬取网页数据、解析数据、制作数据可视化图表等等。Python程序员可以做的事情多种多样,本文将介绍几个常见的方面。

    2024-02-11
    99
  • Python与MongoDB联手,打造高效数据处理系统

    Python与MongoDB联手,打造高效数据处理系统随着互联网技术的发展,海量数据的处理已成为众多企业的重要任务。而作为一种高效的非关系型数据库,MongoDB正逐渐成为了越来越多数据处理应用的选择。在本文中,我们将介绍如何使用Python与MongoDB联手,搭建一个高效的数据处理系统,帮助企业更好地处理海量数据。

    2024-08-07
    31
  • 如何深入理解关系型数据库的三大范式分别是_数据库中的三大范式

    如何深入理解关系型数据库的三大范式分别是_数据库中的三大范式该文章,GitHub已收录,欢迎老板们前来Star! GitHub地址: https://github.com/Ziphtracks/JavaLearningmanual 数据库范式 一、什么是数据库

    2023-03-11
    157
  • Python命令行参数解析

    Python命令行参数解析命令行参数解析是命令行工具开发中的重要一环,它可以帮助我们方便地为我们的程序传递参数。在Python中,有许多优秀的库可以用来解析命令行参数,例如Python自带的argparse库、第三方库docopt等。接下来,我们就来详细地了解一下Python命令行参数解析。

    2024-02-10
    91

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注