MySQL 基础与安装

  • 数据库基础概念
  • 什么是 MySQL
  • 客户机-服务器架构
  • 安装与连接
  • mysql 命令行工具
  • 帮助的使用

数据库基础概念

数据库是一个以某种有组织的方式存储的数据集合。理解数据库最简单的办法是将其想象为一个文件柜——文件柜是存放数据的物理位置,不管数据是什么以及如何组织的。

  • 数据库(database):保存有组织的数据的容器(通常是一个文件或一组文件)。
  • 表(table):某种特定类型数据的结构化清单。一个数据库中可以有多张表,每张表有一个唯一的名字。
  • 列(column):表中的一个字段。所有表都是由一个或多个列组成的。
  • 数据类型(datatype):所容许的数据的类型,限制列中可以存储的数据种类。
  • 行(row):表中的一个记录。
  • 主键(primary key):一列(或一组列),其值能够唯一区分表中每个行。
  • 外键(foreign key):某个表中的一列,它包含另一个表的主键值,定义了两个表之间的关系。
  • 模式(schema):关于数据库和表的布局及特性的信息。

主键的规则

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

主键的好习惯:不更新主键列中的值、不重用主键列的值、不在主键列中使用可能会更改的值。

什么是 SQL

SQL(结构化查询语言,Structured Query Language)是一种专门用来与数据库通信的语言。SQL 有如下优点:

  • 不是某个特定数据库供应商专有的语言,几乎所有重要的 DBMS 都支持 SQL
  • 简单易学,语句全都是由描述性很强的英语单词组成
  • 看上去很简单,但实际是一种强有力的语言,可以进行非常复杂和高级的数据库操作

什么是 MySQL

数据的所有存储、检索、管理和处理实际上是由数据库软件——DBMS(数据库管理系统)完成的。MySQL 是一种 DBMS,即它是一种数据库软件。

为什么有那么多的公司和开发人员使用 MySQL:

  • 成本——MySQL 是开放源代码的,一般可以免费使用
  • 性能——MySQL 执行很快
  • 可信赖——许多重要公司和站点使用 MySQL 处理重要数据
  • 简单——MySQL 很容易安装和使用

客户机-服务器架构

MySQL 是基于客户机-服务器的 DBMS。客户机-服务器应用分为两个不同的部分:

  • 服务器部分:负责所有数据访问和处理的一个软件,运行在数据库服务器上。与数据文件打交道的只有服务器软件,关于数据添加、删除和更新的所有请求都由服务器软件完成。
  • 客户机:与用户打交道的软件。客户机通过网络提交请求给服务器,服务器处理后将结果送回。

客户机和服务器软件可能安装在两台计算机或一台计算机上。客户机可以是 MySQL 提供的命令行工具、脚本语言(如 PHP)、程序设计语言等。

安装与连接

MySQL 支持多种安装方式:

  • RPM 包安装(Linux):rpm -ivh MySQL-server-xxx.rpm
  • 二进制包安装:解压后配置路径即可使用
  • 源码编译安装:可自定义编译选项,去掉不需要的模块以提升性能

安装后通过 mysql 命令连接数据库:

# 基本连接
mysql -u root -p

# 指定主机和端口
mysql -u ben -p -h myserver -P 3306

# 完整命令行选项
mysql --help

连接时需要提供用户名、密码、主机名和端口。MySQL 在内部保存自己的用户列表,并把每个用户与各种权限关联起来。

mysql 命令行工具

每个 MySQL 安装都有一个名为 mysql 的简单命令行实用程序。使用时注意:

  • 命令输入在 mysql> 之后
  • 命令用 ;\g 结束,仅按 Enter 不执行命令
  • 输入 help\h 获得帮助,也可以输入特定命令获得帮助(如 help select
  • 输入 quitexit 退出
-- 选择数据库
USE crashcourse;

-- 查看所有数据库
SHOW DATABASES;

-- 查看当前数据库中的表
SHOW TABLES;

-- 查看表结构
SHOW COLUMNS FROM customers;
DESCRIBE customers;

-- 查看建表语句
SHOW CREATE TABLE customers;

帮助的使用

在不同 MySQL 版本中,很多特性和语法可能不一样,学会使用 MySQL 帮助很有必要。

按层次查看帮助

-- 查看帮助的分类目录
mysql> ? contents
-- 列出 Account Management、Administration、Data Definition、Data Manipulation、Data Types 等分类

-- 查看某个分类的详细内容
mysql> ? data types
-- 列出 BIGINT、BLOB、INT 等数据类型

-- 查看某个具体主题
mysql> ? int
-- 显示 INT 类型的详细说明和语法

快速查阅帮助

-- 查看 show 命令的用法
mysql> ? show

-- 查看 create table 的语法
mysql> ? create table

SQL 语句不区分大小写,SELECTselect 是相同的。但许多开发人员习惯对 SQL 关键字使用大写,对列和表名使用小写。处理 SQL 语句时所有空格都被忽略,语句可以在一行或多行上给出。