新闻详情

新闻详情

首页 / 资讯中心 / 详情

MySQL 基础篇(二):数据库和数据表的基本操作

发布时间:2026/10/1 7:29:32来源:尧图网络
MySQL 基础篇(二):数据库和数据表的基本操作
目录本文内容概要一、数据库的基本操作1.1 创建数据库1.2 数据库字符集和校验集1.2.1 查看 MySQL 支持的字符集和校验集查看字符集查看校验集1.3 删除数据库1.4 查看数据库1.4.1 查看当前 MySQL Server 有哪些数据库1.4.2 查看数据库的字符集和校验集1.4.3 切换/选择数据库1.4.4 查看当前所处的数据库1.5 修改数据库1.6 数据库的备份和恢复1.7 查看数据库的连接情况二、数据表的基本操作2.1 创建数据表2.2 删除数据表2.3 查看数据表2.3.1 查看当前数据库中的所有数据表2.3.2 查看数据表结构2.3.3 查看建表 SQL2.3.4 查看表的详细状态2.4 修改数据表2.4.1 向数据表中添加字段2.4.2 删除字段2.4.3 修改字段类型/属性2.4.4 修改字段名和类型2.4.5 修改表名本文内容概要本文主要介绍 MySQL 中数据库与数据表的基本操作。通过本文的学习需要掌握数据库和数据表的创建、删除、查看与修改操作理解 MySQL 中字符集、校验规则以及存储引擎的基本概念与相关操作掌握数据表字段的添加、删除、类型修改以及表名修改等操作为后续学习 MySQL 中的数据增删查改以及 SQL 查询打下基础。一、数据库的基本操作1.1 创建数据库SQL 语句Linux 文件系统创建数据库create database db_name;在 /var/lib/mysql 创建一个目录文件如果创建已经存在的同名数据库MySQL 会直接拦截此操作不让用户执行。对于上述情况我们创建数据库时可以带上 if not exists 选项如果数据库不存在则创建如果数据库存在MySQL 不会报错但依旧不会创建它。1.2 数据库字符集和校验集数据库字符集数据库存储数据的格式数据库校验集数据库读取数据的格式对于任何一个数据库它都有对应的字符集和校验集。进入/var/lib/mysql路径下对应的数据库目录即可查看该数据库的字符集和校验集。在 MySQL 客户端中也可以查看数据库的字符集和校验集。1.2.1 查看 MySQL 支持的字符集和校验集查看字符集查看校验集创建数据库时指定字符集和校验集在 1.1 小节中我们创建数据库时并没有指定字符集和校验集为什么创建好的数据库会自动带上字符集和校验集呢那是因为在 MySQL 配置文件/etc/my.cnf中配置了创建数据库默认采用的字符集和校验集。对于没有指定校验集MySQL 会自动采用该字符集对应的校验集。1.3 删除数据库SQL 语句Linux 文件系统删除数据库drop database db_name;在 /var/lib/mysql 删除一个目录文件1.4 查看数据库1.4.1 查看当前 MySQL Server 有哪些数据库mysql show databases; -------------------- | Database | -------------------- | information_schema | | mysql | | performance_schema | | sys | | test | -------------------- 5 rows in set (0.00 sec)1.4.2 查看数据库的字符集和校验集mysql show create database test; ------------------------------------------------------------------------- | Database | Create Database | ------------------------------------------------------------------------- | test | CREATE DATABASE test /*!40100 DEFAULT CHARACTER SET utf8 */ | ------------------------------------------------------------------------- 1 row in set (0.00 sec)1.4.3 切换/选择数据库mysql use test; Database changed1.4.4 查看当前所处的数据库mysql select database(); ------------ | database() | ------------ | test | ------------ 1 row in set (0.00 sec)1.5 修改数据库修改数据库的字符集和校验集1.6 数据库的备份和恢复mysqldump -P 3306 -u root -p 密码 -B 数据库名 数据库备份存储的文件路径;source 数据库文件路径;备份数据库cat mytest.sql -- MySQL dump 10.13 Distrib 5.7.44, for Linux (x86_64) -- -- Host: localhost Database: test -- ------------------------------------------------------ -- Server version 5.7.44 /*!40101 SET OLD_CHARACTER_SET_CLIENTCHARACTER_SET_CLIENT /; /!40101 SET OLD_CHARACTER_SET_RESULTSCHARACTER_SET_RESULTS /; /!40101 SET OLD_COLLATION_CONNECTIONCOLLATION_CONNECTION /; /!40101 SET NAMES utf8 /; /!40103 SET OLD_TIME_ZONETIME_ZONE /; /!40103 SET TIME_ZONE00:00 /; /!40014 SET OLD_UNIQUE_CHECKSUNIQUE_CHECKS, UNIQUE_CHECKS0 /; /!40014 SET OLD_FOREIGN_KEY_CHECKSFOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS0 /; /!40101 SET OLD_SQL_MODESQL_MODE, SQL_MODENO_AUTO_VALUE_ON_ZERO /; /!40111 SET OLD_SQL_NOTESSQL_NOTES, SQL_NOTES0 */; -- -- Current Database: test CREATE DATABASE /!32312 IF NOT EXISTS/ test /*!40100 DEFAULT CHARACTER SET gbk */; USE test; /*!40103 SET TIME_ZONEOLD_TIME_ZONE */; /*!40101 SET SQL_MODEOLD_SQL_MODE /; /!40014 SET FOREIGN_KEY_CHECKSOLD_FOREIGN_KEY_CHECKS /; /!40014 SET UNIQUE_CHECKSOLD_UNIQUE_CHECKS /; /!40101 SET CHARACTER_SET_CLIENTOLD_CHARACTER_SET_CLIENT /; /!40101 SET CHARACTER_SET_RESULTSOLD_CHARACTER_SET_RESULTS /; /!40101 SET COLLATION_CONNECTIONOLD_COLLATION_CONNECTION /; /!40111 SET SQL_NOTESOLD_SQL_NOTES */; -- Dump completed on 2026-09-30 15:21:23mytest.sql 文件记录着对数据库的所有有效的历史操作当还原数据库时MySQL 服务端会将这些 SQL 语句重新执行一遍完成数据库的还原。还原数据库补充如果备份的不是整个数据库而是数据库的一张表mysqldump -u root -p 数据库名 表名1 表名2 数据库备份存储的文件路径;同时备份多个数据库mysqldump -u root -p -B 数据库名1 数据库名2 ... 数据库存放路径;如果备份一个数据库时没有带上 -B 选项在恢复数据库时需要先创建空数据库然后进入该数据库再使用 source 还原。1.7 查看数据库的连接情况mysql show processlist; ---------------------------------------------------------------------- | Id | User | Host | db | Command | Time | State | Info | ---------------------------------------------------------------------- | 12 | root | localhost | test | Query | 0 | starting | show processlist | ---------------------------------------------------------------------- 1 row in set (0.00 sec)作用查看当前 MySQL 有哪些用户连接。如果查出某些用户不是合法用户那么说明数据库被其他人入侵了。对于使用 MySQL 数据库出现卡顿、缓慢时也可以通过该指令查看是否是因为数据库连接情况而导致的。二、数据表的基本操作2.1 创建数据表create table 表名称 (字段 类型, 字段 类型) [charset字符集 collate校验集 engine存储引擎];mysql create table person(name char(20), age int); Query OK, 0 rows affected (0.02 sec) mysql show tables; ---------------- | Tables_in_test | ---------------- | person | ---------------- 1 row in set (0.00 sec)在创建数据表时可以指定数据表的字符集、校验集、存储引擎。如果不指定字符集和校验集数据表的字符集和校验集会继承数据库的字符集和校验集。对于存储引擎它会采用 MySQL 数据库配置中的存储引擎。查看 MySQL 支持的存储引擎不同的存储引擎在 Linux 文件系统中的差异mysql create table test_InnoDB(id int) engineInnoDB; Query OK, 0 rows affected (0.01 sec) mysql create table test_MyISAM(id int) engineMyISAM; Query OK, 0 rows affected (0.00 sec) [rootiZ2zebg189x52z3hbfc0t4Z mysql]# ls test/ db.opt person.ibd test_InnoDB.ibd test_MyISAM.MYD person.frm test_InnoDB.frm test_MyISAM.frm test_MyISAM.MYI创建数据表的本质就是在 Linux 文件系统中创建普通文件。不同存储的数据表它们创建普通文件的数量可能不同。2.2 删除数据表drop table table_name;mysql show tables; ---------------- | Tables_in_test | ---------------- | person | | test_InnoDB | | test_MyISAM | ---------------- 3 rows in set (0.01 sec) mysql drop table test_InnoDB; Query OK, 0 rows affected (0.01 sec) mysql drop table test_MyISAM; Query OK, 0 rows affected (0.00 sec) mysql show tables; ---------------- | Tables_in_test | ---------------- | person | ---------------- 1 row in set (0.00 sec)删除数据表本质是在 Linux 文件系统中删除普通文件[rootiZ2zebg189x52z3hbfc0t4Z mysql]# ls test/ db.opt person.frm person.ibd2.3 查看数据表2.3.1 查看当前数据库中的所有数据表mysql show tables; ---------------- | Tables_in_test | ---------------- | person | ---------------- 1 row in set (0.00 sec)2.3.2 查看数据表结构mysql desc person; -------------------------------------------- | Field | Type | Null | Key | Default | Extra | -------------------------------------------- | name | char(20) | YES | | NULL | | | age | int(11) | YES | | NULL | | -------------------------------------------- 2 rows in set (0.01 sec)2.3.3 查看建表 SQLmysql show create table person; ---------------------------------------------------------------------------------------------------------------------------------- | Table | Create Table | ---------------------------------------------------------------------------------------------------------------------------------- | person | CREATE TABLE person ( name char(20) DEFAULT NULL, age int(11) DEFAULT NULL ) ENGINEInnoDB DEFAULT CHARSETgbk | ---------------------------------------------------------------------------------------------------------------------------------- 1 row in set (0.00 sec) mysql show create table person \G; *************************** 1. row *************************** Table: person Create Table: CREATE TABLE person ( name char(20) DEFAULT NULL, age int(11) DEFAULT NULL ) ENGINEInnoDB DEFAULT CHARSETgbk 1 row in set (0.00 sec)2.3.4 查看表的详细状态mysql show table status like person; ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | person | InnoDB | 10 | Dynamic | 0 | 0 | 16384 | 0 | 0 | 0 | NULL | 2026-09-30 15:40:58 | NULL | NULL | gbk_chinese_ci | NULL | | | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1 row in set (0.00 sec)2.4 修改数据表alter table 表名 操作;2.4.1 向数据表中添加字段mysql desc person; -------------------------------------------- | Field | Type | Null | Key | Default | Extra | -------------------------------------------- | name | char(20) | YES | | NULL | | | age | int(11) | YES | | NULL | | -------------------------------------------- 2 rows in set (0.02 sec) mysql alter table person add id int after age; Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql desc person; -------------------------------------------- | Field | Type | Null | Key | Default | Extra | -------------------------------------------- | name | char(20) | YES | | NULL | | | age | int(11) | YES | | NULL | | | id | int(11) | YES | | NULL | | -------------------------------------------- 3 rows in set (0.00 sec)2.4.2 删除字段mysql desc person; -------------------------------------------- | Field | Type | Null | Key | Default | Extra | -------------------------------------------- | name | char(20) | YES | | NULL | | | age | int(11) | YES | | NULL | | | id | int(11) | YES | | NULL | | -------------------------------------------- 3 rows in set (0.00 sec) mysql alter table person drop id; Query OK, 0 rows affected (0.02 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql desc person; -------------------------------------------- | Field | Type | Null | Key | Default | Extra | -------------------------------------------- | name | char(20) | YES | | NULL | | | age | int(11) | YES | | NULL | | -------------------------------------------- 2 rows in set (0.00 sec)2.4.3 修改字段类型/属性mysql desc person; -------------------------------------------- | Field | Type | Null | Key | Default | Extra | -------------------------------------------- | name | char(20) | YES | | NULL | | | age | int(11) | YES | | NULL | | -------------------------------------------- 2 rows in set (0.01 sec) mysql alter table person modify age varchar(40); Query OK, 0 rows affected (0.02 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql desc person; ----------------------------------------------- | Field | Type | Null | Key | Default | Extra | ----------------------------------------------- | name | char(20) | YES | | NULL | | | age | varchar(40) | YES | | NULL | | ----------------------------------------------- 2 rows in set (0.01 sec)2.4.4 修改字段名和类型mysql desc person; ----------------------------------------------- | Field | Type | Null | Key | Default | Extra | ----------------------------------------------- | name | char(20) | YES | | NULL | | | age | varchar(40) | YES | | NULL | | ----------------------------------------------- 2 rows in set (0.00 sec) mysql alter table person change age id int; Query OK, 0 rows affected (0.03 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql desc person; -------------------------------------------- | Field | Type | Null | Key | Default | Extra | -------------------------------------------- | name | char(20) | YES | | NULL | | | id | int(11) | YES | | NULL | | -------------------------------------------- 2 rows in set (0.00 sec)2.4.5 修改表名mysql show tables; ---------------- | Tables_in_test | ---------------- | person | ---------------- 1 row in set (0.00 sec) mysql alter table person rename to employee; Query OK, 0 rows affected (0.01 sec) mysql show tables; ---------------- | Tables_in_test | ---------------- | employee | ---------------- 1 row in set (0.00 sec)
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【C++进阶】C++ 11(中) 2026/10/1 8:34:51

【C++进阶】C++ 11(中)

目录 1 左值与右值 2 左值引用与右值引用 3 引用延长临时对象生命周期 4 重载匹配 5 移动构造 & 移动赋值 6 值类别分类(C11) 7 引用折叠 8 完美转发 std::forward 1 左值与右值 左值 (lvalue):可以取地址,对象拥有持…

阅读更多 →
2026.9.30 Python Vibe Coding 实操 2026/10/1 8:34:51

2026.9.30 Python Vibe Coding 实操

考题一:Excel 报表生成脚本一、需求澄清清单类别详细说明核心目标编写 Python 脚本,自动完成销售原始数据的清洗、统计并输出标准化 Excel 报表输入文件sales_raw.xlsx,固定字段:日期、销售员、产品、数量、单价、地区&#xff1b…

阅读更多 →
RJ45水晶头线序详解:T568A/T568B一张图看懂压线逻辑 2026/10/1 8:34:44

RJ45水晶头线序详解:T568A/T568B一张图看懂压线逻辑

说实话,RJ45这玩意儿,是我入行前半年里最没面子的一道坎。别说压线了,光是把那8根五颜六色的线按顺序排进水晶头,我就练废了差不多一整盒。后来带我的师傅甩给我一张图,说“你把这图看懂了,这辈子压线都不会…

阅读更多 →
MyBatis 从入门到实战(附完整代码) 2026/10/1 8:34:38

MyBatis 从入门到实战(附完整代码)

一、引言摘要:本文面向 MyBatis 初学者,通过「基础认知 → 核心配置 → 高级特性」三阶段学习路线,带你从零搭建可运行 Demo,掌握 Mapper 代理开发、参数传递、动态 SQL、缓存机制与性能优化,并附完整可运行的 CRUD 代…

阅读更多 →
内置 4K 解码与 HDMI 输出的高集成 SoC:SSD203D 在微型投影与商显中的应用 2026/10/1 8:34:38

内置 4K 解码与 HDMI 输出的高集成 SoC:SSD203D 在微型投影与商显中的应用

微型投影、便携大屏、商显一体机与广告机这类产品,核心诉求往往是“把片源解码、画面输出和声音处理用尽量少的芯片完成”。如果还要兼顾电池供电和轻量 UI,主控的集成度直接决定板级成本与开发周期。本文以星宸(SigmaStar)SSD203…

阅读更多 →
接个大模型接口就算AI产品?传统软件设计思维真的没用了? 2026/10/1 8:34:38

接个大模型接口就算AI产品?传统软件设计思维真的没用了?

亲爱的小伙伴,如有帮助请订阅专栏!跟着老师每课一练,系统学习AI产品经理课程! 《AI产品经理入门实战》https://edu.csdn.net/course/detail/41126《Axure原型设计精品课》https://edu.csdn.net/course/detail/40420 一、接个接口…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉