【MySQL】库操作和表操作

文章目录

  • 一、库操作
    • 1. 创建数据库
    • 2. 数据库的编码问题
      • 查看系统默认支持的字符集
      • 查看数据库支持的字符集
      • 查看数据库支持的字符集校验规则
      • 校验规则对数据库的影响
    • 3. 操纵数据库
      • 查看数据库
      • 显示创建语句
      • 修改数据库
      • 删除数据库
    • 4. 数据库的备份和恢复
      • 数据库的备份
      • 数据库的恢复
      • 表的删除与恢复
      • 5. 查看连接情况
  • 二、表操作
    • 创建表
    • 查看表结构
    • 修改表
    • 删除表


一、库操作

1. 创建数据库

CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,
create_specification] ...]
create_specification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
  • create database 表示为 固定用法
  • db_name 表示为数据库名称
  • [ IF NOT EXISTS ] 表示可选项
  • CHARACTER SET : 指定数据库采用的字符集
  • COLLATE : 指定数据库字符集的校验规则

💕 创建数据库

create database if not exists test1;

在这里插入图片描述

IF NOT EXISTS 表示:当前数据库不存在 test1,则创建数据库。

在这里插入图片描述

如果已经存在同名的数据库,则会报警,并且不会创建一个同名的数据库。

如果我们想要删除一个数据库,直接输入 drop database 数据库名,当我们删除一个数据库后,该数据库对应的目录也会被删除,若该目录下有表存在,则也会被直接删除。因此不建议随意删除数据库。

创建数据库的本质就是在 /var/lib/mysql 路径下创建一个目录,删除数据库的本质就是在 /var/lib/mysql 下删除一个目录。


2. 数据库的编码问题

创建数据库时,有两个编码集:数据库的字符集数据库的校验集

数据库的字符集 —— 数据库存数据时,采用什么编码

在这里插入图片描述

如果没有对MySQL的配置文件进行过修改,则默认的编码格式时utf8,默认的校验规则是utf8_general_ci。

数据库的校验集 —— 支持数据库,进行字段比较使用的编码,本质是读取数据库中数据的采用的编码格式 ( 查找或匹配数据库,就需要进行比较字段,想要被比较,两者就需要先被读出来,此时两者的校验规则应该相同)

在这里插入图片描述

查看系统默认支持的字符集

💕 系统默认支持的字符集

show variables like 'character_set_database';

在这里插入图片描述

通过查看MySQL系统变量variables 当中的 character_set_database ,可以看到系统默认的字符集。

💕 系统默认支持的字符集校验规则

show variables like 'collation_database';

在这里插入图片描述

通过查看MySQL系统变量variables当中的collation_database,可以得知系统默认的字符集校验规则。


查看数据库支持的字符集

show charset;

在这里插入图片描述

字符集主要是控制用什么语言,例如:utf8 就可以使用中文。


查看数据库支持的字符集校验规则

show collation;

在这里插入图片描述


校验规则对数据库的影响

💕 字符集编码格式和字符集校验规则的区别

  • 字符集编码格式指的是在存储数据时各个字符的底层编码,用于指定数据的存储格式。
  • 字符集校验规则是在字符集内用于比较字符的一套规则,用于对数据进行对比。

例如我们在存储数据时是按照utf8的格式进行存储的,那么将来在对数据进行做对比时也必须按照utf8的格式进行对比,因为 “存数据” 和 “取数据” 的方式必须保持一致。

💕 校验规则对数据库的影响

字符集编码格式和校验规则必须是对应的,但实际上同一种字符集编码格式一般会有多种可选择的校验规则,比如 utf8编码格式的校验规则有 utf8_general_ci、utf8_bin、utf8_unicode_ci等校验规则。使用不同的校验规则操作数据库中的数据可能会得到不同的结果。例如:utf8_general_ci校验规则在进行比对数据时是不区分大小写的,而utf8_bin校验规则在对比数据时是区分大小写的。


3. 操纵数据库

查看数据库

使用show databases SQL可以查看系统中所有的数据库。

show databases;

在这里插入图片描述


显示创建语句

使用 show create database 数据库名 SQL 可以查看对应数据库的创建语句。

show create database test1;

在这里插入图片描述

/*!40100 DEFAULT CHARACTER SET utf8 */ 不是表示注释,而是表示当前MySQL的版本如果大于 4.10,则执行后面的SQL语句。


修改数据库

ALTER DATABASE db_name [[DEFAULT] CHARSET=character_name] [[DEFAULT] COLLATE=collation_name];

这里的修改数据库指的是修改数据库的字符集或校验规则。

在这里插入图片描述


删除数据库

DROP DATABASE [IF EXISTS] db_name;

删除数据库后该数据库对应的文件夹就被删除了。

在这里插入图片描述

这里需要说明的是,删除数据库后,该数据库下的所有表也会都被级联删除,因此不要随便删除数据库。


4. 数据库的备份和恢复

数据库的备份

首先,我们先创建一个数据库并且向其中插入一张表。

在这里插入图片描述

对指定数据库进行备份的命令:

mysqldump -P 端口号 -u 用户名 -p 密码 -B 数据库名1 数据库名2 ...  > 数据库备份存储的文件路径

在这里插入图片描述

打开test.sql,我们可以发现文件中的内容就是我们在该数据库中执行的各种SQL命令,包括创建数据库、创建表、插入数据等SQL语句。

在这里插入图片描述


数据库的恢复

恢复数据库的SQL语句:

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

先将指定数据库删除:

在这里插入图片描述

恢复数据库:

source /root/MySQL/test.sql

在这里插入图片描述

这里我们可以看到数据库已经被恢复出来了。

在这里插入图片描述


表的删除与恢复

💕 表备份

mysqldump -P3306 -u root -p Test student > /root/MySQL/table.sql

在这里插入图片描述

将表删除掉:

在这里插入图片描述

💕 表恢复

source /root/MySQL/table.sql;

在这里插入图片描述
在这里插入图片描述

这里我们看到表已经被完全恢复出来了。


5. 查看连接情况

使用 show processlist SQL来查看当前连接MySQL的用户。

show processlist;

在这里插入图片描述

  • Id列:一个标识,可以在MySQL中通过kill id杀死指定id的线程。
  • User列:显示当前用户,如果不是root,这个命令就只显示你权限范围内的SQL语句。
  • Host列:显示这个语句是从哪个IP的哪个端口上发出的,可用来追踪出问题语句的用户。
  • db列:当前执行的命令是在哪一个数据库上,如果没有指定数据库,则该值为NULL。
  • Command列:显示当前连接执行的命令,一般就是休眠(Sleep)、查询(Query)和连接(Connect)。
  • Time列:表示该线程处于当前状态的时间,单位是秒。\nState列:显示使用当前连接的SQL语句的状态。
  • Info列:一般记录的是线程执行的语句,默认只显示前100个字符,如果要看全部信息,需要使用show full processlist。

show processlist可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登录的,那么很有可能你的数据库被人入侵了,以后如果发现自己的数据库比较慢时,可以用这个SQL来查看数据库连接情况。


二、表操作

表操作至少需要会下面两类的SQL语句:

  • DDL(Data Definition Language)数据定义语言:比如建表、删表、该表、新增列、删除列等。
  • DML(Data Manipulation Language)数据操作语言:比如插入记录、删除记录、修改记录等。

创建表

创建表的SQL语句如下:

CREATE TABLE [IF NOT EXISTS] table_name(field1 datatype1 [COMMENT '注释信息'],field2 datatype2 [COMMENT '注释信息'],field3 datatype3  [COMMENT '注释信息']
)[CHARSET=charset_name] [COLLATE=collation_name] [ENGINE=engine_name];
  1. SQL中大写的表示关键字,[ ]中代表的是可选项。
  2. field表示列名,datatype表示列的类型。
  3. CHARSET用于指定表所采用的编码格式,如果没有指定则以所在数据库的编码格式为准。
  4. COLLATE用于指定表所采用的校验规则,如果没有指定则以所在数据库的校验规则为准。
  5. ENGINE用于指定表所采用的存储引擎。
  6. COMMENT用于对指定列添加注释信息。

这里我们需要注意的是:MySQL默认使用的是InnoDB存储引擎,如果没有指定使用哪种存储引擎那么就会默认使用InnoDB存储引擎。


💕 创建表
在这里插入图片描述


查看表结构

使用 desc 表名 SQL可以查看表的结构。

desc user;

在这里插入图片描述

  • Field表示该字段的名字。
  • Type表示该字段的类型。
  • Null表示该字段是否允许为空。
  • Key表示索引类型,比如主键索引为PRI。
  • Default表示该字段的默认值。
  • Extra表示该字段的额外信息说明。

如果想要查看创建表时的相关细节,可以使用 show create table 表名SQL。如下:

show create table user\G

在这里插入图片描述


修改表

修改表的 SQL如下:

ALTER TABLE table_name ADD 新增列名 新增列的属性;ALTER TABLE table_name MODIFY 列名 修改后的列属性;ALTER TABLE table_name DROP 列名;ALTER TABLE table_name RENAME [TO] 新表名;ALTER TABLE table_name CHANGE 列名 新列名 新列属性;

先看一下表中原有的信息:

在这里插入图片描述

💕 新增列

alter table user add path varchar(128) comment '照片路径' after password;

在这里插入图片描述

新增一列SQL语句中的after表示将该列新增到哪一列之后,如果想要将新增列放在第一列,可以将after及其之后的语句换成 not null first

通过desc命令查看确认新增成功。

在这里插入图片描述

这时我们插入一条用户信息后查看表中的信息就一目了然了。

在这里插入图片描述


💕 修改列类型

将user表中的password列的类型由char(30)改成char(50)。如下:

alter table user modify password char(50) comment '用户密码';

在这里插入图片描述

这里需要注意的是,如果需要修列类型后仍然保留comment字段,需要在修改时重新指定comment字段。


💕 修改列名

将user表中的password列的列明改成passwd。如下:

alter table user change password passwd char(50) comment '用户密码';

在这里插入图片描述


💕 修改表名

将表user的名字改成People

alter table user rename People;

在这里插入图片描述


💕 删除列

将user表中的birthday列删除。

alter table user drop birthday;

在这里插入图片描述

删除列后,该列所对应的内容全部都没有了。


删除表

DROP [TEMPORARY] TABLE [IF EXISTS] table_name;
  • 在创建表语句中加上TEMPORARY关键字,那么服务器将创建出一个临时表,该表会在你与服务器的会话终止时自动消失。
  • TEMPORARY表的名字可以与某个已有的永久表相同,当有TEMPORARY表存在时,对应的永久表会隐藏起来(即无法访问)。
  • 为了避免重新连接后(TEMPORARY已经不存在),在未做检测的情况下调用DROP误删了对应永久表,因此在使用DROP删除临时表时需要带上TEMPORARY关键字。

删除掉user表如下:

在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/136120.shtml

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

相关文章

二分详解(整数二分、浮点二分,附加例题)

一、二分 1.二分性质 二分的本质&#xff1a;二分可以将边界点二分出来&#xff08;即一部分满足这个条件&#xff0c;一部分不满足这个条件&#xff09; 二分的时候也一定有解 2.整数二分 1.寻找红色边界点x int l0,rn-1; while(l<r) {int mid(lr1)/2;if(check(mid))l…

MATLAB中Stem3函数用法

目录 语法 说明 向量和矩阵数据 表数据 其他选项 示例 行向量输入 列向量输入 矩阵输入 使用向量输入指定针状线条位置 使用矩阵输入指定针状线条位置 填充标记 线型、标记符号和颜色选项 线型、标记符号和颜色选项 其他样式选项 绘制表中的数据 特定坐标区上…

JS逆向爬虫---请求参数加密②【某麦数据analysis参数加密】

主页链接: https://www.qimai.cn/rank analysis逆向 完整参数生成代码如下&#xff1a; const {JSDOM} require(jsdom) const dom new JSDOM(<!DOCTYPE html><p>hello</p>) window dom.windowfunction customDecrypt(n, t) {t t || generateKey(); //…

kubernetes集群编排——k8s资源监控

资源限制 上传镜像 [rootk8s2 limit]# vim limit.yaml apiVersion: v1 kind: Pod metadata:name: memory-demo spec:containers:- name: memory-demoimage: stressargs:- --vm- "1"- --vm-bytes- 200Mresources:requests:memory: 50Milimits:memory: 100Mi [rootk8s2…

竞赛选题 深度学习机器视觉车道线识别与检测 -自动驾驶

文章目录 1 前言2 先上成果3 车道线4 问题抽象(建立模型)5 帧掩码(Frame Mask)6 车道检测的图像预处理7 图像阈值化8 霍夫线变换9 实现车道检测9.1 帧掩码创建9.2 图像预处理9.2.1 图像阈值化9.2.2 霍夫线变换 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分…

Vim编辑器学习

B站学习vim指令链接 1&#xff1a;vim下有两种模式&#xff0c;一种是命令模式&#xff0c;一种是编辑模式 2&#xff1a;命令到编辑模式&#xff0c;按键盘i&#xff0c;编辑到命令格式按Esc 3&#xff1a;&#xff1a;wq 保存并退出 &#xff1a;wq code.c保存并把文件命名为…

ubuntu, nvidia driver, cuda, cudnn, pytorch-gpu版本安装

文章目录 1.常用指令1.1查看cpu是intel还是amd:1.2.查看ubuntu版本1.3.查看架构1.4.查看已安装的nvidia驱动1.5.进入tty模式 2.安装ubuntu22.04 和 nvidia 驱动3.ubuntu 安装 anaconda4.安装pytorch gpu版本5.安装完整版cuda 和 cudnn6.nvidia-driver, cuda-toolkit, cudnn 1.常…

AI:66-基于机器学习房价预测

🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌在这个漫长的过程,中途遇到了不少问题,但是…

机器视觉的试卷批改系统 - opencv python 视觉识别 计算机竞赛

文章目录 0 简介1 项目背景2 项目目的3 系统设计3.1 目标对象3.2 系统架构3.3 软件设计方案 4 图像预处理4.1 灰度二值化4.2 形态学处理4.3 算式提取4.4 倾斜校正4.5 字符分割 5 字符识别5.1 支持向量机原理5.2 基于SVM的字符识别5.3 SVM算法实现 6 算法测试7 系统实现8 最后 0…

【算法设计】回溯法算法设计——骑士游历问题(C++实现)

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 更多算法分析与设计知识专栏&#xff1a;算法分析&#x1f525; 给大家跳…

【1++的Linux】之线程(三)含生产者消费者模型

&#x1f44d;作者主页&#xff1a;进击的1 &#x1f929; 专栏链接&#xff1a;【1的Linux】 文章目录 一&#xff0c;可重入与线程安全二&#xff0c;死锁三&#xff0c;线程同步什么是线程同步&#xff1f;怎么实现线程同步条件变量 四&#xff0c;生产者与消费者模型1&…

C++ Qt 学习(三):无边框窗口设计

1. 无边框窗口 1.1 主窗口实现 MainWidget.h #pragma once#include <QtWidgets/QWidget> #include "CTitleBar.h" #include "CFrameLessWidgetBase.h"// 主窗口 MainWidget 继承自无边框窗口公用类 CFrameLessWidgetBase class MainWidget : publi…

FreeRTOS学习笔记(二)

一、时间片调度 1、同等优先级任务轮流地享有相同的 CPU 时间(可设置)&#xff0c; 叫时间片&#xff0c;在FreeRTOS中&#xff0c;一个时间片就等于SysTick 中断周期 /* 任务一&#xff0c;实现LED0每500ms翻转一次 */ void task1( void * pvParameters ) {uint32_t task1_n…

统计一个只包含大写字母的字符串中顺序对的数量.其中顺序对的定义为前面的字符小后面的字符大.例如在“ABC“中的顺序对为3,因为有AB,AC,BC

哈希法&#xff1a;扫描字符串&#xff0c;将出现的字符次数加1&#xff0c;统计比当前字符字典序小的字母出现的次数&#xff0c;即为顺序串的个数。 int CounSq(const char* arr)//时间复杂度O&#xff08;n&#xff09; {int sig[26] { 0 };int index 0;int sum 0;for (…

【自然语言处理】基于python的问答系统实现

一&#xff0c;文件准备 该问答系统是基于已知的问题和其一一对应的答案进行实现的。首先需要准备两个文本文件&#xff0c;分别命名为“question.txt”和“answer.txt”&#xff0c;分别是问题文件和答案文件&#xff0c;每一行是一个问题以及对应的答案。 问题文件: 中国的首…

C++ Qt 学习(四):自定义控件与 qss 应用

1. qss 简介 Qt style sheet&#xff08;qss&#xff0c;Qt 样式表&#xff09;&#xff0c;不需要用 C 代码控件进行重载&#xff0c;就可以修改控件外观&#xff0c;类似于前端的 css 2. qss 选择器 2.1 通配符选择器 /* 设置后控件窗口背景色都被修改为黄色 */ * {backg…

【OpenCV实现图像:用OpenCV图像处理技巧之白平衡算法】

文章目录 概要加载样例图像统计数据分析White Patch Algorithm小结 概要 白平衡技术在摄影和图像处理中扮演着至关重要的角色。在不同的光照条件下&#xff0c;相机可能无法准确地捕捉到物体的真实颜色&#xff0c;导致图像呈现出暗淡、色调不自然或者褪色的效果。为了解决这个…

项目实战:中央控制器实现(2)-优化Controller,将共性动作抽取到中央控制器

1、FruitController FruitController已经和Web没有关系了&#xff0c;和Web容器解耦&#xff0c;可以脱离Web容器做单元测试 package com.csdn.fruit.controller; import com.csdn.fruit.dto.PageInfo; import com.csdn.fruit.dto.PageQueryParam; import com.csdn.fruit.dto.R…

5G与物联网应用:新一代网络技术融合开创新时代

5G与物联网应用&#xff1a;新一代网络技术融合开创新时代 随着信息技术的不断演进&#xff0c;5G和物联网作为新一代网络技术&#xff0c;正在引领我们走向一个更加智能化、互联互通的新时代。本文将分析5G与物联网应用的技术原理、应用场景与发展趋势&#xff0c;并探讨它们…

软件测试|selenium执行js脚本

JavaScript是运行在客户端&#xff08;浏览器&#xff09;和服务器端的脚本语言&#xff0c;允许将静态网页转换为交互式网页。可以通过 Python Selenium WebDriver 执行 JavaScript 语句&#xff0c;在Web页面中进行js交互。那么js能做的事&#xff0c;Selenium应该大部分也能…