数据库基础概述
一、数据库基础概述
1. 什么是数据库?
数据库(Database, DB)是长期存储在计算机内、有组织、可共享的大量数据集合,由数据库管理系统(DBMS)统一管理,确保数据的安全性、完整性和高效访问。
2. 数据库核心特点
持久化存储:数据存储在磁盘中,断电不丢失。
数据结构化:按表、行、列的形式组织,便于管理和查询。
数据共享性:支持多用户同时访问,减少数据冗余。
数据独立性:数据与应用程序分离,修改数据结构不影响上层应用。
3. 数据库分类
| 类型 | 特点 | 常见产品 |
|---|---|---|
| 关系型数据库 | 以表格形式存储数据,表与表之间通过外键关联,支持 SQL 查询 | MySQL、Oracle、SQL Server、PostgreSQL |
| 非关系型数据库(NoSQL) | 以键值对、文档、列族等形式存储数据,结构灵活,扩展性强 | Redis、MongoDB、Elasticsearch |
4. 数据库系统结构
一个数据库系统包含以下层级:
数据库服务器 → 数据库(Database) → 表(Table) → 行(记录)和列(字段)
一个服务器可包含多个数据库。
一个数据库可包含多个表。
一个表由多行(记录)和多列(字段)组成。
二、MySQL 安装与基础操作
1. MySQL 安装与卸载(Windows)
安装步骤
下载 MySQL 安装包(推荐 5.7/8.0 稳定版)。
解压到指定目录(如
D:\mysql-8.0)。配置环境变量:将
bin目录路径添加到系统Path中。初始化数据库:
mysqld --initialize --console(记录初始密码)。安装服务:
mysqld --install。启动服务:
net start mysql。
卸载步骤
停止服务:
net stop mysql。卸载服务:
mysqld --remove。删除安装目录和环境变量。
删除注册表相关项(可选,清理残留配置)。
2. 数据库连接与测试
命令行连接
# 格式:mysql -u 用户名 -p 密码 -h 主机地址 -P 端口号 mysql -u root -p123456 -h localhost -P 3306
图形化工具(SQLyog)
新建连接,填写主机地址、端口、用户名、密码。
测试连接,成功后即可可视化管理数据库。
三、SQL 语言基础
SQL(Structured Query Language,结构化查询语言)是关系型数据库的标准操作语言,分为以下几类:
| 分类 | 全称 | 作用 | 常用语句 |
|---|---|---|---|
| DDL | Data Definition Language | 数据定义语言,用于定义数据库对象 | CREATE、ALTER、DROP |
| DML | Data Manipulation Language | 数据操作语言,用于增删改查数据 | INSERT、UPDATE、DELETE、SELECT |
| DQL | Data Query Language | 数据查询语言,用于查询数据 | SELECT(通常归为 DML) |
| DCL | Data Control Language | 数据控制语言,用于权限管理 | GRANT、REVOKE |
SQL 通用语法规范
不区分大小写,关键字建议大写(如
CREATE、SELECT)。语句以分号
;结尾,可单行或多行书写。支持注释:
单行注释:
-- 注释内容或# 注释内容多行注释:
/* 注释内容 */
MySQL 常用数据类型
| 类型 | 说明 | 示例 |
|---|---|---|
INT | 整数类型 | INT(11)(默认)、TINYINT、BIGINT |
VARCHAR | 可变长度字符串 | VARCHAR(20)(最大长度 20) |
CHAR | 固定长度字符串 | CHAR(10)(不足长度用空格填充) |
DATE | 日期类型 | '2024-05-20' |
DATETIME | 日期时间类型 | '2024-05-20 12:30:00' |
FLOAT/DOUBLE | 浮点类型 | FLOAT(5,2)(总长度 5,小数位 2) |
四、DDL 数据定义语言
DDL 用于定义和管理数据库、表结构,核心操作包括数据库操作和表操作。
1. 数据库操作
(1)查看所有数据库
SHOW DATABASES;
(2)创建数据库
-- 基本语法 CREATE DATABASE 数据库名; -- 若数据库不存在则创建(推荐,避免报错) CREATE DATABASE IF NOT EXISTS 数据库名; -- 示例:创建名为test_db的数据库 CREATE DATABASE IF NOT EXISTS test_db;
(3)删除数据库
-- 基本语法 DROP DATABASE 数据库名; -- 若数据库存在则删除(推荐) DROP DATABASE IF EXISTS 数据库名; -- 示例:删除test_db数据库 DROP DATABASE IF EXISTS test_db;
(4)切换 / 使用数据库
USE 数据库名; -- 示例:使用test_db数据库 USE test_db;
(5)查看当前使用的数据库
SELECT DATABASE();
2. 表操作
(1)查看当前数据库中的所有表
SHOW TABLES;
(2)创建表
-- 基本语法 CREATE TABLE IF NOT EXISTS 表名 ( 列名1 数据类型 [约束条件], 列名2 数据类型 [约束条件], ... 列名n 数据类型 [约束条件] ); -- 示例:创建学生表student CREATE TABLE IF NOT EXISTS student ( sid INT PRIMARY KEY AUTO_INCREMENT, -- 学号,主键,自增 sname VARCHAR(20) NOT NULL, -- 姓名,非空 age INT, -- 年龄 gender CHAR(1) DEFAULT '男', -- 性别,默认男 email VARCHAR(30) UNIQUE -- 邮箱,唯一 );
(3)查看表结构
-- 方式1:查看表字段信息 DESC 表名; -- 方式2:查看创建表的SQL语句 SHOW CREATE TABLE 表名; -- 示例:查看student表结构 DESC student;
(4)删除表
-- 基本语法 DROP TABLE 表名; -- 若表存在则删除(推荐) DROP TABLE IF EXISTS 表名; -- 示例:删除student表 DROP TABLE IF EXISTS student;
(5)修改表结构(ALTER TABLE)
添加列:
ALTER TABLE 表名 ADD 列名 数据类型 [约束条件]; -- 示例:给student表添加address列 ALTER TABLE student ADD address VARCHAR(50);
修改列数据类型 / 长度:
ALTER TABLE 表名 MODIFY 列名 新数据类型 [约束条件]; -- 示例:将sname列长度修改为30 ALTER TABLE student MODIFY sname VARCHAR(30) NOT NULL;
修改列名:
ALTER TABLE 表名 CHANGE 旧列名 新列名 新数据类型 [约束条件]; -- 示例:将gender列名修改为sex ALTER TABLE student CHANGE gender sex CHAR(1) DEFAULT '男';
删除列:
ALTER TABLE 表名 DROP 列名; -- 示例:删除address列 ALTER TABLE student DROP address;
修改表名:
RENAME TABLE 旧表名 TO 新表名; -- 示例:将student表重命名为stu RENAME TABLE student TO stu;
五、DML 数据操作语言
DML 用于对表中的数据进行增、删、改操作,是日常开发中最常用的 SQL 操作。
1. 插入数据(INSERT)
(1)插入单条数据(指定列)
INSERT INTO 表名 (列名1, 列名2, ...) VALUES (值1, 值2, ...); -- 示例:向student表插入一条数据 INSERT INTO student (sname, age, sex, email) VALUES ('张三', 20, '男', 'zhangsan@example.com');(2)插入单条数据(全列插入)
INSERT INTO 表名 VALUES (值1, 值2, ...); -- 必须按表中列的顺序填写所有值 -- 示例:全列插入(sid为自增列,可写NULL或DEFAULT) INSERT INTO student VALUES (NULL, '李四', 21, '女', 'lisi@example.com');
(3)批量插入数据
INSERT INTO 表名 (列名1, 列名2, ...) VALUES (值1, 值2, ...), (值1, 值2, ...), (值1, 值2, ...); -- 示例:批量插入3条数据 INSERT INTO student (sname, age, sex, email) VALUES ('王五', 22, '男', 'wangwu@example.com'), ('赵六', 20, '女', 'zhaoliu@example.com'), ('孙七', 23, '男', 'sunqi@example.com');2. 修改数据(UPDATE)
基本语法
UPDATE 表名 SET 列名1 = 新值1, 列名2 = 新值2, ... WHERE 条件; -- 条件可选,不写条件会修改所有行(慎用!)
示例
-- 修改单个数据:将学号为1的学生年龄改为21 UPDATE student SET age = 21 WHERE sid = 1; -- 修改多个数据:将所有男生的年龄加1 UPDATE student SET age = age + 1 WHERE sex = '男'; -- 修改所有数据(慎用!):将所有学生的性别改为男 UPDATE student SET sex = '男';
3. 删除数据(DELETE&TRUNCATE)
(1)DELETE删除数据
-- 基本语法 DELETE FROM 表名 WHERE 条件; -- 条件可选,不写条件会删除所有行(慎用!) -- 示例:删除学号为1的学生数据 DELETE FROM student WHERE sid = 1; -- 删除所有数据(保留表结构,可回滚) DELETE FROM student;
(2)TRUNCATE清空表
TRUNCATE TABLE 表名; -- 清空表中所有数据,重置自增主键,不可回滚 -- 示例:清空student表 TRUNCATE TABLE student;
DELETEvsTRUNCATE区别
| 特性 | DELETE | TRUNCATE |
|---|---|---|
| 作用 | 删除指定条件的数据,或清空表 | 清空整个表,重置自增主键 |
| 事务支持 | 支持事务,可回滚 | 不支持事务,不可回滚 |
| 效率 | 逐条删除,效率较低 | 直接删除表再重建,效率高 |
| 自增主键 | 保留当前值 | 重置为初始值(如 1) |
六、核心记忆要点
数据库基础:数据库是长期存储数据的仓库,MySQL 是关系型数据库,支持 SQL 语言。
DDL 操作:创建 / 删除数据库、表,修改表结构(
CREATE/ALTER/DROP)。DML 操作:插入 / 修改 / 删除数据(
INSERT/UPDATE/DELETE),注意WHERE条件,避免误操作。易错点:
UPDATE和DELETE不写WHERE条件会修改 / 删除所有数据,务必谨慎。TRUNCATE不可回滚,清空数据前需确认。字符串类型数据需用单引号包裹,日期类型需符合
'YYYY-MM-DD'格式.
