MySQL --- MySQL库和表的操作

MySQL库和表的操作

一、库的操作

1.1创建数据库

复制代码
create database [if not exists] db_name [charset / character set=XXX collate=xxx];

在所有sql语法中凡是带有 的都是选择性的去写,可以不用写的。

(1)if not exists 是 MySQL 中一个防止报错的从句,意思是:"如果这个东西不存在,才执行操作;如果已经存在,就什么也不做(也不会报错)"。

(2)charset / character=XXX 是 设置指定的MySQL的编码集,所谓编码集通俗来讲就是把数据按特定的格式进行存储( / 代表或者)。

(3)collate=XXX 是 设置指定的MySQL的校验集,所谓校验集通俗来讲就是比对这些数据时按什么规则排顺序、是否区分大小写等。

当我们不写设置编码集,校验集时,系统默认会采用就近原则,使用my.cnf配置文件里所配置的编码集,校验集;若配置文件里面没有进行配置,则系统会自动将编码集设置为utf8(老版本) / utf8mb3(新版本),校验集设置为utf8_general_ci(老版本) / utf8_general_ci(新版本)。

在/var/lib/mysql目录下可以查看到刚刚创建的db_test1数据库。

在MySQL5.7版本及其更老的版本这个数据库文件里面默认只有一个db.opt文件,文件的内容就是你创建的数据库所设置的编码集和校验集。

在MySQL8.0版本及以上的版本,这个db.opt文件被取消了,数据库的编码和校验信息被统一放到了系统表空间的数据字典里管理(了解即可),新版本可以直接使用sql语句来查看数据库的编码和校验信息:

复制代码
use db_name;
seletc @@character_set_database, @@collation_database;

1.2查询数据库

1.2.1查询所有的数据库

复制代码
show databases;

1.2.2查询一个数据库的具体创建信息

复制代码
show create database db_name; 

\G代表格式化输出,去除了一些无关紧要的内容。

1.2.3查看你在当前哪个数据库

复制代码
select database();

1.3修改数据库

首先修改数据库是不能修改数据库名称的,这是不支持的,可供修改的仅有数据库编码集,校验集这些内容。(这个就不演示了)

复制代码
alter database db_name charset=XXX / character set=XXX collat=XXX;

1.4删除数据库

复制代码
drop database db_name;

1.5备份数据库

下面操作会结合对表的操作:创建了一个db_test2的数据库,往库中创建了一个student表,表中有id、name、age、birthday 4个字段(什么叫字段后面会讲),并往表中插入了一些数据。

1.5.1备份一个数据库

此些操作需要在mysql外部使用:

复制代码
mysqldump -P端口号 -u登录用户 -p -B 数据库名 > 备份文件的绝对路径

-B参数是数据库的名称,若没有带这个参数,则你在恢复这个数据库的时候需要先创建这个数据库,在use进入,再恢复数据。

vim打开test.sql文件:

可以观察到备份的是对此库的历史所有操作都备份了。

1.5.2备份多个数据库

复制代码
mysqldump -P端口号 -u登录用户 -p -B 数据库名1 数据库名2 > 备份文件的绝对路径

1.5.3备份一个/多个表

复制代码
mysqldump -P端口号 -u登录用户 -p -B 数据库名 表名1[表名n] > 备份文件的绝对路径

1.6恢复数据库

此语句需要在mysql内部使用。

复制代码
source 备份文件的绝对路径;

二、表的操作

2.1创建表

复制代码
create table student(
	属性列1 数据类型及大小 描述 依赖等,
	属性列2 数据类型及大小 描述 依赖等,
	.......
	属性列n 数据类型及大小 描述 依赖等,
);

)和;之间也可以像创建数据库一样设置编码集和校验集,以及存储引擎engine,这个与索引,存储文件的后缀,数量有关,这里也不重点介绍。

本篇博客仅介绍如何创建表,重点不是内部的字段这些,这些后续博客会介绍。

2.2查询表

2.2.1查询一个库中所有的表

复制代码
show tables;

2.2.2查询一个表的详细信息

复制代码
desc table_name;

2.2.3查询一个表创建时的详细信息

复制代码
show create table table_name;

2.3修改表

2.3.1新增列

复制代码
alter table table_name add new属性列 数据类型及大小 描述 依赖等 after 指定属性列的列名;

after 指定属性列的列名 --- 表示新增到指定属性列的后面。

查询student表详细结构信息:

可以看到在name字段后面新增了一个sex性别的属性列。

2.3.2修改列

复制代码
alter table table_name modify 属性列 new数据类型/长度 描述 依赖等;

观察到name属性列的大小从32修改为了60。

2.3.3重命名 - - - 也属于修改

2.3.3.1重命名表名
复制代码
alter table table_name rename [to] newtable_name;

观察到表名由原来的student重命名成了xueshengbiao。

2.3.3.2重命名列名
复制代码
alter table table_name change old属性列名 new属性列名 new数据类型及大小 描述 依赖等;

观察到原来属性列为name的重命名成了xingming,并且数据类型大小重新修改成了32。

2.3.4删除列

复制代码
alter table table_name drop 属性列;

2.4删除表

复制代码
drop table table_name;

三、其他操作

3.1查询连接情况

复制代码
show processlist;

此语句可以查看谁在连接,在干什么的信息。

3.2插入表数据

insert语句不是DDL(数据定义语言),而是DML(数据操纵语言),本次只认识一下,不会深讲。

复制代码
insert into table_name (属性列1, 属性列2, ......, 属性列n) values (值1, 值2, ......, 值n);

3.3查询表内容

select语句属于DML中的DQL(数据查询语言)。

复制代码
select * from table_name;

四、注意事项

上面介绍了有关数据库和表的增删查改的操作,其中一定不要轻易的去执行删除和修改相关的sql语句,这会特别麻烦的!!!

相关推荐
雨辰AI5 小时前
SpringBoot3 整合达梦 DM9 超详细入门实战|从零搭建可直接上线
数据库·微服务·架构·政务
我是一颗柠檬5 小时前
【MySQL全面教学】MySQL性能优化实战Day13(2026年)
数据库·后端·sql·mysql·性能优化·database
AI人工智能+电脑小能手5 小时前
【大白话说Java面试题 第84题】【Mysql篇】第14题:为什么用 InnoDB 存储引擎的表建议用整型的自增主键?
java·开发语言·数据库·mysql·面试
张彦峰ZYF6 小时前
检索增强生成(RAG)系统的基础:全面深入矢量数据库
数据库·大模型·rag
牧羊狼的狼6 小时前
MySQL 四大索引失效写法 + 业务替代最优解决方案
mysql·索引失效
Elastic 中国社区官方博客7 小时前
我们如何在 Elasticsearch Serverless 上将向量搜索吞吐量提升一倍
大数据·数据库·人工智能·elasticsearch·搜索引擎·云原生·serverless
一 乐7 小时前
高校实习信息发布网站|基于Spring Boot的高校实习信息发布网站的设计与实现(源码+数据库+文档)
java·数据库·spring boot·后端·论文·毕设·高校实习信息发布网站
Dxy12393102167 小时前
三种方式避坑:案例 + 解决方法
python·mysql
zgl_200537797 小时前
源代码:跨数据库通用SQL语法解析与标注拆解
大数据·数据库·数据仓库·sql·etl·源代码管理
雪度娃娃8 小时前
存储器层次结构——磁盘硬盘存储
服务器·网络·数据库·计算机组成原理