MySQL库和表的操作详解:从创建库到表的管理全面指南

news2025/3/13 19:57:23

目录

一、MySQL库的操作详解

〇、登录MySQL

一、数据库的创建与字符集设置

1. 创建数据库的语法

2. 创建数据库示例

查看创建出来的文件:

 bash下查看MySQL创建的文件

二、字符集与校验规则

1. 查看系统默认设置

2. 查看支持的字符集与校验规则

3. 校验规则对查询的影响

示例:区分大小写 vs 不区分大小写

排序差异

 

三、数据库的日常操作

1. 查看与修改数据库

2、 查看当前所在的库

3. 删除数据库

4、修改

​编辑 5、查看当前创建库命令

四、备份与恢复

1. 备份数据库

2. 恢复数据库

五、使用库

六、高级操作:查看连接状态及当前所在的库

七、最佳实践与注意事项

二、数据库表的操作

一、表的创建与结构设计

1. 创建表的语法

2. 核心参数说明

3. 创建表示例

4、表的查看

5、查看表的详细信息 

​编辑 

二、表结构修改

1. 添加列

2. 修改列

3. 删除列

4. 添加约束

5. 删除表

三、数据操作(CRUD)

1. 插入数据

2. 查询数据

3. 更新数据

4. 删除数据

四、索引管理

1. 创建索引

2. 查看索引

3. 删除索引

五、表优化与维护

1. 分析表使用情况

2. 优化表碎片

3. 修复表(仅MyISAM)

六、常见问题与解决方案

1. 插入中文乱码

2. 自增主键不连续

3. 外键约束失败

七、最佳实践


一、MySQL库的操作详解

〇、登录MySQL

mysql -h 127.0.0.1 -P 3306 -u root -p
  • -h 默认为本地(127.0.0.1),-P 默认为3306端口。

  • -u为谁登录

一、数据库的创建与字符集设置

1. 创建数据库的语法

CREATE DATABASE [IF NOT EXISTS] db_name 
    [DEFAULT CHARACTER SET charset_name] 
    [DEFAULT COLLATE collation_name];
  • 关键参数

    • CHARACTER SET:指定数据库字符集(如 utf8gbk)。

    • COLLATE:指定字符集的校验规则(如 utf8_general_ci)。

2. 创建数据库示例

-- 创建默认字符集的数据库
CREATE DATABASE db1;

-- 指定字符集为utf8
CREATE DATABASE db2 CHARSET=utf8;

-- 指定字符集和校验规则
CREATE DATABASE db3 CHARSET=utf8 COLLATE utf8_general_ci;

 

说明:未指定字符集时,默认使用 utf8 字符集和 utf8_general_ci 校验规则。

查看创建出来的文件:

show + databases;

 bash下查看MySQL创建的文件

cd /var/lib/mysql

 


二、字符集与校验规则

1. 查看系统默认设置

-- 查看默认字符集
SHOW VARIABLES LIKE 'character_set_database';

-- 查看默认校验规则
SHOW VARIABLES LIKE 'collation_database';

 

2. 查看支持的字符集与校验规则

-- 查看所有支持的字符集
SHOW CHARSET;

-- 查看所有支持的校验规则
SHOW COLLATION;

3. 校验规则对查询的影响

示例:区分大小写 vs 不区分大小写
-- 创建不区分大小写的数据库
CREATE DATABASE test1 COLLATE utf8_general_ci;
USE test1;
CREATE TABLE person(name VARCHAR(20));
INSERT INTO person VALUES ('a'), ('A'), ('b'), ('B');

-- 查询结果(不区分大小写)
SELECT * FROM person WHERE name='a'; 
-- 输出:'a', 'A'

-- 创建区分大小写的数据库
CREATE DATABASE test2 COLLATE utf8_bin;
USE test2;
CREATE TABLE person(name VARCHAR(20));
INSERT INTO person VALUES ('a'), ('A'), ('b'), ('B');

-- 查询结果(区分大小写)
SELECT * FROM person WHERE name='a'; 
-- 输出:'a'

create + database +文件名

排序差异
-- test1(不区分大小写排序)
SELECT * FROM person ORDER BY name; 
-- 结果:a, A, b, B

-- test2(区分大小写排序)
SELECT * FROM person ORDER BY name; 
-- 结果:A, B, a, b

 


三、数据库的日常操作

1. 查看与修改数据库

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

-- 显示数据库创建语句
SHOW CREATE DATABASE mytest;

-- 修改数据库字符集
ALTER DATABASE mytest CHARSET=gbk;

2、 查看当前所在的库

select database();

 

3. 删除数据库

DROP DATABASE IF EXISTS db_name;

 

注意:删除后数据库及所有表数据将被永久删除!

4、修改

alter database db1 charset = gbk collate gbk_chinese_ci;

 alter database+需要修改的库+需要修改的内容 

 5、查看当前创建库命令

show+create+database+库名称

show+create+database+库名称


四、备份与恢复

1. 备份数据库

# 备份整个数据库
mysqldump -u root -p -B mytest > D:/mytest.sql

# 备份单张表
mysqldump -u root -p mytest table1 table2 > D:/mytest_table.sql

2. 恢复数据库

-- 登录MySQL后执行
SOURCE D:/mytest.sql;

注意事项

  • 若备份时未使用 -B 参数,需先手动创建空数据库再恢复。

  • 备份文件本质是SQL脚本,包含建库、建表及插入数据的语句。


五、使用库

use + 创建的文件(create出来的对象);

system clear = bash中的clear; 


六、高级操作:查看连接状态及当前所在的库

SHOW PROCESSLIST;

输出示例

+----+------+-----------+------+---------+------+-------+------------------+
| Id | User | Host      | db   | Command | Time | State | Info             |
+----+------+-----------+------+---------+------+-------+------------------+
| 5  | root | localhost | test | Sleep   | 100  |       | NULL             |
| 6  | root | localhost | NULL | Query   | 0    | init  | SHOW PROCESSLIST |
+----+------+-----------+------+---------+------+-------+------------------+

作用:监控当前数据库连接,识别异常请求(如未知用户连接)。


七、最佳实践与注意事项

  1. 字符集选择:推荐使用 utf8mb4 支持更多字符(如Emoji)。

  2. 备份策略

    • 生产环境每日定时备份。

    • 备份文件加密存储,防止数据泄露。

  3. 避免误删:执行 DROP DATABASE 前务必确认数据库名。

  4. 权限管理:限制非管理员用户的 CREATE/DROP 权限。


通过本文,您已掌握MySQL库的完整操作流程。从创建到备份恢复,每一步都至关重要。建议结合实践加深理解,例如在本地环境中模拟不同校验规则的查询场景,或尝试备份恢复真实项目数据。


二、数据库表的操作

一、表的创建与结构设计

1. 创建表的语法

CREATE TABLE [IF NOT EXISTS] table_name (
    column1 datatype [约束],
    column2 datatype [约束],
    ...
    [PRIMARY KEY (列名)],
    [FOREIGN KEY (列名) REFERENCES 其他表(列名)]
) ENGINE=存储引擎 DEFAULT CHARSET=字符集;

2. 核心参数说明

  • 数据类型:如 INTVARCHAR(n)DATETEXT

  • 约束

    • PRIMARY KEY:主键(唯一且非空)。

    • UNIQUE:唯一约束。

    • NOT NULL:非空约束。

    • DEFAULT:默认值。

    • AUTO_INCREMENT:自增(常用于主键)。

  • 存储引擎:如 InnoDB(默认)、MyISAM

  • 字符集:如 utf8mb4(推荐支持Emoji)。

3. 创建表示例

-- 创建学生表(包含主键、自增、默认值)
CREATE TABLE student (
    id INT ,
    name VARCHAR(50) comment '用户名',
   possword  char(32)  comment '用户密码', 
    birthday  date comment '用户生日'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

4、表的查看

show tables;

 

5、查看表的详细信息 

desc 表名;

 6、创建表的详细信息

show create table +表名

 去掉多余字符

show create table +表名+\G

 

7、表名修改

alter table 原始名 rename to 新名称 

 


二、表结构修改

1. 添加列

ALTER TABLE student ADD COLUMN email VARCHAR(100) AFTER name;

 

 

2. 修改列

-- 修改列数据类型
ALTER TABLE student MODIFY COLUMN name VARCHAR(60);

-- 重命名列
ALTER TABLE student CHANGE COLUMN emil data DATE;

 

3. 删除列

ALTER TABLE student DROP COLUMN email;

 

4. 添加约束

-- 添加唯一约束
ALTER TABLE student ADD UNIQUE (email);

-- 添加外键约束
ALTER TABLE student ADD FOREIGN KEY (class_id) REFERENCES class(id);

5. 删除表

DROP TABLE IF EXISTS student;

三、数据操作(CRUD)

1. 插入数据

-- 插入单条数据
INSERT INTO student (name, gender, birthday) 
VALUES ('张三', '男', '2005-03-15');

-- 批量插入数据
INSERT INTO student (name, gender) VALUES 
('李四', '女'), 
('王五', '男');

2. 查询数据

-- 查询所有列
SELECT * FROM student;

-- 条件查询(WHERE)
SELECT name, birthday FROM student WHERE gender = '男';

-- 排序(ORDER BY)
SELECT * FROM student ORDER BY birthday DESC;

-- 分组聚合(GROUP BY)
SELECT gender, COUNT(*) AS total FROM student GROUP BY gender;

 

 

3. 更新数据

UPDATE student SET class_id = 2 WHERE id = 3;

4. 删除数据

-- 删除单条记录
DELETE FROM student WHERE id = 5;

-- 清空表(不可恢复!)
TRUNCATE TABLE student;

四、索引管理

1. 创建索引

-- 单列索引
CREATE INDEX idx_name ON student (name);

-- 唯一索引
CREATE UNIQUE INDEX idx_email ON student (email);

-- 复合索引
CREATE INDEX idx_gender_birthday ON student (gender, birthday);

2. 查看索引

SHOW INDEX FROM student;

3. 删除索引

DROP INDEX idx_name ON student;

五、表优化与维护

1. 分析表使用情况

-- 查看表状态
SHOW TABLE STATUS LIKE 'student';

-- 分析索引效率
EXPLAIN SELECT * FROM student WHERE name = '张三';

2. 优化表碎片

OPTIMIZE TABLE student;

3. 修复表(仅MyISAM)

REPAIR TABLE student;

六、常见问题与解决方案

1. 插入中文乱码

  • 原因:表字符集与客户端不匹配。

  • 解决:建表时指定 DEFAULT CHARSET=utf8mb4,连接时设置 SET NAMES utf8mb4

2. 自增主键不连续

  • 原因:删除数据或事务回滚导致。

  • 解决:使用 ALTER TABLE student AUTO_INCREMENT=新值 重置。

3. 外键约束失败

  • 原因:插入的数据在关联表中不存在。

  • 解决:先确保关联表中有对应数据,或暂时禁用外键检查:

  • SET FOREIGN_KEY_CHECKS = 0;
    -- 执行操作
    SET FOREIGN_KEY_CHECKS = 1;


七、最佳实践

  1. 命名规范:表名和字段名使用小写+下划线(如 student_info)。

  2. 适度索引:避免过度索引,优先为高频查询字段和 WHERE 条件列建索引。

  3. 分区策略:海量数据表可按时间或范围分区。

  4. 定期备份:结合 mysqldump 或工具(如 Percona XtraBackup)进行备份。


通过本文,您已掌握MySQL表的核心操作,从基础设计到高级优化均有覆盖。建议结合项目需求实践,例如设计一个用户管理系统,练习表关联、事务处理等复杂场景。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2314469.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PyTorch 系列教程:使用CNN实现图像分类

图像分类是计算机视觉领域的一项基本任务,也是深度学习技术的一个常见应用。近年来,卷积神经网络(cnn)和PyTorch库的结合由于其易用性和鲁棒性已经成为执行图像分类的流行选择。 理解卷积神经网络(cnn) 卷…

Java 大视界 -- Java 大数据中的数据可视化大屏设计与开发实战(127)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…

「Unity3D」UGUI将元素固定在,距离屏幕边缘的某个比例,以及保持元素自身比例

在不同分辨率的屏幕下,UI元素按照自身像素大小,会发生位置与比例的变化,本文仅利用锚点(Anchors)使用,来实现UI元素,固定在某个比例距离的屏幕边缘。 首先,将元素的锚点设置为中心&…

Deep research深度研究:ChatGPT/ Gemini/ Perplexity/ Grok哪家最强?(实测对比分析)

目前推出深度研究和深度检索的AI大模型有四家: OpenAI和Gemini 的deep research,以及Perplexity 和Grok的deep search,都能生成带参考文献引用的主题报告。 致力于“几分钟之内生成一份完整的主题调研报告,解决人力几小时甚至几天…

关于sqlalchemy的ORM的使用

关于sqlalchemy的ORM的使用 二、创建表三、使用数据表、查询记录三、批量插入数据四、关于with...as...:的使用 二、创建表 使用Mapped来映射字段 from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker,Mapped,mapped_columnBa…

【leetcode hot 100 148】排序序列

解法一:(双重循环)第一个循环head,逐步将head的node加入有序列表;第二个循环在有序列表中找到合适的位置,插入node。 /*** Definition for singly-linked list.* public class ListNode {* int val;* …

【Linux】在VMWare中安装Ubuntu操作系统(2025最新_Ubuntu 24.04.2)#VMware安装Ubuntu实战分享#

今天田辛老师为大家带来一篇关于在VMWare虚拟机上安装Ubuntu系统的详细教程。无论是学习、开发还是测试,虚拟机都是一个非常实用的工具,它允许我们在同一台物理机上运行多个操作系统。Ubuntu作为一款开源、免费且用户友好的Linux发行版,深受广…

AutoGen学习笔记系列(十三)Advanced - Logging

这篇文章瞄的是AutoGen官方教学文档 Advanced 章节中的 Logging 篇章,介绍了怎样在使用过程中添加日志信息,其实就是使用了python自带的日志库 logging。 官网链接:https://microsoft.github.io/autogen/stable/user-guide/agentchat-user-g…

scrcpy pc机远程 无线 控制android app 查看调试log

背景: 公司的安卓机,是那种大屏幕的连接usb外设的。不好挪动,占地方,不能直接连接pc机上的android stduio来调试。 所以从网上找了一个python adb.exe控制器,可以局域网内远程控制开发的app,并在android stduio上看…

UE5.5 Niagara发射器更新属性

发射器属性 在 Niagara 里,Emitter 负责控制粒子生成的规则和行为。不同的 Emitter 属性决定了如何发射粒子、粒子如何模拟、计算方式等。 发射器 本地空间(Local Space) 控制粒子是否跟随发射器(Emitter)移动。 ✅…

MongoDB备份与还原

备份恢复工具介绍 1)mongoexport/mongoimport 2)mongodump/mongorestore 备份工具区别 mongoexport/mongoimport 导入/导出的是JSON格式或者CSV格式 mongodump/mongorestore 导入/导出的是BSON格式。二进制方式,速度快 1)…

计算机:基于深度学习的Web应用安全漏洞检测与扫描

目录 前言 课题背景和意义 实现技术思路 一、算法理论基础 1.1 网络爬虫 1.2 漏洞检测 二、 数据集 三、实验及结果分析 3.1 实验环境搭建 3.2 模型训练 最后 前言 📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,…

Java 大视界 -- Java 大数据在智能安防视频摘要与检索技术中的应用(128)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…

部署项目至服务器:响应时间太长,无法访问此页面?

在我们部署项目到服务器上的时候,一顿操作猛如虎,打开页面..... 这里记录一下这种情况是怎么回事。一般就是服务器上的安全组没有放行端口。 因为我是用宝塔进行项目部署的。所以遇到这种情况,要去操作两边(宝塔and服务器所属平台…

【数据结构】List介绍

目录 1. 什么是List 2. 常见接口介绍 3. List的使用 1. 什么是List 在集合框架中,List是一个接口,继承自Collection。此时extends意为拓展 Collection也是一个接口,该接口中规范了后序容器中常用的一些方法,具体如下所示&…

vs2022用git插件重置--删除更改(--hard)后恢复删除的内容

1、先到项目工程中打开需要恢复的分支。 2、进入代码管理根目录文件夹。 3、在根目录文件夹点右键,点git bash here 正常情况下如果git目录权限足够,是可以如上图所示显示当前分支和当前目录的。 在git权限不足的情况下会出现如下提示: …

vscode接入DeepSeek 免费送2000 万 Tokens 解决DeepSeek无法充值问题

1. 在vscode中安装插件 Cline 2.打开硅基流动官网 3. 注册并登陆,邀请码 WpcqcXMs 4.登录后新建秘钥 5. 在vscode中配置cline (1) API Provider 选择 OpenAI Compatible ; (2) Base URL设置为 https://api.siliconflow.cn](https://api.siliconfl…

【MySQL】用户管理和权限

欢迎拜访:雾里看山-CSDN博客 本篇主题:【MySQL】用户管理和权限 发布时间:2025.3.12 隶属专栏:MySQL 目录 引言用户用户信息创建用户语法案例 修改用户密码语法案例 删除用户语法案例 权限权限列表查看和刷新用户的权限给用户授权…

指令微调 (Instruction Tuning) 与 Prompt 工程

引言 预训练语言模型 (PLMs) 在通用语言能力方面展现出强大的潜力。然而,如何有效地引导 PLMs 遵循人类指令, 并输出符合人类意图的响应, 成为释放 PLMs 价值的关键挑战。 指令微调 (Instruction Tuning) 和 Prompt 工程 (Prompt Engineerin…

UE5.5 Niagara 发射器粒子更新模块

Particle State (粒子状态)模块 Particle State 主要用于控制粒子的生存状态,包括死亡、消失、响应事件等。 Particle State Kill Particles When Lifetime Has Elapsed 当粒子的生命周期结束时,销毁这些粒子。 Lifetime &…