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

目录

一、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.rhkb.cn/news/32447.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux中的基本指令(上)

目录 ls指令 判断linux中文件 pwd指令 认识路径 ​编辑 绝对路径/相对路径 cd指令 简要理解用户 理解家目录 echo指令和printf指令 touch指令 mkdir指令 cat指令 tree指令 rmdir指令和rm指令 man指令 cp指令 which指令 alias 指令 date指令 cal指令 理解…

WPF 与 GMap.NET 结合实现雷达目标动态显示与地图绘制

概述 雷达上位机是雷达系统中用于数据可视化、分析和控制的核心软件。本文将介绍如何使用 C# 和 WPF 框架开发一个雷达上位机程序,主要功能包括: 显示目标轨迹:在界面上实时绘制雷达探测到的目标轨迹。点击显示详细信息:用户点击…

「string」笔记

参考&#xff1a;比特鹏哥 1. string string是一种类型&#xff0c;指的是字符串&#xff0c;比字符数组更高级 头文件 <string> #include <string>int main() {string a;//未初始化string b "good good";//初始化string c("good sfternoon&q…

AutoGen使用学习

AutoGen使用学习 上篇文件使用使用【autoGenchainlitdeepSeek】实现【多角色、多用户、多智能体对话系统】&#xff0c;本次系统的学习autoGen的使用方法 文章目录 AutoGen使用学习[toc]1-核心知识点2-参考网址3-实战案例1-autoGen安装和基础使用主要功能安装方法使用示例注意事…

207、【图论】孤岛的总面积

题目 思路 相比于 206、【图论】岛屿数量&#xff0c;就是在这个代码的基础上。先遍历边界&#xff0c;将边界连接的岛屿变为0&#xff0c;然后再计算一遍当前为1的岛屿面积。 代码实现 import collectionsn, m list(map(int, input().split())) graph []for _ in range(n…

Python Selenium库入门使用,图文详细。附网页爬虫、web自动化操作等实战操作。

文章目录 前言1 创建conda环境安装Selenium库2 浏览器驱动下载&#xff08;以Chrome和Edge为例&#xff09;3 基础使用&#xff08;以Chrome为例演示&#xff09;3.1 与浏览器相关的操作3.1.1 打开/关闭浏览器3.1.2 访问指定域名的网页3.1.3 控制浏览器的窗口大小3.1.4 前进/后…

在芯片设计的后端流程中,通过metal修timing是什么意思,怎么实施。举个timing违例说明一下

芯片设计后端流程中通过Metal修Timing 在芯片设计后端流程中&#xff0c;"通过metal修timing"是指通过调整金属层布线来解决时序违例问题的一种技术手段。这是物理设计阶段常用的优化方法之一。 什么是通过Metal修Timing 在芯片设计中&#xff0c;Metal&#xff08;金…

【数据结构】List介绍

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

文件上传漏洞

pass-1 判断本关文件上传检测方式 ①显示源码 本pass在客户端使用js对不合法图片进行检查!js前端检测 2、针对防御措施进行绕过上传 通过JS 限制上传的文件类型&#xff0c;对于这种情况&#xff0c;我们可以采用以下几种方式绕过&#xff1a; 修改JS文件; 上传png后缀的…

深入Flink运行时架构:JobManager与TaskManager协作全解析

深入Flink运行时架构:JobManager与TaskManager协作全解析 一、Flink分布式执行模型剖析 1.1 运行时架构全景视图 核心组件交互关系: #mermaid-svg-tMSqMSsKP6vwUZi3 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-s…

股票-K线

一根K线记录的是某股票一个周期的价格变动情况,其周期可以分为月k线、周k线、日k线、小时线等等。 单根K线的构成要素,通常有以下几部分: 开盘价、收盘价、最高价、最低价、实体、上影线、下影线。 1、阳K线 在阳K线中, 最上端的线段为上影线,上影线的最高点为最高价,…

行为模式---策略模式

概念 策略模式是一种行为设计摸是&#xff0c;它的核心思想是将一些列的算法封装成独立的对象&#xff0c;并使它们可以相互替换&#xff0c;通过上下文进行调用。 策略模式通过算法抽象为独立的策略类&#xff0c;客户端可以根据自身需求选择不同的策略类来完成任务、这种方…

3.3.2 Proteus第一个仿真图

文章目录 文章介绍0 效果图1 新建“点灯”项目2 添加元器件3 元器件布局接线4 补充 文章介绍 本文介绍&#xff1a;使用Proteus仿真软件画第一个仿真图 0 效果图 1 新建“点灯”项目 修改项目名称和路径&#xff0c;之后一直点“下一步”直到完成 2 添加元器件 点击元…

Diffusion-Probabilistic-Models环境配置

1、相关地址 代码地址:https://github.com/Sohl-Dickstein/Diffusion-Probabilistic-Models 论文地址:https://arxiv.org/abs/2006.11239 2、python2.7 环境安装 conda create -n theano python2.7 -y conda activate theano3、包安装 下载合适的版本&#xff0c;也就是201…

机器学习(吴恩达)

一, 机器学习 机器学习定义: 计算机能够在没有明确的编程情况下学习 特征: 特征是描述样本的属性或变量&#xff0c;是模型用来学习和预测的基础。如: 房屋面积, 地理位置 标签: 监督学习中需要预测的目标变量&#xff0c;是模型的输出目标。如: 房屋价格 样本: 如: {面积100㎡…

electron 安装报错:RequestError: certificate has expired

在使用 yarn 安装 electron 时&#xff0c;报证书过期的错误。原因是以前使用的阿里的镜像已经过期&#xff0c;改成新的镜像地址就可以了。 报错信息 yarn add electron --dev yarn add v1.22.5 info No lockfile found. [1/4] Resolving packages... ⠁ (node:33196) [DEP0…

《历史代码分析》5、动态控制列表的列

​​ 本系列《历史代码分析》为工作中遇到具有代表性的代码。今天我们讲一下&#xff0c;动态展示列表的列&#xff0c;因为找不到代码了&#xff0c;所有本篇用图展示。 举个栗子 ​​ 我们希望能够动态的控制列表的列&#xff0c;例如&#xff0c;英语老师只想知道自己学…

【网络协议详解】——QOS技术(学习笔记)

目录 QoS简介 QoS产生的背景 QoS服务模型 基于DiffServ模型的QoS组成 MQC简介 MQC三要素 MQC配置流程 优先级映射配置(DiffServ域模式) 优先级映射概述 优先级映射原理描述 优先级映射 PHB行为 流量监管、流量整形和接口限速简介 流量监管 流量整形 接口限速…

处理动态分页:自动翻页与增量数据抓取策略-数据议事厅

一、案例场景 Lily&#xff08;挥舞着数据报表&#xff09;&#xff1a;“用户反馈我们的股票舆情分析总是缺失最新跟帖&#xff01;这些动态分页像狡猾的狐狸&#xff0c;每次抓取都漏掉关键数据&#xff01;” 小王&#xff08;调试着爬虫代码&#xff09;&#xff1a;“传…

练习-纪律问题(幂运算)

问题描述 一年级一班有 n 个小朋友坐成一排&#xff0c;统计了这些小朋友的爱好后&#xff0c;老师得知了他们一共有 m 种爱好&#xff0c;每个小朋友会拥有这些爱好中的一种。 如果相邻的小朋友爱好相同&#xff0c;那么他们上课时就会忍不住悄悄说话&#xff0c;违反课堂纪…