MySQL 第一章、第二章 了解SQL与MySQL简介

了解SQL

数据库基础

你正在阅读本书,这表明你需要以某种方式与数据库打交道。在深入学习MySQL及其SQL语言的实现之前,应该对数据库及数据库技术的某些基本概念有所了解。

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

虽然我们一直都在使用数据库,但对究竟什么是数据库并不十分清 楚。特别是不同的人可能会使用相同的数据库术语表示不同的事物,更加剧了这种混乱。因此,我们学习的良好切入点就是给出一张最重要的数据库术语清单,并加以说明。

基本概念回顾 下面是某些基本数据库概念的简要介绍。如果你已经具有一定的数据库经验,这可以用于复习巩固;如果你 是一个数据库新手,这将给你提供一些必需的基本知识。理解数据库是掌握MySQL的一个重要部分,如果有必要的话,你应该参阅一些有关数据库基础知识的书籍。

什么是数据库

数据库这个术语的用法很多,但就本书而言,数据库是一个以某种 有组织的方式存储的数据集合。理解数据库的一种最简单的办法是将其 想象为一个文件柜。此文件柜是一个存放数据的物理位置,不管数据是什么以及如何组织的。

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

误用导致混淆 人们通常用数据库这个术语来代表他们使用的数据库软件。这是不正确的,它是引起混淆的根源。确切地说,数据库软件应称为DBMS(数据库管理系统)。数据库是通过DBMS创建和操纵的容器。数据库可以是保存在硬设备上的文件,但也可以不是。在很大程度上说,数据库究竟是文件还是别的什么东西并不重要,因为你并不直接访问数据库;你使用的是DBMS,它替你访问数据库。

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

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

表(table) 某种特定类型数据的结构化清单。

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

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

表名 表名的唯一性取决于多个因素,如数据库名和表名等的 结合。这表示,虽然在相同数据库中不能两次使用相同的表名, 但在不同的数据库中却可以使用相同的表名。

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

模式(schema) 关于数据库和表的布局及特性的信息。
是模式还是数据库? 有时,模式用作数据库的同义词。遗憾 的是,模式的含义通常在上下文中并不是很清晰。本书中,模式指的是上面给出的定义。

列和数据类型

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

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

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

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

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

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

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

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

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

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

是记录还是行? 你可能听到用户在提到行(row)时称其为 数据库记录(record)。在很大程度上,这两个术语是可以互相 替代的,但从技术上说,行才是正确的术语。

主键

表中每一行都应该有可以唯一标识自己的一列(或一组列)。一个顾 客表可以使用顾客编号列,而订单表可以使用订单ID,雇员表可以使用 雇员ID或雇员社会保险号。

主键(primary key) 一列(或一组列),其值能够唯一区分表中每个行。

唯一标识表中每行的这个列(或这组列)称为主键。主键用来表示 一个特定的行。没有主键,更新或删除表中特定行很困难,因为没有安全的方法保证只涉及相关的行。

应该总是定义主键 虽然并不总是都需要主键,但大多数数据 库设计人员都应保证他们创建的每个表具有一个主键,以便于 以后的数据操纵和管理。

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

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

主键值规则 这里列出的规则是MySQL本身强制实施的。

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

主键的最好习惯 除MySQL强制实施的规则外,应该坚持的 几个普遍认可的最好习惯为:
 不更新主键列中的值;
 不重用主键列的值;
 不在主键列中使用可能会更改的值。(例如,如果使用一个
名字作为主键以标识某个供应商,当该供应商合并和更改其名字时,必须更改这个主键。)

还有一种非常重要的键,称为外键,我们将在第15章中介绍。

什么是SQL

与其他语言(如,英语以及Java和Visual Basic这样的程序设计语言) 不一样,SQL由很少的词构成,这是有意而为的。设计SQL的目的是很好 地完成一项任务,即提供一种从数据库中读写数据的简单有效的方法。

SQL有如下的优点。
 SQL不是某个特定数据库供应商专有的语言。几乎所有重要的 DBMS都支持SQL,所以,学习此语言使你几乎能与所有数据库 打交道。

 SQL简单易学。它的语句全都是由描述性很强的英语单词组成, 而且这些单词的数目不多。

 SQL尽管看上去很简单,但它实际上是一种强有力的语言,灵活 使用其语言元素,可以进行非常复杂和高级的数据库操作。

DBMS专用的SQL SQL不是一种专利语言,而且存在一个标 准委员会,他们试图定义可供所有DBMS使用的SQL语法,但 事实上任意两个DBMS实现的SQL都不完全相同。本书讲授的 SQL是专门针对MySQL的,虽然书中所讲授的多数语法也适 用于其他DBMS,但不要认为这些SQL语法是完全可移植的。

动手实践

本书所有章节都采用可上机运行的例子来说明SQL语法,它的功能是 什么,为什么起这样的作用。作者强烈建议读者试验每个例子,以便掌 握MySQL的第一手资料。

附录B描述了本书中使用的样例表,说明如何获得和安装它们。如果 你还没有获得和安装它们,请在继续学习前先学习这个附录。

你需要MySQL 显然,你需要能访问某个MySQL副本,以便 学习本书的内容。附录A说明了在何处获得MySQL的副本,并 提供一定的入门指导。如果你已经能访问某个MySQL副本, 在继续学习之前,也请阅读该附录。

小结

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

MySQL简介

本章将介绍什么是MySQL,以及在MySQL中可以应用什么工具。

什么是MySQL

我们在前一章中介绍了数据库和SQL。正如所述,数据的所有存储、 检索、管理和处理实际上是由数据库软件——DBMS(数据库管理系统) 完成的。MySQL是一种DBMS,即它是一种数据库软件。

MySQL已经存在很久了,它在世界范围内得到了广泛的安装和使用。 为什么有那么多的公司和开发人员使用MySQL?以下列出其原因。

 成本——MySQL是开放源代码的,一般可以免费使用(甚至可以 免费修改)。

 性能——MySQL执行很快(非常快)。

 可信赖——某些非常重要和声望很高的公司、站点使用MySQL,
这些公司和站点都用MySQL来处理自己的重要数据。

 简单——MySQL很容易安装和使用。

事实上,MySQL受到的唯一真正的批评是它并不总是支持其他 DBMS提供的功能和特性。然而,这一点也正在逐步得到改善,MySQL 的各个新版本正不断增加新特性、新功能。

客户机—服务器软件

DBMS可分为两类:一类为基于共享文件系统的DBMS,另一类为基
于客户机—服务器的DBMS。前者(包括诸如Microsoft Access和FileMaker)用于桌面用途,通常不用于高端或更关键的应用。

MySQL、Oracle以及Microsoft SQL Server等数据库是基于客户机—服 务器的数据库。客户机—服务器应用分为两个不同的部分。服务器部分是 负责所有数据访问和处理的一个软件。这个软件运行在称为数据库服务 器的计算机上。

与数据文件打交道的只有服务器软件。关于数据、数据添加、删除 和数据更新的所有请求都由服务器软件完成。这些请求或更改来自运行 客户机软件的计算机。客户机是与用户打交道的软件。例如,如果你请 求一个按字母顺序列出的产品表,则客户机软件通过网络提交该请求给 服务器软件。服务器软件处理这个请求,根据需要过滤、丢弃和排序数 据;然后把结果送回到你的客户机软件。

有多少计算机? 客户机和服务器软件可能安装在两台计算机或一台计算机上。不管它们在不在相同的计算机上,为进行所有数据库交互,客户机软件都要与服务器软件进行通信

所有这些活动对用户都是透明的。数据存储在别的地方,或者数据 库服务器为你完成这个处理这一事实是隐藏的。你不需要直接访问数据 文件。事实上,多数网络的建立使用户不具有对数据的访问权,甚至不 具有对存储数据的驱动器的访问权。

这样的意义何在?因为为了使用MySQL,你需要访问运行MySQL服务器软件的计算机和发布命令到MySQL的客户机软件的计算机。

 服务器软件为MySQL DBMS。你可以在本地安装的副本上运行, 也可以连接到运行在你具有访问权的远程服务器上的一个副本。

 客户机可以是MySQL提供的工具、脚本语言(如Perl)、Web应用 开发语言(如ASP、ColdFusion、JSP和PHP)、程序设计语言(如
C、C++、Java)等。

MySQL版本

MySQL的当前版本为版本51(虽然许多公司正在使用MySQL 3和4)。

下面是最近版本中引入的主要更改。

 4——InnoDB引擎,增加事务处理(第26章)、并(第17章)、改 进全文本搜索(第18章)等的支持。

 4.1——对函数库、子查询(第14章)、集成帮助等的重要增加。  5——存储过程(第23章)、触发器(第25章)、游标(第24章)、
视图(第22章)等。 版本4.1和版本5对MySQL增加了重要的功能,本书中涵盖了这些功能的大多数。

客户机工具稍后介绍。我们先简要介绍DBMS版本。

MySQL工具

如前所述,MySQL是一个客户机—服务器DBMS,因此,为了使用 MySQL,需要有一个客户机,即你需要用来与MySQL打交道(给MySQL 提供要执行的命令)的一个应用。

有许多客户机应用可供选择,但在学习MySQL(确切地说,在编写和测试MySQL脚本时),最好是使用专门用途的实用程序。特别是有3个工具需要提及。

mysql 命令实用程序

在这里插入图片描述
MySQL选项和参数 如果仅输入mysql,可能会出现一个错误 消息。因为可能需要安全证书,或者是因为MySQL没有运行 在本地或默认端口上。mysql接受你可以(和可能需要)使用 的一组命令行参数。例如,为了指定用户登录名ben,应该使 用mysql -u ben。为了给出用户名、主机名、端口和口令, 应该使用mysql -u ben -p -h myserver -P 9999。
完整的命令行选项和参数列表可用mysql --help获得。

当然,具体的版本和连接信息可能不同,但都可以使用这个实用程 序。请注意:

 命令输入在mysql>之后;

 命令用;或\g结束,换句话说,仅按Enter不执行命令;

 输入help或\h获得帮助,也可以输入更多的文本获得特定命令的
帮助(如,输入help select获得使用SELECT语句的帮助);  输入quit或exit退出命令行实用程序。

mysql命令行实用程序是使用最多的实用程序之一,它对于快速测试 和执行脚本(如前一章和附录B中的样例表创建和填充脚本)非常有价 值。事实上,本书中使用的所有输出例子都是从mysql命令行输出中抓取的。

熟悉mysql命令行实用程序 即使你选择使用后面描述的某 个图形工具,也应该保证熟悉mysql命令行实用程序,因为它 是你可以安全地依靠的一个总是会被给出的客户机(因为它是 核心MySQL安装的一部分)。

MySQL Administrator

MySQL Administrator(MySQL管理器)是一个图形交互客户机,用来简化MySQL服务器的管理。

获得MySQL Administrator MySQL Administrator不作为核心 MySQL 的组 成部分安装 。 必须从 http://dev.mysql.com/ downloads/下载它(可得到用于Linux、Mac OS X和Windows的版本,其源代码也可以下载)。

MySQL Administrator提示输入服务器和登录信息(并且允许你保存服务器定义供以后选择),然后显示允许选择不同视图的图标。其中:

 Server Information(服务器信息)显示客户机和被连接的服务器的 状态和版本信息;
 Service Control(服务控制)允许停止和启动MySQL以及指定服务 器特性;
 User Administration(用户管理)用来定义MySQL用户、登录和权限;
 Catalogs(目录)列出可用的数据库并允许创建数据库和表。

为本书创建数据源 可以使用Create New Schema选项为本书 的表和各章节创建一个数据源。书中各个例子使用一个名为 crashcourse的数据源,你可以使用这个名字,也可以使用自己选择的名字。

快速访问其他工具 MySQL Administrator工具菜单包含有启
动mysql命令行实用程序(前面描述)和MySQL Query Browser (MySQL查询浏览器)(下面描述)的选项。
MySQL Query Browser也包含启动mysql命令行实用程序和 MySQL Administrator的菜单选项

MySQL Query Browser

MySQL Query Browser为一个图形交互客户机,用来编写和执行 MySQL命令。

获得MySQL Query Browser 与MySQL Administrator一样, MySQL Query Browser不作为核心MySQL安装的成分。也必须 从http://dev.mysql.com/downloads/下载它(可得到用于Linux、 Mac OS X和Windows的版本,其源代码也可以下载)。

MySQL Query Browser要求输入服务器和登录信息(在MySQL Query Browser和MySQL Administrator之间共享保存的定义),然后显示应用界 面。注意下面几点。

 输入MySQL命令到屏幕顶上的窗口中。在输入语句后,单击 Execute按钮把它提交给MySQL处理。

 结果(如果有)显示在屏幕左边的大区域网格中。

 多条语句和结果显示在它们自己的标签中,并且允许快速切换。  屏幕右边是一个标签,它列出所有可能的数据源(这里称为大纲),
展开任一数据源查看它的表,展开任一个表查看它的列。 你还可以选择表和列让MySQL Query Browser为你编写MySQL语
句。

 Schemata(大纲)标签的右边是一个History(历史)标签,它保
持MySQL语句的执行历史。在需要测试不同版本的MySQL语句
时,它非常有用。

 关于MySQL语法、函数等的帮助可在屏幕右下角得到。

执行保存的脚本 可用MySQL Query Browser执行保存的脚 本(如用来创建和填充本书中使用的表的脚本)。为执行保存 的脚本,请选择File, Open Script,选择相应的脚本(它将显 示在一个新标签中),然后单击Execute按钮。

小结

本章介绍了什么是MySQL,并引入了几个客户机实用程序(一个命
令行实用程序,两个可选但强烈建议使用的图形实用程序)。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值