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) - 输入
quit或exit退出
-- 选择数据库
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 语句不区分大小写,SELECT 与 select 是相同的。但许多开发人员习惯对 SQL 关键字使用大写,对列和表名使用小写。处理 SQL 语句时所有空格都被忽略,语句可以在一行或多行上给出。