数据库基础-库,表的操作
一、数据库基础
-
为什么使用数据库
- 文件存储的缺点:安全性低、查询管理困难、海量数据存储不便、程序控制复杂。
- 数据库优势:高效管理数据,支持安全存储、快速查询和复杂业务逻辑。
-
主流数据库
- 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字段长度改为603. 删除字段
ALTER TABLE 表名 DROP 字段名;示例:
ALTER TABLE users DROP password; -- 删除password字段(数据不可恢复!)4. 重命名字段
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 数据类型;示例:
ALTER TABLE employee CHANGE name xingming VARCHAR(60); -- 将name重命名为xingming5. 重命名表
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快速获取表详细信息。 - 修改表:灵活调整字段、类型和表名,注意数据安全。
- 删除表:谨慎操作,避免误删重要数据。
