数据库、DBMS、MySQL、SQL
- 数据库基础
- 数据库、DBMS、MySQL
- 表
- 列和数据类型
- 行
- 主键
- 什么是 SQL
数据库基础
数据库、DBMS、MySQL
数据库(database):保存有组织的数据的容器,通常是一个文件或一组文件。
DBMS(DataBase Management System):数据库管理系统,管理数据库的程序。
MySQL:一种数据库管理系统。其他常见的数据库管理系统:Oracle 、DB2、SQLServer、SyBase、SQLite。
表
数据库当中最基本的单元是表。表是一种结构化的文件,可用来存储某种特定类型的数据,比如保存顾客清单、产品目录,或者其他信息清单。
表(table):某种特定类型数据的结构化清单。
表名:数据库中的每个表都有一个名字(表名),用来标识自己。此名字是唯一的,数据库中不能有表名相同的表。
表具有一些特性,这些特性定义了数据在表中如何存储,如可以存储什么样的数据、数据如何分解、各部分信息如何命名等。描述表的这组信息就是所谓的模式。
模式(schema):关于数据库和表的布局及特性的信息。
列和数据类型
表由列组成。列中存储着表中某部分的信息。
列(column):表中的一个字段。所有表都是由一个或多个列组成的。
可将数据库表想象为一个网格。网格中每一列存储着一条特定的信息。例如,在顾客表中,一个列存储着顾客编号,另一个列存储着顾客名。
分解数据:正确地将数据分解为多个列极为重要。例如,城市、州、邮政编码应该总是独立的列。通过把它分解开,才有可能利用特定的列对数据进行排序和过滤(如,找出特定州或特定城市的所有顾客)。
数据库中每个列都有相应的数据类型。数据类型定义列可以存储的数据种类。例如,如果列中存储的为数字,则相应的数据类型应该为数值类型。
数据类型(datatype):所容许存储的数据的类型。每个表列都有相应的数据类型,它限制(或容许)该列中存储的数据。
行
表中的数据是按行存储的,所保存的每个记录存储在自己的行内。如果将表想象为网格,那么网格中垂直的列为表列,水平行为表行。
例如,顾客表可以每行存储一个顾客的信息。表中的行数为记录的总数。
行(row):表中的一个记录。
是记录还是行? 在很大程度上,行(row)和记录(record)是可以互相替代的,但从技术上说,行才是正确的术语。
主键
表中每一行都应该有可以唯一标识自己的一列(或一组列)。一个顾客表可以使用顾客编号列,而订单表可以使用订单 ID。
主键(primary key):唯一标识表中每行的这个列(或这组列)称为主键。
应该总是定义主键。虽然并不总是都需要主键,但大多数数据库设计人员都应保证他们创建的每个表具有一个主键,以便于以后的数据操纵和管理。
主键值规则:MySQL 规定,表中的任何列都可以作为主键,只要它满足以下条件:
? 任意两行都不具有相同的主键值;
? 每个行都必须具有一个主键值(主键列不允许为 NULL 值)。
什么是 SQL
SQL(发音为字母 S-Q-L 或 sequel /?si?kw?l/)是结构化查询语言(Structured Query Language)的缩写。SQL 是一种专门用来与数据库通信的语言。
几乎所有重要的 DBMS 都支持 SQL,DBMS 通过执行 SQL 来操作数据库。
DBMS 专用的 SQL:事实上任意两个 DBMS 实现的 SQL 都不完全相同。虽然 MySQL 中的多数 SQL 语法也适用于其他 DBMS,但不要认为这些 SQL 语法是完全可移植的。
总结自《MySQL 必知必会》
参考:数据库(数据库、表及表数据、SQL 语句)、MySQL 总结