数据库相关知识
字数 1921 2025-08-12 12:08:15

数据库基础知识全面教程

一、数据库基本概念

1.1 数据库(DB)

数据库(DataBase)是存储数据的仓库,数据是有组织地进行存储的集合。它能够有效地管理大量数据,并提供高效的检索机制。

1.2 数据库管理系统(DBMS)

数据库管理系统(DataBase Management System)是管理数据库的大型软件,提供创建、使用和维护数据库的功能。

1.3 SQL语言

SQL(Structured Query Language)是结构化查询语言,用于操作关系型数据库的编程语言。它定义了操作所有关系型数据库的统一标准。

特点

  • 每种数据库可能有自己的"方言"(特定实现细节)
  • 不区分大小写(但关键字通常建议大写)
  • 可以单行或多行书写,以分号结尾

二、常见关系型数据库

  1. Oracle:收费的大型数据库,Oracle公司产品
  2. MySQL:开源免费的中小型数据库(现属于Oracle)
  3. SQL Server:Microsoft中型收费数据库,常用于C#/.NET
  4. PostgreSQL:开源免费中小型数据库
  5. DB2:IBM大型收费数据库
  6. SQLite:嵌入式微型数据库(如Android内置)
  7. MariaDB:开源免费中小型数据库(MySQL分支)

三、关系型数据库模型

关系型数据库建立在关系模型基础上,由多张能互相连接的二维表组成。

优点

  • 表结构一致,易于维护
  • 使用通用SQL语言,方便复杂查询
  • 数据存储在磁盘中,安全性高

四、SQL分类

4.1 DDL(数据定义语言)

定义数据库对象:数据库、表、列等

4.2 DML(数据操作语言)

对表中数据进行增删改操作

4.3 DQL(数据查询语言)

查询表中记录

4.4 DCL(数据控制语言)

定义访问权限和安全级别,创建用户

五、DDL操作详解

5.1 数据库操作

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

-- 创建数据库
CREATE DATABASE 数据库名称;
CREATE DATABASE IF NOT EXISTS 数据库名称; -- 不存在则创建

-- 删除数据库
DROP DATABASE 数据库名称;
DROP DATABASE IF EXISTS 数据库名称; -- 存在则删除

-- 使用数据库
SELECT DATABASE(); -- 查询当前使用的数据库
USE 数据库名称; -- 使用指定数据库

5.2 表操作

-- 查询表
SHOW TABLES; -- 查询当前数据库所有表
DESC 表名称; -- 查询表结构

-- 创建表
CREATE TABLE 表名(
    字段名1 数据类型1,
    字段名2 数据类型2,
    ...
    字段名n 数据类型n
); -- 注意最后一行不加逗号

-- 删除表
DROP TABLE 表名;
DROP TABLE IF EXISTS 表名; -- 存在则删除

-- 修改表
ALTER TABLE 表名 RENAME TO 新表名; -- 修改表名
ALTER TABLE 表名 ADD 列名 数据类型; -- 添加列
ALTER TABLE 表名 MODIFY 列名 新数据类型; -- 修改数据类型
ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型; -- 修改列名和类型
ALTER TABLE 表名 DROP 列名; -- 删除列

5.3 数据类型

  1. 数值类型

    • INT:整数
    • DOUBLE(总长度,小数位数):浮点数
  2. 字符串类型

    • CHAR(0-255):定长字符串,性能高但浪费空间
    • VARCHAR(0-65535):变长字符串,性能低但节约空间
  3. 日期类型

    • DATE:日期
    • TIME:时间
    • DATETIME:日期时间
    • TIMESTAMP:时间戳

六、DML操作详解

6.1 添加数据

-- 给指定列添加数据
INSERT INTO 表名(列名1,列名2,...) VALUES(1,2,...);

-- 给全部列添加数据(不推荐)
INSERT INTO 表名 VALUES(1,2,...);

-- 批量添加
INSERT INTO 表名(列名1,列名2,...) 
VALUES(1,2,...),(1,2,...),(1,2,...);

INSERT INTO 表名 VALUES
(1,2,...),(1,2,...),(1,2,...);

6.2 修改数据

UPDATE 表名 SET 列名1=1,列名2=2,... [WHERE 条件];
-- 注意:不加WHERE条件会修改所有数据!

6.3 删除数据

DELETE FROM 表名 [WHERE 条件];
-- 注意:不加WHERE条件会删除所有数据!

七、DQL查询详解

7.1 基础查询

-- 查询多个字段
SELECT 字段列表 FROM 表名;

-- 查询所有数据
SELECT * FROM 表名;

-- 去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;

-- 别名设置
SELECT 原始字段名 AS 别名 FROM 表名; -- AS可省略

7.2 条件查询

SELECT 字段列表 FROM 表名 WHERE 条件列表;

条件运算符

运算符 说明
> 大于
< 小于
>= 大于等于
<= 小于等于
= 等于
<>或!= 不等于
BETWEEN...AND... 在范围内(包含)
IN(...) 多选一
LIKE 模糊查询
IS NULL 是NULL
IS NOT NULL 不是NULL
AND或&& 并且
OR或|| 或者
NOT或!

LIKE模糊查询

  • _:匹配单个任意字符
  • %:匹配多个任意字符

7.3 排序查询

SELECT 字段列表 FROM 表名 
ORDER BY 排序字段名1 [ASC|DESC], 排序字段2 [ASC|DESC], ...;

说明

  • ASC:升序(默认)
  • DESC:降序
  • 多字段排序时,前字段值相同时才按后字段排序

7.4 聚合函数

将一列数据作为整体进行纵向计算。

常用函数

  • COUNT(列名):统计数量(推荐用非NULL列)
  • MAX(列名):最大值
  • MIN(列名):最小值
  • SUM(列名):求和
  • AVG(列名):平均值

语法

SELECT 聚合函数名(列名) FROM ;

注意:NULL值不参与聚合函数计算

7.5 分组查询

SELECT 字段列表 FROM 表名 
[WHERE 分组前条件] 
GROUP BY 分组字段名 
[HAVING 分组后条件];

注意事项

  1. 分组后通常查询聚合函数和分组字段
  2. WHERE和HAVING区别:
    • WHERE在分组前过滤,不满足条件不参与分组
    • HAVING在分组后过滤
    • WHERE不能使用聚合函数,HAVING可以
  3. 执行顺序:WHERE > 聚合函数 > HAVING

7.6 分页查询

SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询条目数;

说明

  • 起始索引从0开始
  • LIMIT是MySQL方言,其他数据库不同:
    • Oracle:ROWNUMBER
    • SQL Server:TOP

八、SQL注释

-- 单行注释(标准SQL)
# 单行注释(MySQL特有)
/* 
多行注释 
*/

九、最佳实践建议

  1. 创建表时最后一行不要加逗号
  2. 修改和删除数据时务必添加WHERE条件
  3. 分组查询后只查询聚合函数和分组字段
  4. 使用COUNT()时选择非NULL列
  5. 表名和字段名使用反引号``包裹可避免关键字冲突
  6. 批量操作数据时使用事务保证数据一致性

通过掌握以上知识,您已经具备了关系型数据库的基础操作能力,可以开始进行实际的数据库开发工作。

数据库基础知识全面教程 一、数据库基本概念 1.1 数据库(DB) 数据库(DataBase)是存储数据的仓库,数据是有组织地进行存储的集合。它能够有效地管理大量数据,并提供高效的检索机制。 1.2 数据库管理系统(DBMS) 数据库管理系统(DataBase Management System)是管理数据库的大型软件,提供创建、使用和维护数据库的功能。 1.3 SQL语言 SQL(Structured Query Language)是结构化查询语言,用于操作关系型数据库的编程语言。它定义了操作所有关系型数据库的统一标准。 特点 : 每种数据库可能有自己的"方言"(特定实现细节) 不区分大小写(但关键字通常建议大写) 可以单行或多行书写,以分号结尾 二、常见关系型数据库 Oracle :收费的大型数据库,Oracle公司产品 MySQL :开源免费的中小型数据库(现属于Oracle) SQL Server :Microsoft中型收费数据库,常用于C#/.NET PostgreSQL :开源免费中小型数据库 DB2 :IBM大型收费数据库 SQLite :嵌入式微型数据库(如Android内置) MariaDB :开源免费中小型数据库(MySQL分支) 三、关系型数据库模型 关系型数据库建立在关系模型基础上,由多张能互相连接的二维表组成。 优点 : 表结构一致,易于维护 使用通用SQL语言,方便复杂查询 数据存储在磁盘中,安全性高 四、SQL分类 4.1 DDL(数据定义语言) 定义数据库对象:数据库、表、列等 4.2 DML(数据操作语言) 对表中数据进行增删改操作 4.3 DQL(数据查询语言) 查询表中记录 4.4 DCL(数据控制语言) 定义访问权限和安全级别,创建用户 五、DDL操作详解 5.1 数据库操作 5.2 表操作 5.3 数据类型 数值类型 : INT:整数 DOUBLE(总长度,小数位数):浮点数 字符串类型 : CHAR(0-255):定长字符串,性能高但浪费空间 VARCHAR(0-65535):变长字符串,性能低但节约空间 日期类型 : DATE:日期 TIME:时间 DATETIME:日期时间 TIMESTAMP:时间戳 六、DML操作详解 6.1 添加数据 6.2 修改数据 6.3 删除数据 七、DQL查询详解 7.1 基础查询 7.2 条件查询 条件运算符 : | 运算符 | 说明 | |--------|------| | > | 大于 | | < | 小于 | | >= | 大于等于 | | <= | 小于等于 | | = | 等于 | | <>或 != | 不等于 | | BETWEEN...AND... | 在范围内(包含) | | IN(...) | 多选一 | | LIKE | 模糊查询 | | IS NULL | 是NULL | | IS NOT NULL | 不是NULL | | AND或&& | 并且 | | OR或\|\| | 或者 | | NOT或 ! | 非 | LIKE模糊查询 : _ :匹配单个任意字符 % :匹配多个任意字符 7.3 排序查询 说明 : ASC:升序(默认) DESC:降序 多字段排序时,前字段值相同时才按后字段排序 7.4 聚合函数 将一列数据作为整体进行纵向计算。 常用函数 : COUNT(列名):统计数量(推荐用非NULL列) MAX(列名):最大值 MIN(列名):最小值 SUM(列名):求和 AVG(列名):平均值 语法 : 注意 :NULL值不参与聚合函数计算 7.5 分组查询 注意事项 : 分组后通常查询聚合函数和分组字段 WHERE和HAVING区别: WHERE在分组前过滤,不满足条件不参与分组 HAVING在分组后过滤 WHERE不能使用聚合函数,HAVING可以 执行顺序:WHERE > 聚合函数 > HAVING 7.6 分页查询 说明 : 起始索引从0开始 LIMIT是MySQL方言,其他数据库不同: Oracle:ROWNUMBER SQL Server:TOP 八、SQL注释 九、最佳实践建议 创建表时最后一行不要加逗号 修改和删除数据时务必添加WHERE条件 分组查询后只查询聚合函数和分组字段 使用COUNT()时选择非NULL列 表名和字段名使用反引号 `` 包裹可避免关键字冲突 批量操作数据时使用事务保证数据一致性 通过掌握以上知识,您已经具备了关系型数据库的基础操作能力,可以开始进行实际的数据库开发工作。