MYSQL库和表的操作(修改字符集和校验规则,备份和恢复数据库及库和表的增删改查)

文章目录

  • 一、MSYQL库的操作
    • 1.连接MYSQL
    • 2.查看当前数据库
    • 3.创建数据库
    • 4.字符集和校验规则
    • 5.修改数据库
    • 6.删除数据库
    • 7.备份和恢复
    • 8.查看连接
  • 二、表的操作
    • 1.创建表
    • 2.查看表结构
    • 3.修改表
    • 4.删除表


一、MSYQL库的操作

1.连接MYSQL

我们使用下面的语句来连接MSYQL:

mysql -h 127.0.0.1 -P 3306 -u root -p
-h:登录主机的ip,如果是本地主机登录的话可以忽略
-P:MYSQL的端口,默认是3306,如果未更改可以忽略
-p:用户密码,回车后输入密码即可登录

登录成功后显示如下:

在这里插入图片描述

2.查看当前数据库

我们可以使用下面的语句来查看有哪些数据库:

在这里插入图片描述

系统会默认自带4个库:

  1. information_schema :一个信息数据库,其保存着关于mysql服务器所维护的所有其他数据库的信息,如数据库名,数据库的表,表栏的数据类型与访问权限等;
  2. performance_schema :主要用于收集数据库服务器性能参数;
  3. sys :一个简单版的performance_schema,方便开发人员进行查询;
  4. mysql:存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息。

我们还可以用下面的语句来显示创建数据库的语句,并显示字符集:

show create database 数据库名;

在这里插入图片描述

说明:

  1. MySQL 建议我们关键字使用大写,但是不是必须的。
  2. 数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字
  3. /*!40100 default… */ 这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话

3.创建数据库

我们使用下面的语句来创建数据库:

CREATE DATABASE [IF NOT EXISTS] db_name [create_specification];create_specification:
[DEFAULT] CHARACTER SET charset_name //指定数据库采用的字符集
[DEFAULT] COLLATE collation_name //指定数据库字符集的校验规则

在这里插入图片描述

4.字符集和校验规则

查看系统默认字符集以及校验规则:

show variables like 'character_set_database';
show variables like 'collation_database';

在这里插入图片描述

系统默认的字符集是utf8,默认的字符集校验规则是utf8_general_ci;

用下面的语句可以查询MYSQL所支持的字符集和校验规则:

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

所以我们可以在创建数据库的时候改变它的字符集和校验规则:

在这里插入图片描述

接下来我们来探讨一下字符集校验规则对数据库的影响:

create database test1 collate utf8_general_ci;
use test1;
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');
select * from person where name='a';

我们用上面的语句创建表并查询:

在这里插入图片描述

我们换一种字符集校验规则进行操作:

create database test2 collate utf8_bin;
use test2;
create table person(name varchar(20));
insert into person values('a');
insert into person values('A');
select * from person where name='a';

在这里插入图片描述

所以校验规则使用utf8_ general_ ci(不区分大小写),校验规则使用utf8_ bin(区分大小写)。

5.修改数据库

对数据库的修改主要指的是修改数据库的字符集,校验规则。

例如将数据库test1的字符集改为gbk:

在这里插入图片描述

6.删除数据库

我们使用下面的语句进行删除:

DROP DATABASE [IF EXISTS] db_ name;

执行删除之后的结果:

  1. 数据库内部看不到对应的数据库;
  2. 对应的数据库文件夹被删除,级联删除,里面的数据表全部被删;

7.备份和恢复

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

我们在存储备份文件的文件夹中执行下面的操作,就可以得到备份文件:

在这里插入图片描述

我们使用vim 打开这个所谓的备份文件,发现其实就是将创建这个库的操作保存下来:

在这里插入图片描述

我们将 test1 数据库删除,并在MYSQL中执行下面的语句恢复数据库:

在这里插入图片描述

注意事项:

如果备份的不是整个数据库,而是其中的一张表,怎么做?mysqldump -u root -p 数据库名 表名1 表名2 > bk.sql同时备份多个数据库mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径如果备份一个数据库时,没有带上-B参数, 在恢复数据库时:需要先创建空数据库,然后使用数据库,再使用source来还原。

8.查看连接

下面的语句可以查看当前数据库的连接情况:

在这里插入图片描述

二、表的操作

1.创建表

CREATE TABLE table_name (
field1 datatype,
field2 datatype,
field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎;说明:
field 表示列名
datatype 表示列的类型
character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准
collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准

下面是一个创建表的实例:

在这里插入图片描述

那么这些表实际存放在哪呢?我们可以进入var/lib/mysql 目录下:

在这里插入图片描述

我们可以发现在这个目录下,存放了数据库的目录,而我们进入test1 目录:

在这里插入图片描述

在这个目录中,存放的是 test1 数据库中的相关表文件,不同存储引擎的文件会不同。而我们向库中添加一个表,其实就是向对应的目录中存放相关的表信息。

我们再创建一个存储引擎为 InnoDB 的表结构来验证:

在这里插入图片描述

2.查看表结构

在这里插入图片描述

3.修改表

在项目实际开发中,经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型,表的存储引擎等等。我们还有需求,添加字段,删除字段等等。这时我们就需要修改表。

ALTER TABLE tablename ADD (column datatype [DEFAULT expr][,column
datatype]...);
ALTER TABLE tablename MODIfY (column datatype [DEFAULT expr][,column
datatype]...);
ALTER TABLE tablename DROP (column);

例如添加一条记录:

在这里插入图片描述

添加一个字段:

在这里插入图片描述

修改字段属性:

在这里插入图片描述

删除一列:

在这里插入图片描述

修改表的名字:

在这里插入图片描述

4.删除表

在这里插入图片描述

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

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

相关文章

【阻塞队列】阻塞队列的模拟实现及在生产者和消费者模型上的应用

文章目录 📄前言一. 阻塞队列初了解🍆1. 什么是阻塞队列?🍅2. 为什么使用阻塞队列?🥦3. Java标准库中阻塞队列的实现 二. 阻塞队列的模拟实现🍚1. 实现普通队列🍥2. 实现队列的阻塞功…

JVM篇----第十篇

系列文章目录 文章目录 系列文章目录前言一、JAVA 强引用二、JAVA软引用三、JAVA弱引用四、JAVA虚引用五、分代收集算法前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧…

怎么获取二维码的链接?二维码转链接只需3步

怎么从二维码中提取内容呢?现在很多内容都会用二维码方式来存储,但是有些场景下二维码是无法使用的时候,想要查看二维码中的内容,就需要分解二维码成链接后使用。那么二维码分解成链接具体该怎么做呢?今天就将在线二维…

在DevEco开发工具中,使用Previewer预览界面中的UI组件

1、在DevEco工具中,点击并展开PreViewer预览器 2、在PreViewer预览器中,点击Tt按钮(Inspector)切换至组件查看模式 3、在组件查看模式下选择组件,代码呈现选中状态,右侧呈现组件树,右下方呈现组…

JAVA输入任意一个数字,实现递减求和(计算任意整数n的和)

摘要:本文介绍了使用Java编程语言计算任意整数n及其之前所有整数的和的示例代码。代码使用了Scanner类来读取用户输入的整数值,并通过循环计算出和结果并生成计算公式字符串。 内容: 在这个示例中,我们将展示如何使用Java编程语言…

低代码开发会是前端程序员的下一个春天吗?

最近前端的大环境不太行,之前身处在前端的自己薪资也越来越无望了,隐隐约约感觉前端做不下去了,2024前端找不到工作要转行吗? 但是别担心啊老铁们,前端技术精微渊深,除了基础的 HTML、CSS 和 JavaScript 技…

Java基础—面向对象OOP—17类与对象(创建、构造器、创建对象时简单内存分析)

把握重点,重点已标注,这篇笔记分了4个章节,重点看二、三、四 一、整体思维--重点把握面向对象的本质和特点 1、面向对象编程OOP: Object-Oriented programming 2、面向过程与面向对象 面向过程:线性思维 面向对象…

网络编程(Day23)

TCP/IP 面向连接,可重传,不丢包,可靠,有序 使用方法 服务端 客户端 多线程服务端 多线程客户端 多线程方法区 UDP/IP 无连接,可能丢包,不保证可靠,速度快 服务端 客户端 正则表达式 概述 正则…

随机点名--好玩哦

大屏滚动,随机点名,可刺激哦 想屏幕名字滚动得快一点,sleep时间就小一点 效果图 代码 #!/bin/bash namefile"/opt/name.txt" linenum$(sed -n $ $namefile) while : docleartmp$(sed -n "$[RANDOM%linenum1]p" $namefi…

Git+Gitee代码管理

前言 本教程最后要实现的效果是,将自己电脑里面的工程或者文件,通过git上传到gitee仓库中。 博主默认你电脑已经下载好了git,并注册好了gitee。 步骤 首先在gitee上创建一个仓库 创建仓库成功之后,你后面所要用到的命令行&am…

Linux------进程状态

前言 在之前,我们学习了Linux为什么要有PCB-----冯诺依曼体系结构与操作系统,先描述,在组织。使用PCB将系统中的资源组织起来,方便操作系统和用户进行管理访问。还学习了Linux中进程的创建和fork操作,现在我们来讲一讲…

常见の算法链表问题

时间复杂度 1.链表逆序 package class04;import java.util.ArrayList; import java.util.List;public class Code01_ReverseList {public static class Node {public int value;public Node next;public Node(int data) {value data;}}public static class DoubleNode {publi…