【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表如下:

在这里插入图片描述


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

外部访问K8S集群内部的kafka集群服务

不许转载 kafka 部署 把 kafka 部署到 k8s 后,我们肯定是通过 service 从 k8s 外部访问 kafaka。这里的 service 要么是 NodePort, 要么是 LoadBalancer 类型。我们使用的方式是 LoadBalancer。 我们先看下面这张图,这是 kafka 在集群中的网…

pytest一些常见的插件

Pytest拥有丰富的插件架构,超过800个以上的外部插件和活跃的社区,在PyPI项目中以“ pytest- *”为标识。 本篇将列举github标星超过两百的一些插件进行实战演示。 插件库地址:http://plugincompat.herokuapp.com/ 1、pytest-html&#xff…

数据集笔记:Telecom Shanghai Dataset

0 数据地址 📱Telecom Shanghai Dataset (kaggle.com) 1 数据描述 该数据集由上海电信提供,包含超过720万条记录,记录了9481部手机通过3233个基站访问互联网的情况,时间跨度为六个月。例如,下图显示了基站的分布情况…

Visual Components应用解决方案 衡祖仿真

Visual Components可为客户量身设计及规划自动化产线系统,作为全方位的数位规划工具,它能够从制程规划、生产到销售皆能够整合在单一平台,有助于内部的技术沟通及外部销售。此外利用Visual Components整合物流及机器人模拟功能,可…

【Python3】【力扣题】242. 有效的字母异位词

【力扣题】题目描述: 【Python3】代码: 1、解题思路:若字符串长度相同,依次遍历元素,比较两个字符串的该元素个数是否相同。【耗时长】 知识点:len(...):获取序列(字符串、列表等&…

新零售时代,传统便利店如何转型?

在零售批发业,如何降低各环节成本、提高业务运转效率、更科学地了解客户服务客户,是每家企业在激烈竞争中需要思考的课题。 对零售批发企业来说,这些问题或许由来已久: (1)如何对各岗位的员工进行科学的考…

若依框架前后端分离版,集成数据库版本控制flyway

在admin模块的pom.xml增加依赖 <!-- 数据库版本控制 --><dependency><groupId>org.flywaydb</groupId><artifactId>flyway-core</artifactId><version>7.15.0</version></dependency>在admin模块下的resources 的配置文…

微信机器人接口开发

E云 是一套完整的的第三方服务平台&#xff0c;包含微信API服务、企微API服务、SCRM系统定制、企微系统定制、服务类软件定制等模块&#xff0c;本文档主要讲述个微API服务相关&#xff0c;以下简称API&#xff0c;它能处理用户微信中的各种事件&#xff0c;提供了开发者与个微…

OceanMind海睿思再次携手中冶华天,持续助力数字化转型升级!

近日&#xff0c;中新赛克海睿思 再次与 世界500强企业旗下重要骨干企业——中冶华天工程技术有限公司&#xff08;以下简称“中冶华天”&#xff09;达成深度战略合作&#xff0c;为中冶华天提供智能风控分析平台、智能数仓及指标管理平台等服务&#xff0c;携手推进中冶华天“…

Mac电脑Visio文件编辑查看软件推荐Visio Viewer for Mac

mac版Visio Viewer功能特色 在Mac OS X上查看Visio绘图和图表 在Mac OS X上轻松查看MS Visio文件 在Mac上快速方便地打开并阅读Visio文件&#xff08;.vsd&#xff0c;.vsdx&#xff09;。 支持通过放大&#xff0c;缩小&#xff0c;旋转&#xff0c;文本选择和复制&#xff0…

创新,无处不在的便利体验——基于智能视频技术的安防监控系统EasyCVR

随着科技的迅猛发展&#xff0c;基于智能视频和语音技术的EasyCVR智能安防监控系统正以惊人的速度改变我们的生活。EasyCVR通过结合先进的视频分析、人工智能和大数据技术&#xff0c;为用户提供了更加智能、便利的安全保护体验&#xff0c;大大提升了安全性和便利性。本文将介…

web应用程序、Django框架的学习

web应用程序 什么是web? Web应用程序是一种可以通过Web访问的应用程序,用户只需要有浏览器即可&#xff0c;不需要再安装其他软件 案例&#xff1a; 淘宝网、京东网、博客园、等都是基于web应用的程序 应用程序有两种模式C/S、B/S。C/S是客户端/服务器端程序&#xff0c…

2011年03月31日 Go生态洞察:Godoc —— Go代码的文档化

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

list部分接口模拟实现(c++)

List list简介list基本框架list构造函数list_node结构体的默认构造list类的默认构造 push_back()iteartor迭代器迭代器里面的其他接口const迭代器通过模板参数实现复用operator->() insert()erase()clear()析构函数迭代器区间构造拷贝构造operator() list简介 - list可以在…

一篇简述 Linux 移植与系统启动

1、Linux系统启动与U-Boot 所谓移植就是把程序代码从一种运行环境转移到另一种运行环境。对于内核移植来说&#xff0c;主要是从一种硬件平台转移到另一种硬件平台上运行。 体系结构级别的移植是指在不同体系结构平台上Linux内核的移植&#xff0c;例如&#xff0c;在ARM、MI…

前端项目导入vue和element

1.安装nodejs 下载链接https://cdn.npmmirror.com/binaries/node/v18.18.0/node-v18.18.0-x64.msi 进入cmd 命令行模式 管理员身份运行 输入 &#xff08;node -v&#xff09;能看到版本号 npm config set prefix "C:\Program Files\nodejs" 默认路径 npm config…

补偿 IIR 滤波器引入的延迟

补偿 IIR 滤波器引入的延迟 对信号进行滤波会引入延迟。这意味着相对于输入&#xff0c;输出信号在时间上有所偏移。 无限冲激响应滤波器对某些频率分量的延迟可能比其他频率分量更长。它们会使输入信号呈现明显失真。函数 filtfilt 可补偿此类滤波器引入的延迟&#xff0c;从…

asp.net校园招聘管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net 校园招聘管理系统是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使用c#语言开发 应用技术&#xff1a;asp.net c#s…

PHP编写采集药品官方数据的程序

在 PHP 中编写爬虫程序&#xff0c;首先我们需要引入一些必要的库&#xff0c;如 curl 和 file_get_contents。然后&#xff0c;我们需要设置爬虫ip信息&#xff0c;以便我们可以从指定的爬虫ip服务器上获取数据。 // 引入必要的库 require_once curl.php;// 设置爬虫ip信息 $p…

【vue+el-upload+vue-cropper】vue图片上传,vue-cropper图片裁剪后上传

一. 先看效果演示 二. 图片上传 用的el-upload加el-image组件 html部分 <el-dialog> ...//无关代码已省略<div v-for"item in imgArr" :key"item.index"><span>{{ item.name }}</span><el-upload action"#" list-t…