MySQL -操作

news/2025/3/7 1:52:56/

博客主页:【夜泉_ly】
本文专栏:【暂无
欢迎点赞👍收藏⭐关注❤️

在这里插入图片描述

文章目录

我的版本号:8.0.41-0ubuntu0.22.04.1

创建数据库

格式

CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name[create_option] ...create_option: [DEFAULT] {CHARACTER SET [=] charset_name| COLLATE [=] collation_name| ENCRYPTION [=] {'Y' | 'N'}
}

本质就是在 /var/lib/mysql 中创建一个目录。

其中:

  • {DATABASE | SCHEMA}
    databaseschema 选一个输就行,这两个等价。
  • [IF NOT EXISTS] (可选)
    加了这条,创建时如果存在会报错。
  • [create_option] (可选)
    • CHARACTER SET,指定默认数据库字符集。
    • COLLATE,指定默认数据库校验规则。
    • ENCRYPTION,MySQL 8.0.16引入,
      和加密有关,默认Y

注:大写的是关键字,输的时候不用管大小写。
如,要查询当前的版本号和日期,下面的输入是等价的:

mysql> SELECT VERSION(), CURRENT_DATE;
mysql> select version(), current_date;
mysql> SeLeCt vErSiOn(), current_DATE;

在这里插入图片描述

一个完整示例:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)mysql> create database if not exists test_db;
Query OK, 1 row affected (0.01 sec)mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test_db            |
+--------------------+
5 rows in set (0.00 sec)mysql> create database if not exists test_db;
Query OK, 1 row affected, 1 warning (0.00 sec)

上面的 (0.00 sec) 没多大意义,不用管。

编码集

创建数据库时,有两个编码集:

  1. 数据库字符集:(怎么写)
    定义数据存储格式的字符编码集,
    控制写入/读取时的解析方式。

  2. 数据库校验集:(怎么读)
    定义数据比较/排序的编码规则,
    是底层数据处理的字符编码格式。

数据库执行任何操作时,
需确保该操作涉及的编码始终与数据库编码集保持一致。

查看默认数据库字符集:

mysql> show variables like 'character_set_database';
+------------------------+---------+
| Variable_name          | Value   |
+------------------------+---------+
| character_set_database | utf8mb4 |
+------------------------+---------+
1 row in set (0.01 sec)

查看默认数据库校验集:

mysql> show variables like 'collation_database';
+--------------------+--------------------+
| Variable_name      | Value              |
+--------------------+--------------------+
| collation_database | utf8mb4_0900_ai_ci |
+--------------------+--------------------+
1 row in set (0.00 sec)

查看不同场景默认的校验集:

mysql> show variables like 'collation_%';
+----------------------+--------------------+
| Variable_name        | Value              |
+----------------------+--------------------+
| collation_connection | utf8mb4_0900_ai_ci |
| collation_database   | utf8mb4_0900_ai_ci |
| collation_server     | utf8mb4_0900_ai_ci |
+----------------------+--------------------+
3 rows in set (0.01 sec)

连接、数据库、服务器,都是 utf8mb4。

查看数据库支持的字符集 show charset;
查看数据库支持的校验集 show collation;

创建数据库时:

  • 没指定字符集和校验集,使用默认的
    CREATE DATABASE my_database;
    
  • 指定了,就使用指定的
    CREATE DATABASE my_database CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
    

示例:
创建两个数据库,其校验集分别使用:
utf8mb4_0900_ai_ci (不区分大小写)
utf8mb4_0900_bin (区分大小写)

create database test_db1 collate utf8mb4_0900_ai_ci;
use test_db1;
create table person(name varchar(20));
insert into person values('a');
insert into person values('A');
insert into person values('b');
insert into person values('B');
create database test_db2 collate utf8mb4_0900_bin;
use test_db2;
create table person(name varchar(20));
insert into person values('a');
insert into person values('A');
insert into person values('b');
insert into person values('B');

找小写的字符 a

select * from person where name='a';
  • 对于 utf8mb4_0900_ai_ci
    在这里插入图片描述
  • 对于utf8mb4_0900_bin
    在这里插入图片描述

操控数据库

查看数据库

查看数据库

show databases;

查看use了哪个数据库

select database();

修改数据库

ALTER {DATABASE | SCHEMA} [db_name]alter_option ...alter_option: {[DEFAULT] CHARACTER SET [=] charset_name| [DEFAULT] COLLATE [=] collation_name| [DEFAULT] ENCRYPTION [=] {'Y' | 'N'}| READ ONLY [=] {DEFAULT | 0 | 1}
}

刚刚不是创建了数据库吗,
如果发现有 alter_option 写错了,这里可以改。

但需注意:字符集和校验集,
你改了其中一个,另一个可能会被影响。

在这里插入图片描述
注:

  • 数据库名的反引号'',防止数据库名是关键字。
  • /**/在这里不是注释:
    版本大于 4.01 执行第一个 /**/ ,大于 8.0016 执行第二个 /**/

删除数据库

不要随意删除数据库

DROP {DATABASE | SCHEMA} [IF EXISTS] db_name

本质就是在 /var/lib/mysql 中删除对应目录。
而Linux中,你删一个东西,一般贼难恢复,所以慎用。

备份与还原

这里只演示一种较简单的方法:

备份:

mysql> mysqldump -P3306 -u root -p 密码 -B 数据库> 数据库备份存储的文件路径

-B 参数的作用是备份整个数据库
包括我们历史上的所有操作,
比如数据库的创建语句。

还原:

mysql> source 数据库备份存储的文件路径;

如果不带 -B,需要先创建数据库,再还原。

部分表操作

创建表

用法:

CREATE TABLE table_name (
field1 datatype,
field2 datatype,
field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎;

选项还有很多,可以去手册看。

示例:

mysql> create table if not exists user1(-> id int,-> name varchar(20) comment '用户名',-> password char(32) comment '用户的密码',-> birthday date comment '用户的生日'-> )engine MyIsam;
Query OK, 0 rows affected (0.01 sec)

comment 表示描述
创建表时,最后一个字段不要加逗号。

用不同的存储引擎,创建的文件不同,
且不同的MySQL版本,创建的文件可能也不同(5.6之前,每个数据库表都会生成一个 .frm 文件)

由于用的是 MyIsam 存储引擎,此时的数据库中会创建三个文件:
在这里插入图片描述
如果用默认的 InnoDB 存储引擎,会创建一个文件:
在这里插入图片描述

查看表

查看有哪些表:

show tables;

查看详细信息:

desc 表名;

在这里插入图片描述
查看创建表时的详细信息:

show create table user1 \G

\G 用于格式化输出结果,和代替分号 ;
在这里插入图片描述

查看表中所有信息:

SELECT * FROM 表名;

在这里插入图片描述

修改表

改名字

RENAME TABLEtbl_name TO new_tbl_name[, tbl_name2 TO new_tbl_name2] ...

或者

ALTER TABLE old_table RENAME new_table;

rename 不同于 alter ,可以一次改多张表。

插入信息

INSERT INTO 表名 (列名) VALUES (值);

在这里插入图片描述
插入时理论上要在 values 前带上对应的列名称,
如果不带,默认所有列都要插入。

插入新的列

alter table user1 add image_path varchar(128) comment '这个是用户的头像路径' after birthday;

在这里插入图片描述
修改列的属性

alter table user1 modify name varchar(60);

在这里插入图片描述
以前的comment不见了。
说明是覆盖改。这一列的属性都被改。

在这里插入图片描述


希望本篇文章对你有所帮助!并激发你进一步探索编程的兴趣!
本人仅是个C语言初学者,如果你有任何疑问或建议,欢迎随时留言讨论!让我们一起学习,共同进步!


http://www.ppmy.cn/news/1576919.html

相关文章

大模型学习笔记------Llama 3模型架构简介

大模型学习笔记------Llama 3模型架构 1、整体网络结构2、主要创新点3、其他关键改进点 LLaMA(Large Language Model Meta AI)系列模型是Meta发布并开源,分别在2023年2月、2023年7月和2024年4月发布了经历了LLaMA 1、LLaMA 2和LLaMA 3模型。本文只讲相对比较成熟、性…

(模拟 反转字符串中的单词)leetcode 151

这个题我们用一个vector<string>s1的容器存放所有的单词&#xff0c;建立string ans再倒序依次添加s[i]再添加空格返回 如何正确地讲单词存入ans? 答&#xff1a;1.使用substr提取单词 2.建立left变量 这算核心的思路了&#xff0c;详解注释看代码的解析 还有更简单的…

OCCT 学习笔记:创建瓶子教程的三个关键知识点

对OCCT已经有了多年了解&#xff0c;但时不时还是要翻一翻它的官方文档。今天重读了&#xff1a;Bottle Tutorial 教程概况 这篇教程文档围绕使用Open CASCADE Technology进行3D建模展开&#xff0c;以创建一个瓶子模型为例&#xff0c;逐步介绍建模过程及相关技术要点&#x…

376_C++_云透传,板端负责处理透传数据的API函数,用于实现客户端对设备内部接口的访问(VMS把数据直接传给板端内部)

RsApi_PassThrough 云透传,板端负责处理透传数据的API函数,用于实现客户端对设备内部接口的访问(VMS把数据直接传给板端内部) 我来分析一下 RsApi_PassThrough 函数的作用和实现逻辑: 1. 功能概述 RsApi_PassThrough 是一个透传接口,用于处理 /API/Http/PassThrough 的…

面试高频考点:一文吃透并发Concurrency与并行Parallelism

并发&#xff08;Concurrency&#xff09;和并行&#xff08;Parallelism&#xff09;是系统设计中最容易被误解的两个概念。 虽然它们听起来很相似&#xff0c;但实际上指的是处理任务的两种截然不同的方法。 简单来说&#xff0c;一个是关于同时管理&#xff08;manage&…

FPGA学习(一)——DE2-115开发板编程入级

FPGA学习&#xff08;一&#xff09;——DE2-115开发板编程入级 一、实验目的 通过 1 位全加器的详细设计&#xff0c;深入掌握原理图输入以及 Verilog 的两种设计方法&#xff0c;熟悉 Quartus II 13.0 软件的使用流程&#xff0c;以及在 Intel DE2-115 开发板上的硬件测试过…

用CLI操作MySQL 92数据库的命令

打开CLI&#xff1a; 输入数据库root密码&#xff1a; 注意&#xff1a;root密码在安装MySQL数据库时创建。需要记住。 查看数据库&#xff0c;可以参考库-表-列的顺序&#xff0c;先查看数据库库&#xff1a; show databases&#xff1b;再查看数据cfriends_db数据库中的数据…

HarmonyOS学习第12天:解锁表格布局的奥秘

表格布局初相识 不知不觉&#xff0c;我们在 HarmonyOS 的学习旅程中已经走到了第 12 天。在之前的学习里&#xff0c;我们逐步掌握了 HarmonyOS 开发的各种基础与核心技能&#xff0c;比如组件的基本使用、布局的初步搭建等&#xff0c;这些知识就像一块块基石&#xff0c;为我…