iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >学习 SQL 之前需要了解的基础知识
  • 789
分享到

学习 SQL 之前需要了解的基础知识

学习SQL之前需要了解的基础知识 2016-05-04 07:05:48 789人浏览 无得
摘要

目录一、数据库基础1.1 数据库1.2 表1.3 列和数据类型1.4 行1.5 主键二、什么是 sql三、动手实践3.1 该选哪个 DBMS?四、小结 本文为 SQL 初学者介绍了 SQL 究竟是什么,以及它能做什么事情。因为 SQL 是

学习 SQL 之前需要了解的基础知识

目录
  • 一、数据库基础
    • 1.1 数据库
    • 1.2 表
    • 1.3 列和数据类型
    • 1.4 行
    • 1.5 主键
  • 二、什么是 sql
  • 三、动手实践
    • 3.1 该选哪个 DBMS?
  • 四、小结

本文为 SQL 初学者介绍了 SQL 究竟是什么,以及它能做什么事情。因为 SQL 是用来与数据库打交道的,所以,我们也介绍了一些基本的数据库术语。

一、数据库基础

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

你可能还没有意识到,其实自己一直在使用数据库。每当你在手机上选取联系人,或从电子邮件地址簿里查找名字时,就是在使用数据库。

你在网站上进行搜索,也是在使用数据库。你在工作中登录网络,也需要依靠数据库验证用户名和密码。即使是在自动取款机上使用 ATM 卡,也要利用数据库进行密码验证和余额查询。

虽然我们一直都在使用数据库,但对究竟什么是数据库并不十分清楚。更何况人们可能会使用同一个数据库术语表示不同的事物,这样一来,就进一步加剧了这种混乱。

因此,我们首先给出一些最重要的数据库术语,并加以说明。

提示:基本概念回顾

后面是一些基本数据库概念的简要介绍。如果你已经具有一定的数据库经验,可以借此复习巩固一下;如果你刚开始接触数据库,可以由此了解必需的基本知识。

理解数据库概念是学习并掌握 SQL 的重要前提,如果有必要,你或许还应该找本好书好好补一补数据库基础知识。

1.1 数据库

数据库这个术语的用法很多,但就本博客中的 SQL 分类下的文章而言,数据库是以某种有组织的方式存储的数据集合

最简单的办法是将数据库想象为一个文件柜。文件柜只是一个存放数据的物理位置,它不管数据是什么,也不管数据是如何组织的。

数据库(database)

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

注意:误用导致混淆

人们通常用数据库这个术语来代表他们使用的数据库软件,这是不正确的,也因此产生了许多混淆。确切地说,数据库软件应称为数据库管理系统(DBMS)。

数据库是通过 DBMS 创建和操纵的容器,而具体它究竟是什么,形式如何,各种数据库都不一样。

1.2 表

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

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

表(table)

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

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

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

说明:表名

使表名成为唯一的,实际上是数据库名和表名等的组合。有的数据库还使用数据库拥有者的名字作为唯一名的一部分。

也就是说,虽然在一个数据库中不能两次使用相同的表名,但在不同的数据库中完全可以使用相同的表名。

表具有一些特性,这些特性定义了数据在表中如何存储,包括存储什么样的数据,数据如何分解,各部分信息如何命名等信息。

描述表的这组信息就是所谓的模式(schema),模式可以用来描述数据库中特定的表,也可以用来描述整个数据库(和其中表的关系)。

模式

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

1.3 列和数据类型

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

列(column)

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

理解列的最好办法是将数据库表想象为一个网格,就像个电子表格那样。网格中每一列存储着某种特定的信息。

例如,在顾客表中,一列存储顾客编号,另一列存储顾客姓名,而地址、城市、州以及邮政编码全都存储在各自的列中。

提示:数据分解

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

如果城市和州组合在一个列中,则按州进行分类或过滤就会很困难。你可以根据自己的具体需求来决定把数据分解到何种程度。

例如,一般可以把门牌号和街道名一起存储在地址里。

这没有问题,除非你哪天想用街道名来排序,这时,最好将门牌号和街道名分开。

数据库中每个列都有相应的数据类型。数据类型(datatype)定义了列可以存储哪些数据种类。

例如,如果列中存储的是数字(或许是订单中的物品数),则相应的数据类型应该为数值类型。如果列中存储的是日期、文本、注释、金额等,则应该规定好恰当的数据类型。

数据类型

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

数据类型限定了可存储在列中的数据种类(例如,防止在数值字段中录入字符值)。数据类型还帮助正确地分类数据,并在优化磁盘使用方面起重要的作用。

因此,在创建表时必须特别关注所用的数据类型。

注意:数据类型兼容

数据类型及其名称是 SQL 不兼容的一个主要原因。虽然大多数基本数据类型得到了一致的支持,但许多高级的数据类型却没有。

更糟的是,偶然会有相同的数据类型在不同的 DBMS 中具有不同的名称。对此用户毫无办法,重要的是在创建表结构时要记住这些差异。

1.4 行

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

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

行(row)

表中的一个记录。

说明:是记录还是行?

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

1.5 主键

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

主键(primary key)

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

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

提示:应该总是定义主键

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

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

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

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

还有一种非常重要的键,称为外键,我们在 如何使用 SQL INNER JOIN 联结两个或多个表 中介绍。

二、什么是 SQL

SQL(发音为字母 S-Q-L 或 sequel)是 Structured Query Language(结构化查询语言)的缩写。SQL 是一种专门用来与数据库沟通的语言。

与其他语言(如英语或 Java、C、PHP 这样的编程语言)不一样,SQL 中只有很少的词,这是有意而为的。设计 SQL 的目的是很好地完成一项任务——提供一种从数据库中读写数据的简单有效的方法。

SQL 有哪些优点呢?

  • SQL 不是某个特定数据库厂商专有的语言。绝大多数重要的 DBMS 支持 SQL,所以学习此语言使你几乎能与所有数据库打交道。
  • SQL 简单易学。它的语句全都是由有很强描述性的英语单词组成,而且这些单词的数目不多。
  • SQL 虽然看上去很简单,但实际上是一种强有力的语言,灵活使用其语言元素,可以进行非常复杂和高级的数据库操作。

下面我们将开始真正学习 SQL。

说明:SQL 的扩展

许多 DBMS 厂商通过增加语句或指令,对 SQL 进行了扩展。这种扩展的目的是提供执行特定操作的额外功能或简化方法。虽然这种扩展很有用,但一般都是针对个别 DBMS 的,很少有两个厂商同时支持这种扩展。

标准 SQL 由 ANSI 标准委员会管理,从而称为 ANSI SQL。所有主要的 DBMS,即使有自己的扩展,也都支持 ANSI SQL。各个实现有自己的名称,如 oracle 的 PL/SQL、微软 SQL Server 用的 Transact-SQL 等。

三、动手实践

与其他任何语言一样,学习 SQL 的最好方法是自己动手实践。为此,需要一个数据库和用来测试 SQL 语句的应用系统。

3.1 该选哪个 DBMS?

你需要用一种 DBMS 来跟着学,那么该选哪一个呢?

基本上有两种做法。一种是你在自己电脑上安装一个 DBMS(以及有关的客户端软件),这样做你用起来便利,好控制。但是对很多人来说,要学 SQL 最麻烦的一关就是安装配置 DBMS 了。

另一种做法是通过网络使用远程(或云端)DBMS,你不需要管理或安装任何东西。

要是准备在自己电脑上安装,其实可选的很多。我给两个建议:

  • Mysql(或派生的 MariaDB)是很不错的,免费,每个主流操作系统都支持,安装简便,它也是最流行的 DBMS 之一。

    mysql 自带一个命令行工具,你可以输入 SQL 命令,但最好是使用 MySQL Workbench,你也把它下载安装吧(通常是要单独安装的)。

  • windows 用户可以使用 Microsoft SQL Server Express。这是强大的 SQL Server 的一个免费版本,它还包括一个用户友好的客户端叫 SQL Server Management Studio

要是准备使用远程(或云端)DBMS 的话,我的建议是:

  • 如果你是为工作需要而学习 SQL,那么你们公司应该会有 DBMS 供你使用。这样的话,你应该可以得到登录名和连接工具,可以访问 DBMS 并输入和测试你的 SQL 语句。

  • 云端 DBMS 是指运行在虚拟服务器上的 DBMS,用起来就像自己机器上安装了 DBMS,而实际上不需要安装。所有主流的云服务厂商(如谷歌、亚马逊、微软)都提供云端 DBMS。

    可是,设置云端 DBMS(包括配置远程访问)都不太简单,经常比自己安装个 DBMS 还要费事。

    有两个例外,Oracle 的 Live SQL 和 IBM 的云端 DB2,它们提供的免费版本有 WEB 界面,你只需要在浏览器里输入 SQL 语句就可以了。

    学习 SQL 所用到的样例表脚本 解释了什么是样例表,并详述了如何获得(或创建)样例表。

四、小结

本文介绍了什么是 SQL,它为什么很有用。因为 SQL 是用来与数据库打交道的,所以,我们也复习了一些基本的数据库术语。

我们还建议你学习 SQL 的最好方法是自己亲自动手实践。为此,需要选择一个数据库和用来测试 SQL 语句的应用系统。

原文链接:https://www.developerastrid.com/sql/sql-introductory-tutorial-create-a-view/

(完)

原文地址:Https://www.cnblogs.com/vin-c/arcHive/2022/04/14/16143993.html

您可能感兴趣的文档:

--结束END--

本文标题: 学习 SQL 之前需要了解的基础知识

本文链接: https://www.lsjlt.com/news/9245.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • node基础学习:前端需了解的知识【总结】
    本篇文章带大家聊聊node的基础知识点,总结分享一些前端需要去了解的nodejs知识,希望对大家有所帮助!无论是前端开发还是后台开发个人认为都不应该局限于自己所在的领域,多去突破舒适圈才能有所提升,孰虽然能生巧,但我们也要知道学而不思则惘,...
    99+
    2023-05-14
    Node.js 前端
  • 学习C#需要哪些基础知识
    学习 C#程需要掌握一些基础知识,这些知识可以帮助您更好地理解C#语言的语法和结构,并顺利地构建应用程序。以下是一些学习C#所需的基础知识:1、编程概念:了解编程的基本概念,如变量、数据类型、运算符、控制结构、循环、函数等,这些概念在大多数...
    99+
    2023-10-22
    C#基础知识
  • 学习 Python 框架 numy,你需要了解哪些基础知识?
    学习 Python 框架 numpy,你需要了解哪些基础知识? Python 是一门非常强大的编程语言,它拥有许多优秀的第三方库和框架,其中最重要的就是 numpy 了。numpy 是一款高性能的科学计算库,它提供了很多高效的数组操作函数,...
    99+
    2023-10-24
    框架 numy 学习笔记
  • 机器学习之基础知识(全)
    目录 1.机器学习概述 1.1 人工智能概述 1.1.1 人工智能使用场景 1.1.2 人工智能小案例 1.2 人工智能发展历程 1.2.1 图灵测试 1.2.2 发展历程 1.2.3 小结 1.3 人工智能主要分支 1.3.1 人工智能、...
    99+
    2023-08-31
    机器学习
  • Spring5学习之基础知识总结
    目录1.概述2.入门Demo3.源码1.概述 1、Spring 是轻量级的开源的 JavaEE 框架 2、 Spring 可以解决企业应用开发的复杂性 3、Spring 有两个核心部...
    99+
    2024-04-02
  • 在学习Python之前,你需要掌握哪些基本的编程知识?
    学习Python之前,你需要具备哪些基本的编程基础? Python是一种流行的高级编程语言,被广泛应用于数据科学、人工智能、Web开发等领域。它的简洁语法和丰富的生态系统使得Python成为了许多人入门编程的首选语言。然而,在学...
    99+
    2024-01-13
    数据结构 算法设计 基本概念
  • Python基础知识学习之类的继承
    目录一、继承的格式二、单继承三、多继承四、重写父类方法五、打印继承关系六、调用父类方法七、私有属性与方法一、继承的格式 类的继承格式如下,括号中的为父类名。 class 类名(父...
    99+
    2024-04-02
  • 学习前端需要掌握哪些基础
    小编给大家分享一下学习前端需要掌握哪些基础,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!学习前端需要掌握的基础知识点如下:一、H...
    99+
    2024-04-02
  • 了解HTTP:你需要知道的基础知识和实践技巧
    HTTP(HyperText Transfer Protocol)是互联网上最基本、最重要的协议之一,它负责数据在网络中的传输。无论是浏览网页、发送电子邮件、下载文件等等,都需要用到HTTP协议。 在本文中,我们将介绍HTTP的基础知识和实...
    99+
    2023-11-12
    django http git
  • Unity与Android交互(3)——需要了解的Andorid基础知识
    【前言】 在上一篇文章中只是说了如何实现unity和android交互的问题,要了解其中的原理还必须要先了解一些Android的基础知识,了解后也能搞清楚如何接入SDK或者写Native插件。 (以下只是简要介绍,详细的内容需要自己去看链接...
    99+
    2023-09-01
    Android四大组件 UI线程 ARR与JAR 静态链接库与动态链接库 AndroidManifest Android so文件
  • web前端开发都需要学习哪些知识
    web前端开发在目前的IT行业是一个比较重要的岗位,web前端开发是直接与用户接触,前端体验的好坏,以及美观程度是非常重要的,毕竟现在是一个看脸的时代。前端开发需要学习的知识非常的多,非常的杂,一个前端页面的开发,需要涉及很多的知识,且前端...
    99+
    2023-06-03
  • 前端工程师学习基础知识有哪些
    小编给大家分享一下前端工程师学习基础知识有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 1.完...
    99+
    2024-04-02
  • Java基础学习之字符串知识总结
    目录一、前言二、String 类(字符串常量)2.1 String 类实例的创建2.2 String 对象的比较2.3 String对象的空值2.4 字符串拼接三、StringBui...
    99+
    2024-04-02
  • 学习爬虫必须学的基础知识
    数据的来源1)用户自行产生2)去第三方的公司购买数据3)去免费的数据网站下载数据4)人工收集数据5)爬虫获取2.什么是爬虫网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网...
    99+
    2023-06-02
  • Linux用户需要了解的ASP shell基础知识是什么?
    ASP shell是一种在Linux系统上运行的脚本语言,它可以让用户通过命令行界面来执行各种任务,例如管理文件、搭建网站等。对于Linux用户来说,了解ASP shell的基础知识是非常重要的,下面我们就来介绍一下这方面的内容。 一、AS...
    99+
    2023-09-25
    shell http linux
  • 学习seo需要了解什么常识
    小编给大家分享一下学习seo需要了解什么常识,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!了解基础知识如果是真正想要学习seo的人一定是有多种方式途径去查询的,最...
    99+
    2023-06-10
  • 要学习Python,需要哪些基本的先决条件知识?
    想要学习Python,你需要具备哪些基本的前置知识? Python作为一门易学易用的编程语言,非常适合初学者入门。然而,在开始学习Python之前,一些基本的前置知识会对学习过程产生积极的影响。本文将详细介绍学习Python所需...
    99+
    2024-01-13
    编程基础 前置知识
  • Java基础学习之方法的重载知识总结
    目录一、什么是方法的重载?二、构成方法重载的条件三、重点一、什么是方法的重载? 方法的重载是指一个类中可以定义多个方法名相同,但参数不同的方法。 调用时,会根据不同的参数自动匹配...
    99+
    2024-04-02
  • python基础学习之递归函数知识总结
    目录一、递归函数使用注意点二、递归的效率问题三、递归函数引入四、递归的深度五、通过缓存解决递归限制六、递归函数使用示例一、递归函数使用注意点 递归函数一定要编写终止条件,否则将产生无...
    99+
    2024-04-02
  • 学习ASP的最佳方式:了解HTTP和Apache的基础知识
    ASP(Active Server Pages)是一种动态网页开发技术,它可以让开发者在网页中嵌入动态的、交互式的内容。要学习ASP,我们需要了解HTTP和Apache的基础知识。在本文中,我们将深入探讨这些基础知识,并演示一些代码示例,...
    99+
    2023-09-17
    http 学习笔记 apache
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作