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

了解SQL

目录

1、数据库基础

(1)数据库(database)

(2)表(table)与模式(schema)

(3)列和数据类型

(4)行

(5)主键

2、什么是SQL

3、动手实践


1、数据库基础

生活中我们方方面面都在使用数据库,但并不清楚什么是数据库,下面将介绍最重要的数据库术语。

(1)数据库(database)

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

  • 数据库是一个以某种有组织的方式存储的数据集合。最简单的办法是将数据库想象为一个文件柜。

注意:误用导致混淆

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

(2)表(table)与模式(schema)

 表(table) :某种特定类型数据的结构化清单(订单和顾客的清单需要分别有各自的表)

  • 你往文件柜里放资料时,并不是随便将它们扔进某个抽屉就完事了,而是在文件柜中创建文件,然后将相关的资料放入特定的文件中。
  • 在数据库领域中,这种文件称为表。表是一种结构化的文件,可用来存储某种特定类型的数据。表可以保存顾客清单、产品目录等。
  •  数据库的每一个表是唯一的,有唯一的名字标识---即数据库名+表名。

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

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

(3)列和数据类型

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

  • 表由列组成。列存储表中某部分的信息。 
  • 例如,在顾客表中,一列存储顾客编号,另一列存储顾客姓名,而地址、城市、州以及邮政编码全都存储在各自的列中。

提示:分解数据

  • 正确地将数据分解为多个列极为重要。例如,城市、州、邮政编码应该总是彼此独立的列。通过分解这些数据,才有可能利用特定的列对数据进行分类和过滤(如找出特定州或特定城市的所有顾客)。如果城市和州组合在一个列中,则按州进行分类或过滤就会很困难。
  • 你可以根据自己的具体需求来决定把数据分解到何种程度。例如,一般可以把门牌号和街道名一起存储在地址里。这没有问题,除非你哪天想用街道名来排序,这时,最好将门牌号和街道名分开。

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

  • 数据类型限定了可存储在列中的数据种类(例如,防止在数值字段中录入字符值)。数据类型还帮助正确地分类数据,并在优化磁盘使用方面起重要的作用。因此,在创建表时必须特别关注所用的数据类型。
  • 数据库中每个列都有相应的数据类型。数据类型(datatype)定义了列可以存储哪些数据种类。例如,如果列中存储的是数字(或许是订单中的物品数),则相应的数据类型应该为数值类型。如果列中存储的是日期、文本、注释、金额等,则应该规定好恰当的数据类型。

注意:数据类型兼容

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

(4)行

行(row):表中的一个记录。

  • 表中的数据是按行存储的,所保存的每个记录存储在自己的行内。如果将表想象为网格,网格中垂直的列为表列,水平行为表行。例如,顾客表可以每行存储一个顾客。表中的行编号为记录的编号。

说明:是记录还是行?

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

(5)主键

 主键(primary key):一列(或一组列),其值能够唯一标识表中每一行。

  • 表中每一行都应该有一列(或几列)可以唯一标识自己。顾客表可以使用顾客编号,而订单表可以使用订单 ID
  • 唯一标识表中每行的这个列(或这几列)称为主键。主键用来表示一个特定的行。没有主键,更新或删除表中特定行就极为困难,因为你不能保证操作只涉及相关的行。

提示:应该总是定义主键

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

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

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

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

2、什么是SQL

SQL(发音为字母 S-Q-L sequel)是 Structured Query Language(结构化查询语言)的缩写。SQL 是一种专门用来与数据库沟通的语言。与其他语言(如英语或 JavaCPHP 这样的编程语言)不一样,SQL中只有很少的词,这是有意而为的。设计 SQL 的目的是很好地完成一项任务——提供一种从数据库中读写数据的简单有效的方法。

SQL 有如下的优点:

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

说明:SQL 的扩展

很多DBMS厂商会进行SQL语句的扩展,但这些扩展都是针对特定DBMS的,标准的SQL有ANSI标准委员会管理,这里讲授的是ANSI SQL。

3、动手实践

博主用的是mysql8,附上mysql8和MySQL server的安装教程:2024 年 MySQL 8.0 安装 配置 教程 最简易(保姆级)_mysql安装-CSDN博客

附上示例资料:

百度网盘链接: https://pan.baidu.com/s/1XaWi3Y7hpXbs_uHq2cPI6Q

提取码: fpnx


http://www.kler.cn/a/472683.html

相关文章:

  • ADO.NET知识总结3---SqlCommand命令对象
  • 【QT-QTableView实现鼠标悬浮(hover)行高亮显示+并设置表格样式】
  • Qt 5.14.2 学习记录 —— 오 信号与槽机制(2)
  • 基于YOLO5的机械臂视觉抓取实现
  • .NET AI 开发人员库 --AI Dev Gallery简单示例--问答机器人
  • 二、模型训练与优化(1):构建并训练模型
  • MongoDB的部署和操作
  • 微服务面试相关
  • Qt之Cannot create children for a parent that is in a different thread问题分析
  • uniapp的两种弹窗方式
  • ffmpeg aac s16 encode_audio.c
  • idea 编辑竖列:alt +shift+insert
  • Python的Matplotlib库应用(超详细教程)
  • C++ ——— 匿名对象
  • Spring AI零起点搭建AI应用
  • spring:xml声明bean的多种方式。
  • 电脑32位和64位之区别(Difference between 32-Bit and 64 Bit Computers)
  • Python —— 常用的字符串方法
  • STM32-笔记39-SPI-W25Q128
  • python matplotlib.pyplot中绘制带文字标注的箭头,使其指向某一特定数据点
  • 使用SpringBoot-data-mongodb操作MongoDB
  • 总结2024,迎接2025
  • 一套极简易的直流无刷电机(Deng FOC)开发套件介绍
  • 企业开通部署 Azure OpenAI 流程:如何创建一个AI聊天机器人
  • 【深度学习基础】线性神经网络 | 线性回归的简洁实现
  • 单片机死机问题处理