【MySQL】库操作和表操作

news2024/10/7 2:21:14

文章目录

  • 一、库操作
    • 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.coloradmin.cn/o/1186929.html

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

相关文章

从业务到软件架构——软件建模

一、问题 1.架构到底是什么?架构和业务之间到底什么关系? 2.好的架构的设计出发点是什么?好的架构应该是什么样的? 作为一个计算机领域的词汇,架构的定义是:有关软件整体结构与组件的抽象描述&#xff0c…

ubuntu22.04使用VNC链接服务器远程桌面

一、本地VNC客户端 本地主要需要一个VNC客户端,用来远程连接服务器端的VNC(在不安装Web版本VNC情况下)。VNC客户端下载地址: VNC客户端下载 二、安装Xfce桌面环境 在远程服务器控制台中安装Xfce桌面(这个桌面环境比…

redis持久化和Redis事务

一)Redis持久化之RDBredisDataBase: 什么是持久化: 1)持久性:和持久化说的是同一回事,衡量持久性的前提是重启进程或者是重启主机以后数据是否还存在 持久:把数据存储在硬盘上,那么就是持久性 不持久:把数据存储在内存中 2)redis是一个内存级别的数据库&…

关于electron中使用ffi-napi窗口遍历的过程及问题

使用环境:electorn19 、node16、ffi-napi、user32 前言:这里先提一嘴,windows api也是有32位和64位的区别的,因为我是要快速完成项目,就没用C写(不熟练),我想着直接用易语言写DLL&am…

注册商标-保护企业利益

注册商标-保护企业利益! 在当今竞争激烈的商业环境中,商标对于企业的成功至关重要。商标不仅是企业形象的代表,也是企业产品和服务的标识。通过注册商标,企业可以获得法律保护,确保其商标的独特性和安全性。本文将探讨…

1212. 地宫取宝

题目&#xff1a; 1212. 地宫取宝 - AcWing题库 思路&#xff1a;dp&#xff08;最长上升子序列和摘花生的结合&#xff09; 代码&#xff1a; #include<iostream> using namespace std; const int N 55; const int MOD 1000000007;int n, m, k; int w[N][N];//每个坐…

【Leetcode】【数据结构】【C语言】判断两个链表是否相交并返回交点地址

struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {struct ListNode *tailAheadA;struct ListNode *tailBheadB;int count10;int count20;//分别找尾节点&#xff0c;并顺便统计节点数量&#xff1a;while(tailA){tailAtailA->next;c…

变电站自动化系统中的安全措施分析及应用-安科瑞

安科瑞电气股份有限公司 上海嘉定 201801 摘要&#xff1a;阐述变电运行中的问题&#xff0c;电气自动化系统与安全运行措施&#xff0c;包括自动控制设备的投入&#xff0c;电气自动 化与计算机技术相、设备数据的采集与处理、自动化系统的升级、人工智能技术的应用。 关键…

第三章:人工智能深度学习教程-基础神经网络(第五节-了解多层前馈网络)

让我们了解反向传播网络 (BPN) 中的误差是如何计算的以及权重是如何更新的。 考虑下图中的以下网络。 反向传播网络(BPN) 上图中的网络是一个简单的多层前馈网络或反向传播网络。它包含三层,输入层有两个神经元 x 1和 x 2,隐藏层有两个神经元 z 1和 z 2,输出层有一个神经…

跨平台使用:第三方美颜SDK在多种操作系统上的应用

当下&#xff0c;美颜SDK已经演化为一种跨平台的现象&#xff0c;使用户能够在不同的操作系统上享受到相似的美颜效果。这一现象的背后&#xff0c;有一系列强大的第三方美颜SDK&#xff0c;它们在多种操作系统上广泛应用&#xff0c;为用户提供了卓越的美颜体验。 一、美颜S…

机器人阻抗与导纳控制的区别

机器人自身的非线性动力学&#xff08;由柔软性引起的&#xff09;导致控制精度下降&#xff0c;因此难以描述准确的动力学。 导纳控制和阻抗控制都是基于位置与力关系的模式&#xff0c;被认为具有鲁棒性和安全性。然而&#xff0c;当机器人与刚体接触时&#xff0c;导纳控制常…

Android codec2 视频框架 之输入buffer

文章目录 输入端的内存管理输入数据包buffer结构体的转换 主要的流程如上&#xff0c; 申请内存在CCodecBufferChannel&#xff0c;申请之后回调到MediaCodec。然后应用从MediaCodec获取 将解码数据放到buffer中&#xff0c;CCodecBufferChannel在将这块buffer 送到componet模块…

uniapp:打包ios配置隐私协议框

使用uniapp打包ios 上架商店需要配置隐私协议政策弹窗。当用户点击确定后才能继续操作。 首先manifest.json中配置使用原生隐私政策提示框是不支持ios的。不用勾选。 解决思路&#xff1a; 1、新建页面&#xff1a;iosLogin.vue&#xff0c;pages.json中 这个页面需要放在第一…

20道高频JavaScript面试题快问快答

※其他的快问快答&#xff0c;看这里&#xff01; 10道高频Qiankun微前端面试题快问快答 10道高频webpack面试题快问快答 20道高频CSS面试题快问快答 20道高频JavaScript面试题快问快答 30道高频Vue面试题快问快答 面试中的快问快答 快问快答的情景在面试中非常常见。 在面试过…

[100天算法】-最短无序连续子数组(day 66)

题目描述 给定一个整数数组&#xff0c;你需要寻找一个连续的子数组&#xff0c;如果对这个子数组进行升序排序&#xff0c;那么整个数组都会变为升序排序。你找到的子数组应是最短的&#xff0c;请输出它的长度。示例 1:输入: [2, 6, 4, 8, 10, 9, 15] 输出: 5 解释: 你只需要…

LightingChart JS 5.0 Crack

LightingChart JS快如闪电、交互式且响应灵敏的 2D 和 3D JavaScript图表。下一代、世界上最快的 JS 图表 JS交互示例 交互式示例是一种易于使用的探索工具&#xff0c;可帮助您快速开始了解最重要的概念。在这里您可以实时搜索、查看和编辑图表。 高性能 JS 图表 基于 WebGL…

@ControllerAdvice + @ExceptionHandler 定义全局异常

创建Spring Boot项目&#xff1a;使用Spring Initializr创建一个新的Spring Boot项目。依赖配置&#xff1a;在pom.xml 文件中(方便起见使用的是thymeleaf模板引擎)&#xff1a; <dependencies><dependency><groupId>org.springframework.boot</groupId&…

设计模式之观察者(Observer)

事件处理模型 小朋友睡醒了就哭&#xff0c;饿 写程序模拟这个过程&#xff1a; v1:最简单的就是写程序一直观察着&#xff0c;什么时候哭了就进行处理 /*** 披着面向对象外衣的面向过程*/ public class Main1 {public static void main(String[] args) {boolean cry false…

print(torch.cuda.is_available()) False如何解决?GTX3090

首先介绍环境&#xff1a; 保证Cuda与Pytorch的版本对齐就可以了。 nvcc -V 查看原来装的是cuda11.3版本 去Pytorch官网找到相应指令下载即可&#xff1a; CtrlF&#xff1a;cuda11.3 就在诸多版本中找到啦,一定找 torch的版本cuda版本。我之前错误安装的torch&#xff0c;只…

小程序游戏对接广告收益微信小游戏抖音游戏软件

小程序游戏对接广告是一种常见的游戏开发模式&#xff0c;开发者可以通过在游戏中嵌入广告来获取收益。以下是一些与小程序游戏对接广告收益相关的关键信息&#xff1a; 小程序游戏广告平台选择&#xff1a; 选择适合你的小程序游戏的广告平台非常重要。不同的平台提供不同类型…