1. MySQL 概述
MySQL 是一种流行的开源关系型数据库管理系统 (DBMS),广泛应用于互联网公司和企业开发中。它支持 SQL 语句操作数据,并提供多种版本供选择。
1.1 MySQL 安装和连接
- 社区版:免费版本,适合开发者使用。
- 商业版:付费版本,提供官方技术支持。
连接 MySQL 数据库的常用命令:
mysql -u用户名 -p密码 [-h数据库服务器IP -P端口号]
不指定 -h
和 -P
时,默认连接本地 127.0.0.1,端口为 3306。
1.2 关系型数据库和数据模型
MySQL 属于关系型数据库 (RDBMS),基于二维表存储数据。每张表由行和列组成,表与表之间存在关系。
2. SQL 简介
SQL(Structured Query Language,结构化查询语言)是用于操作关系型数据库的编程语言。MySQL 支持的 SQL 主要分为以下几类:
- DDL(数据定义语言):用于定义数据库和表的结构。
- DML(数据操作语言):用于操作数据库表中的数据,如增删改。
- DQL(数据查询语言):用于查询表中的数据。
- DCL(数据控制语言):用于管理数据库用户和权限。
3. 数据库设计 - DDL
3.1 项目开发流程
在企业开发中,通常会经历以下阶段:
- 需求分析:理解产品原型和需求文档。
- 数据库设计:根据需求设计表结构和字段约束。
- 开发与测试:编写 SQL 操作数据。
- 数据库优化:通过索引、分库分表等方式提升性能。
3.2 数据库操作
3.2.1 查询数据库
SHOW DATABASES;
SELECT DATABASE();
3.2.2 创建数据库
CREATE DATABASE [IF NOT EXISTS] 数据库名;
3.2.3 切换数据库
USE 数据库名;
3.2.4 删除数据库
DROP DATABASE [IF EXISTS] 数据库名;
4. 表操作
4.1 创建表
4.1.1 表的创建语法
CREATE TABLE 表名 (
字段1 字段类型 [约束] [COMMENT 字段注释],
字段2 字段类型 [约束] [COMMENT 字段注释],
...
) [COMMENT 表注释];
4.1.2 示例
CREATE TABLE tb_user (
id INT PRIMARY KEY AUTO_INCREMENT COMMENT 'ID,唯一标识',
username VARCHAR(20) NOT NULL UNIQUE COMMENT '用户名',
name VARCHAR(10) NOT NULL COMMENT '姓名',
age INT COMMENT '年龄',
gender CHAR(1) DEFAULT '男' COMMENT '性别'
) COMMENT '用户表';
4.2 约束
约束是用于限制表中数据的规则,常见的约束有:
- 非空约束:
NOT NULL
,字段值不能为NULL
。 - 唯一约束:
UNIQUE
,字段值必须唯一。 - 主键约束:
PRIMARY KEY
,标识每行数据的唯一性,通常与自增AUTO_INCREMENT
配合使用。 - 默认约束:
DEFAULT
,字段的默认值。 - 外键约束:
FOREIGN KEY
,用于建立表与表之间的关联。
4.3 数据类型
MySQL 数据类型包括:
- 数值类型:如
INT
、BIGINT
、FLOAT
、DOUBLE
、DECIMAL
等。 - 字符串类型:如
VARCHAR
、CHAR
、TEXT
、BLOB
等。 - 日期时间类型:如
DATE
、DATETIME
、TIMESTAMP
等。
4.4 查询和修改表
4.4.1 查看表结构
DESC 表名;
SHOW CREATE TABLE 表名;
4.4.2 修改表结构
(1)添加字段
ALTER TABLE 表名 ADD 字段名 类型 [COMMENT 字段注释];
(2)修改字段
ALTER TABLE 表名 MODIFY 字段名 类型 [COMMENT 字段注释];
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型 [COMMENT 字段注释];
(3)删除字段
ALTER TABLE 表名 DROP 字段名;
4.4.3 删除表
DROP TABLE [IF EXISTS] 表名;
5. 数据操作 - DML
5.1 插入数据
插入单条或多条数据:
INSERT INTO 表名 (字段1, 字段2) VALUES (值1, 值2);
INSERT INTO 表名 (字段1, 字段2) VALUES (值1, 值2), (值3, 值4);
5.2 更新数据
DELETE FROM 表名 WHERE 条件;
DELETE FROM 表名; -- 删除所有数据
修改指定条件的数据:
UPDATE 表名 SET 字段1 = 值1, 字段2 = 值2 WHERE 条件;
5.3 删除数据
删除表中数据:
DELETE FROM 表名 WHERE 条件;
DELETE FROM 表名; -- 删除所有数据
6. 图形化数据库管理工具
为了方便数据库管理,可以使用图形化工具操作 MySQL。常用工具有 DataGrip 和 IntelliJ IDEA 自带的 Database 插件,通过这些工具可以方便地连接、管理和操作数据库。