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语句,这会特别麻烦的!!!

相关推荐
通信瓦工8 小时前
利用浊度和电导率测量确定乙二醇基流体的质量
网络·数据库·ai
小马同学-9 小时前
mysql数据库原理
数据库·mysql
东方护航数据恢复(深圳)9 小时前
政务信创案例:达梦 DM8 数据库掉电页损坏,48 小时修复实录【东方护航数据恢复深圳店】
数据库·数据恢复·it运维·服务器数据恢复·二次开盘·硬盘开盘
AC赳赳老秦10 小时前
OpenClaw 数据引用规范自动生成:为公开数据构建可信来源标注与标准引用体系
大数据·开发语言·汇编·数据库·人工智能·deepseek·openclaw
小蒜学长11 小时前
校园社团招新网站的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端·校园社团招新网站
布莱克60512 小时前
MySQL 增删改查(CRUD)语法详解
数据库·mysql·增删改查
Dovis(誓平步青云)12 小时前
几个方案来回选不定?做一个随时切换的候选推荐页
android·java·服务器·开发语言·javascript·数据库·智能化
2501_9336707913 小时前
2027届大数据管理与应用求职数字化转型顾问:项目、SQL、业务理解怎么排优先级
数据库·sql
东方护航数据恢复(深圳)13 小时前
物流案例:勒索病毒 Mallox 加密 ERP 数据库,旧备份 + 残留页重组实录【东方护航数据恢复深圳店】
数据库·数据恢复·勒索病毒·二次开盘·开盘·数据镜像
.Hypocritical.13 小时前
Redis从入门到实战:核心原理、场景落地与避坑指南
数据库·redis·缓存