数据库基础-库,表的操作
一、数据库基础
-
为什么使用数据库
- 文件存储的缺点:安全性低、查询管理困难、海量数据存储不便、程序控制复杂。
- 数据库优势:高效管理数据,支持安全存储、快速查询和复杂业务逻辑。
-
主流数据库
- MySQL:高并发、轻量级,适合电商、论坛等场景。
- Oracle:复杂业务处理,适合大型企业。
- SQLite:嵌入式设备首选,资源占用极低。
- H2:Java嵌入式数据库,适合轻量级应用。
二、MySQL基本操作
1. 安装与连接
- 安装方法:
- CentOS 7:
yum install mariadb-server
- Windows:下载MySQL 5.7安装包,按向导完成。
- CentOS 7:
- 连接服务器:
mysql -h 127.0.0.1 -P 3306 -u root -p
- 默认参数:
-h 127.0.0.1
(本地)、-P 3306
(默认端口)。
- 默认参数:
2. 服务器管理
- 服务操作(Windows):
Win + R
→ 输入services.msc
→ 找到MySQL服务 → 启动/停止/重启。
3. 数据库与表操作
- 创建数据库:
CREATE DATABASE helloworld;
- 使用数据库:
USE helloworld;
- 创建表(示例:学生表):
CREATE TABLE student (id INT,name VARCHAR(32),gender VARCHAR(2) );
- 插入数据:
INSERT INTO student (id, name, gender) VALUES (1, '张三', '男');
- 查询数据:
SELECT * FROM student;
4. 数据逻辑存储
- 查询结果示例:
+------+--------+--------+ | id | name | gender | +------+--------+--------+ | 1 | 张三 | 男 | | 2 | 李四 | 女 | +------+--------+--------+
三、MySQL架构与组件
-
架构层级:
- 连接层:客户端连接器(JDBC、ODBC等)。
- 服务层:SQL接口、解析器、优化器、缓存。
- 存储引擎层:InnoDB、MyISAM等。
- 文件系统层:数据存储与日志管理。
-
SQL分类:
- DDL(数据定义语言):
CREATE
,DROP
,ALTER
。 - DML(数据操作语言):
INSERT
,DELETE
,UPDATE
,SELECT
(DQL)。 - DCL(数据控制语言):
GRANT
,REVOKE
,COMMIT
。
- DDL(数据定义语言):
四、存储引擎
1. 查看存储引擎
SHOW ENGINES;
2. 常见引擎对比
特性 | InnoDB | MyISAM | Memory |
---|---|---|---|
事务支持 | ✔ (ACID) | ✘ | ✘ |
锁粒度 | 行级锁 | 表级锁 | 表级锁 |
外键支持 | ✔ | ✘ | ✘ |
崩溃恢复 | ✔ | ✘ | ✘ |
适用场景 | 高并发、事务处理 | 只读/高查询频率 | 临时数据/缓存 |
3. 引擎选择建议
- InnoDB:默认引擎,支持事务和并发写入(推荐多数场景)。
- MyISAM:适用于读密集型操作(如日志分析)。
- Memory:数据临时存储,重启后丢失。
五、关键操作总结
- 安装与连接:确保服务启动,使用正确参数连接。
- 数据库管理:通过
CREATE DATABASE
和USE
管理多数据库。 - 表操作:定义表结构时指定字段类型(如
INT
,VARCHAR
)。 - 数据操作:熟练使用
INSERT
和SELECT
进行增删改查。 - 存储引擎:根据场景选择引擎,优先使用 InnoDB。
一、数据库创建
1. 基本语法
CREATE DATABASE [IF NOT EXISTS] db_name [DEFAULT CHARACTER SET charset_name] [DEFAULT COLLATE collation_name];
- 可选参数:
CHARACTER SET
:指定字符集(默认utf8
)。COLLATE
:指定校验规则(默认utf8_general_ci
)。
2. 创建示例
- 简单创建:
CREATE DATABASE db1;
- 指定字符集:
CREATE DATABASE db2 CHARSET=utf8;
- 指定字符集和校验规则:
CREATE DATABASE db3 CHARSET=utf8 COLLATE utf8_general_ci;
二、字符集与校验规则
1. 查看默认设置
SHOW VARIABLES LIKE 'character_set_database'; -- 查看默认字符集
SHOW VARIABLES LIKE 'collation_database'; -- 查看默认校验规则
2. 查看支持的字符集与规则
SHOW CHARSET; -- 查看所有支持的字符集
SHOW COLLATION; -- 查看所有支持的校验规则
3. 校验规则的影响
- 不区分大小写(
utf8_general_ci
):CREATE DATABASE test1 COLLATE utf8_general_ci; -- 查询 'a' 会返回 'a' 和 'A'
- 区分大小写(
utf8_bin
):CREATE DATABASE test2 COLLATE utf8_bin; -- 查询 'a' 仅返回 'a'
4. 排序差异
- 不区分大小写排序:
a, A, b, B
- 区分大小写排序:
A, B, a, b
三、数据库管理操作
1. 查看数据库
SHOW DATABASES; -- 列出所有数据库
2. 显示创建语句
SHOW CREATE DATABASE db_name;
-- 示例:
SHOW CREATE DATABASE mytest; -- 显示字符集等详细信息
3. 修改数据库
ALTER DATABASE db_name [DEFAULT CHARACTER SET charset_name] [DEFAULT COLLATE collation_name];
-- 示例:修改字符集为gbk
ALTER DATABASE mytest CHARSET=gbk;
4. 删除数据库
DROP DATABASE [IF EXISTS] db_name;
-- 注意:删除后所有表和数据被级联删除,不可恢复!
四、备份与恢复
1. 备份数据库
# 备份整个数据库
mysqldump -P3306 -u root -p密码 -B db_name > 备份路径.sql
# 示例:
mysqldump -u root -p123456 -B mytest > D:/mytest.sql# 备份单表
mysqldump -u root -p db_name table1 table2 > 备份路径.sql# 备份多数据库
mysqldump -u root -p -B db1 db2 > 备份路径.sql
2. 恢复数据库
-- 在MySQL命令行中执行:
SOURCE 备份路径.sql;
-- 若备份未带-B参数,需先手动创建空数据库:
CREATE DATABASE db_name;
USE db_name;
SOURCE 备份路径.sql;
五、查看连接状态
SHOW PROCESSLIST;
-- 显示当前所有连接信息(用户、IP、执行命令等),用于监控异常连接。
关键注意事项
-
字符集选择:
- 中文环境推荐
utf8mb4
(支持Emoji)。 - 区分大小写场景使用
utf8_bin
,否则用utf8_general_ci
。
- 中文环境推荐
-
备份策略:
- 定期备份重要数据,避免直接操作生产库。
-
删除风险:
DROP DATABASE
会删除所有关联表,操作前务必确认。
一、创建表
1. 基本语法
CREATE TABLE table_name (field1 datatype [COMMENT '注释'],field2 datatype,... ) CHARACTER SET 字符集 COLLATE 校验规则 ENGINE 存储引擎;
- 参数说明:
CHARACTER SET
:指定字符集(默认继承数据库的字符集)。COLLATE
:指定校验规则(默认继承数据库的校验规则)。ENGINE
:指定存储引擎(如InnoDB
、MyISAM
)。
2. 创建表示例
CREATE TABLE users (id INT,name VARCHAR(20) COMMENT '用户名',password CHAR(32) COMMENT '密码的MD5值',birthday DATE COMMENT '生日' ) CHARACTER SET utf8 ENGINE MyISAM;
- 存储引擎差异:
- MyISAM:生成
.frm
(表结构)、.MYD
(表数据)、.MYI
(表索引)文件。 - InnoDB:生成
.frm
(表结构)和.ibd
(数据与索引)文件。
- MyISAM:生成
二、查看表结构
DESC 表名; -- 查看表结构
示例输出:
+----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | id | int(11) | YES | | NULL | | | name | varchar(20) | YES | | NULL | | | password | char(32) | YES | | NULL | | | birthday | date | YES | | NULL | | +----------+-------------+------+-----+---------+-------+
三、修改表结构
1. 添加字段
ALTER TABLE 表名 ADD 字段名 数据类型 [COMMENT '注释'] [AFTER 字段名];
示例:
ALTER TABLE users ADD assets VARCHAR(100) COMMENT '图片路径' AFTER birthday;
2. 修改字段类型
ALTER TABLE 表名 MODIFY 字段名 新数据类型;
示例:
ALTER TABLE users MODIFY name VARCHAR(60); -- 将name字段长度改为60
3. 删除字段
ALTER TABLE 表名 DROP 字段名;
示例:
ALTER TABLE users DROP password; -- 删除password字段(数据不可恢复!)
4. 重命名字段
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 数据类型;
示例:
ALTER TABLE employee CHANGE name xingming VARCHAR(60); -- 将name重命名为xingming
5. 重命名表
ALTER TABLE 旧表名 RENAME TO 新表名;
示例:
ALTER TABLE users RENAME TO employee; -- 将users表重命名为employee
四、删除表
DROP TABLE [IF EXISTS] 表名; -- 删除表(不可逆操作!)
示例:
DROP TABLE tl; -- 删除表tl
五、关键操作注意事项
-
字段修改风险:
- 修改字段类型可能导致数据截断或丢失(如
VARCHAR(20)
改为VARCHAR(10)
)。 - 删除字段会永久删除该列所有数据。
- 修改字段类型可能导致数据截断或丢失(如
-
存储引擎选择:
- MyISAM:适合读密集型场景(如日志分析),不支持事务。
- InnoDB:支持事务和行级锁,适合高并发写入场景。
-
表文件管理:
- 不同引擎生成不同文件,需注意备份和迁移时的完整性。
六、操作示例总结
- 创建表:定义字段类型、字符集和存储引擎。
- 查看结构:使用
DESC
快速获取表详细信息。 - 修改表:灵活调整字段、类型和表名,注意数据安全。
- 删除表:谨慎操作,避免误删重要数据。