一、数据库基础
- 数据库(database) 保存有组织的数据的容器(通常是一个文件或一组文件)。
- 数据库软件应称为DBMS(数据库管理系统);
- 数据库是通过DBMS创建和操纵的容器。
- 表(table) 某种特定类型数据的结构化清单。
- 存储在表中的数据是一种类型的数据或一个清单。
- 表名:唯一性取决于多个因素,虽然在相同数据库中不能两次使用相同的表名,但在不同的数据库中却可以使用相同的表名。
- 模式(schema) 关于数据库和表的布局及特性的信息。
- 模式可以用来描述数据库中特定的表以及整个数据库(和其中表的关系)。
- 模式用作数据库的同义词。遗憾的是,模式的含义通常在上下文中并不是很清晰。
- 列(column) 表中的一个字段。所有表都是由一个或多个列组成的。
- 表由列组成。
- 正确地将数据分解为多个列极为重要。
- 数据类型(datatype) 所容许的数据的类型。每个表列都有相应的数据类型,它限制(或容许)该列中存储的数据。
- 数据类型还帮助正确地排序数据,并在优化磁盘使用方面起重要的作用。
- 行(row) 表中的一个记录。
- 表中的数据是按行存储的,所保存的每个记录存储在自己的行内。
- 行( row)有时称为数据库记录( record)。但行更专业。
- 主键(primary key)一列(或一组列),其值能够唯一区分表中每个行,可以唯一标识表中每行的这个列(或这组列)。
- “键”也称“键码”或“码”。
- 主键用来表示一个特定的行。没有主键,更新或删除表中特定行很困难,因为没有安全的方法保证只涉及相关的行。
- 作主键的条件:
- 任意两行都不具有相同的主键值;
- 每个行都必须具有一个主键值(主键列不允许NULL值)。
- 使用多个列一起作为主键。所有列值的组合必须是唯一的(但单个列的值可以不唯一)。
- 主键的最好习惯:
- 不更新主键列中的值;
- 不重用主键列的值;
- 不在主键列中使用可能会更改的值。
- SQL是结构化查询语言(Structured Query Language)的缩写。
- 是一种专门用来与数据库通信的语言;
- 由很少的词构成
- 优点:
- SQL不是某个特定数据库供应商专有的语言。几乎所有重要的DBMS都支持SQL。
- SQL简单易学。它的语句全都是由描述性很强的英语单词组成,而且这些单词的数目不多。
- SQL尽管看上去很简单,但它实际上是一种强有力的语言,灵活使用其语言元素,可以进行非常复杂和高级的数据库操作。
- 不要认为这些SQL语法是完全可移植的。
- MySQL:数据的所有存储、检索、管理和处理实际上是由数据库软件——DBMS(数据库管理系统)完成的。 MySQL是一种DBMS,即它是一种数据库软件。
- 优点:
- 简单——MySQL很容易安装和使用。
- 可信赖——某些非常重要和声望很高的公司、站点使用MySQL,这些公司和站点都用MySQL来处理自己的重要数据。
- 性能——MySQL执行很快(非常快)。
- 成本——MySQL是开放源代码的,一般可以免费使用(甚至可免费修改)。
- 缺点:它并不总是支持其他DBMS提供的功能和特性。
- 优点:
- DBMS可分为两类:
- 基于共享文件系统的DBMS
- Microsoft Access和FileMaker
- 用于桌面用途
- 基于客户机—服务器的DBMS
- MySQL、 Oracle以及Microsoft SQL Server
- 应用分为两个不同的部分:
- 服务器:负责所有数据访问和处理的一个软件。这个软件运行在称为数据库服务器的计算机上。
- 与数据文件打交道。关于数据、数据添加、删除和数据更新的所有请求都由服务器软件完成。
- 客户机:与用户打交道的软件。
- 服务器:负责所有数据访问和处理的一个软件。这个软件运行在称为数据库服务器的计算机上。
- 客户机和服务器软件可能安装在两台计算机或一台计算机上。不管它们在不在相同的计算机上,为进行所有数据库交互,客户机软件都要与服务器软件进行通信。
- 基于共享文件系统的DBMS
- 为了使用MySQL,需要访问运行MySQL服务器软件的计算机和发布命令到MySQL的客户机软件的计算机。
- 服务器软件为MySQL DBMS。你可以在本地安装的副本上运行,也可以连接到运行在你具有访问权的远程服务器上的一个副本。
- 客户机可以是MySQL提供的工具、脚本语言(如Perl)、 Web应用开发语言(如ASP、 ColdFusion、 JSP和PHP)、程序设计语言(如C、 C++、 Java)等。
- 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命令行实用程序;
- MySQL Administrator(MySQL管理器)是一个图形交互客户机,用来简化MySQL服务器的管理。
- MySQL Administrator提示输入服务器和登录信息(并且允许你保存服务器定义供以后选择),然后显示允许选择不同视图的图标。
- Server Information(服务器信息)显示客户机和被连接的服务器的状态和版本信息;
- Service Control(服务控制)允许停止和启动MySQL以及指定服务器特性;
- User Administration(用户管理)用来定义MySQL用户、登录和权限;
- Catalogs(目录)列出可用的数据库并允许创建数据库和表。
- 可以使用Create New Schema选项,创建一个数据源。书中各个例子使用一个名为crashcourse的数据源。
- 快速访问其他工具
- MySQL Query Browser也包含启动mysql命令行实用程序和
- MySQL Administrator的菜单选项。
- MySQL Query Browser为一个图形交互客户机,用来编写和执行MySQL命令。
- MySQL Query Browser要求输入服务器和登录信息(在MySQL QueryBrowser和MySQL Administrator之间共享保存的定义),然后显示应用界面。
- 注意下面几点:
- 输入MySQL命令到屏幕顶上的窗口中。在输入语句后,单击Execute按钮把它提交给MySQL处理。
- 结果(如果有)显示在屏幕左边的大区域网格中。
- 多条语句和结果显示在它们自己的标签中,并且允许快速切换。
- 屏幕右边是一个标签,它列出所有可能的数据源(这里称为大纲),展开任一数据源查看它的表,展开任一个表查看它的列。
- 还可以选择表和列让MySQL Query Browser为你编写MySQL语句。
- Schemata(大纲)标签的右边是一个History(历史)标签,它保持MySQL语句的执行历史。在需要测试不同版本的MySQL语句时,它非常有用。
- 关于MySQL语法、函数等的帮助可在屏幕右下角得到。
- 要求在能执行命令之前登录到DBMS。
- MySQL在内部保存自己的用户列表,并且把每个用户与各种权限关联起来。
- MySQL Administrator Users视图提供了一个简单的界面,可用来定义新用户,包括赋予口令和访问权限。
- 为了连接到MySQL,需要以下信息:
- 主机名(计算机名)——如果连接到本地MySQL服务器, 为localhost;
- 端口(如果使用默认端口3306之外的端口);
- 一个合法的用户名;
- 用户口令(如果需要)。
- 所有这些信息都可以传递给mysql命令行实用程序,或输入到MySQL Administrator和MySQL Query Browser的服务器连接屏幕。
- 执行任意数据库操作前,需要选择一个数据库。为此,可使用USE关键字。
- 关键字(key word) :作为MySQL语言组成部分的一个保留字。决不要用关键字命名一个表或列。
- 为了使用crashcourse数据库,应该,用USE关键字:
- 输入:USE crashcourse
- 输出:Database changed
- USE语句并不返回任何结果。依赖于使用的客户机,显示某种形式的通知。例如,这里显示出的Database changed消息是mysql命令行实用程序在数据库选择成功后显示的。
- 了解可以使用的数据库名,用SHOW关键字:
- 输入:SHOW DATABASES;
- 输出:
- SHOW DATABASES;返回可用数据库的一个列表。包含在这个列表中的可能是MySQL内部使用的数据库(如,mysql和
information_schema)
- 获得一个数据库内的表的列表:
- 输入:SHOW TABLES;
- 输出:
- SHOW TABLES;返回当前选择的数据库内可用表的列表
- SHOW也可以用来显示表列:
- 输入:SHOW COLUMNS FROM customers
- 输出:
- SHOW COLUMNS 要 求 给 出 一 个 表 名 ( 这 个 例 子 中 的 FROM customers),它对每个字段返回一行,行中包含字段名、数据类型、是否允许NULL、键信息、默认值以及其他信息(如字段cust_id的auto_increment)。
- 为了使用crashcourse数据库,应该,用USE关键字:
- 自动增量:唯一值。MySQL可以自动地为每个行分配下一个可用编号,如果需要它,则必须在用CREATE语句创建表时把它作为表定义的组成部分。
- DESCRIBE语句: MySQL支持用DESCRIBE作为SHOW COLUMNS FROM的一种快捷方式。DESCRIBE customers;是 SHOW COLUMNS FROM customers;的一种快捷方式。
- 其他SHOW语句还有:
- SHOW STATUS,用于显示广泛的服务器状态信息;
- SHOW CREATE DATABASE和SHOW CREATE TABLE,分别用来显示创建特定数据库或表的MySQL语句;
- SHOW GRANTS,用来显示授予用户(所有用户或特定用户)的安全权限;
- SHOW ERRORS和SHOW WARNINGS, 用来显示服务器错误或警告消息。