当前位置: 首页 > news >正文

数据库基础-库,表的操作


一、数据库基础

  1. 为什么使用数据库

    • 文件存储的缺点:安全性低、查询管理困难、海量数据存储不便、程序控制复杂。
    • 数据库优势:高效管理数据,支持安全存储、快速查询和复杂业务逻辑。
  2. 主流数据库

    • MySQL:高并发、轻量级,适合电商、论坛等场景。
    • Oracle:复杂业务处理,适合大型企业。
    • SQLite:嵌入式设备首选,资源占用极低。
    • H2:Java嵌入式数据库,适合轻量级应用。

二、MySQL基本操作

1. 安装与连接
  • 安装方法
    • CentOS 7yum install mariadb-server
    • Windows:下载MySQL 5.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架构与组件

  1. 架构层级

    • 连接层:客户端连接器(JDBC、ODBC等)。
    • 服务层:SQL接口、解析器、优化器、缓存。
    • 存储引擎层:InnoDB、MyISAM等。
    • 文件系统层:数据存储与日志管理。
  2. SQL分类

    • DDL(数据定义语言)CREATE, DROP, ALTER
    • DML(数据操作语言)INSERT, DELETE, UPDATE, SELECT(DQL)。
    • DCL(数据控制语言)GRANT, REVOKE, COMMIT

四、存储引擎

1. 查看存储引擎
SHOW ENGINES;
2. 常见引擎对比
特性InnoDBMyISAMMemory
事务支持✔ (ACID)
锁粒度行级锁表级锁表级锁
外键支持
崩溃恢复
适用场景高并发、事务处理只读/高查询频率临时数据/缓存
3. 引擎选择建议
  • InnoDB:默认引擎,支持事务和并发写入(推荐多数场景)。
  • MyISAM:适用于读密集型操作(如日志分析)。
  • Memory:数据临时存储,重启后丢失。

五、关键操作总结

  1. 安装与连接:确保服务启动,使用正确参数连接。
  2. 数据库管理:通过 CREATE DATABASEUSE 管理多数据库。
  3. 表操作:定义表结构时指定字段类型(如 INT, VARCHAR)。
  4. 数据操作:熟练使用 INSERTSELECT 进行增删改查。
  5. 存储引擎:根据场景选择引擎,优先使用 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、执行命令等),用于监控异常连接。

关键注意事项

  1. 字符集选择

    • 中文环境推荐utf8mb4(支持Emoji)。
    • 区分大小写场景使用utf8_bin,否则用utf8_general_ci
  2. 备份策略

    • 定期备份重要数据,避免直接操作生产库。
  3. 删除风险

    • DROP DATABASE会删除所有关联表,操作前务必确认。

    一、创建表

    1. 基本语法
    CREATE TABLE table_name (field1 datatype [COMMENT '注释'],field2 datatype,...
    ) 
    CHARACTER SET 字符集 
    COLLATE 校验规则 
    ENGINE 存储引擎;
    
    • 参数说明
      • CHARACTER SET:指定字符集(默认继承数据库的字符集)。
      • COLLATE:指定校验规则(默认继承数据库的校验规则)。
      • ENGINE:指定存储引擎(如 InnoDBMyISAM)。
    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(数据与索引)文件。

    二、查看表结构

    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
    

    五、关键操作注意事项

    1. 字段修改风险

      • 修改字段类型可能导致数据截断或丢失(如 VARCHAR(20) 改为 VARCHAR(10))。
      • 删除字段会永久删除该列所有数据。
    2. 存储引擎选择

      • MyISAM:适合读密集型场景(如日志分析),不支持事务。
      • InnoDB:支持事务和行级锁,适合高并发写入场景。
    3. 表文件管理

      • 不同引擎生成不同文件,需注意备份和迁移时的完整性。

    六、操作示例总结

    1. 创建表:定义字段类型、字符集和存储引擎。
    2. 查看结构:使用 DESC 快速获取表详细信息。
    3. 修改表:灵活调整字段、类型和表名,注意数据安全。
    4. 删除表:谨慎操作,避免误删重要数据。
http://www.xdnf.cn/news/265159.html

相关文章:

  • 人工智能——层次聚类算法
  • JVM 一文详解
  • 普通IT的股票交易成长史--20250502 突破(2)
  • 【Net】DPDK
  • Vscode/Code-Server 安装中文包——CI/CD
  • PCIe | TLP 报头 / 包格式 / 地址转换 / 配置空间 / 命令寄存器 / 配置类型
  • JMM 与 JVM 运行时数据区有什么区别和联系?
  • 数字化转型进阶:26页华为数字化转型实践分享【附全文阅读】
  • 传奇各职业/战士/法师/道士/头盔爆率及出处产出地/圣战/法神/天尊/祈祷/斗笠/精灵
  • 面向对象编程简介
  • list的两种设计
  • MySQL 比较运算符详解
  • 穿越数据森林与网络迷宫:树与图上动态规划实战指南
  • 深拷贝与浅拷贝的核心区别
  • 【unity游戏开发——Animator动画】Animation动画资源节约、优化、编辑修改小技巧
  • 人工智能:如何快速筛选出excel中某列存在跳号的单元格位置?
  • Manus联合创始人:公司产品基于Claude和阿里千问大模型开发
  • Java开发经验——ali编码规范经验总结
  • java面向对象编程【高级篇】之特殊类
  • 【Java多线程】计时器Timer/ScheduledExecutorService的使用
  • mysql主从复制搭建,并基于‌Keepalived + VIP实现高可用
  • MARM:推荐系统中的记忆增强突破
  • C++ - 数据容器之 forward_list(创建与初始化、元素访问、容量判断、元素遍历、添加元素、删除元素)
  • Python爬虫实战:获取企信网指定公司基本工商数据并分析,为客户选择公司做参考
  • 封装pinia并引入pinia持久化工具(pinia-plugin-persistedstate)
  • HarmonyOS NEXT——DevEco Studio的使用(还没写完)
  • 如何基于HAL库进行STM32开发
  • 华为云Flexus+DeepSeek征文|DeepSeek-V3商用服务开通教程
  • Python 学习
  • 4.29-4.30 Maven+单元测试