【MySQL】数据库和表的操作

数据库和表的操作

  • 一、数据库的操作
    • 1. 创建数据库
    • 2. 字符集和校验规则
      • (1)查看系统默认字符集以及校验规则
      • (2)查看数据库支持的字符集
      • (3)查看数据库支持的字符集校验规则
      • (4)校验规则对数据库的影响
    • 3. 操纵数据库
      • (1)查看数据库
      • (2)显示创建的语句
      • (3)修改数据库
    • 4. 数据库删除
    • 5. 备份和恢复
      • (1)备份数据库
      • (2)还原
      • (3)拓展
    • 6. 查看连接情况
  • 二、表的操作
    • 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

说明:

  • 大写的表示关键字,mysql 不区分大小写,所以也可以用小写
  • [] 是可选项
  • CHARACTER SET: 指定数据库采用的字符集
  • COLLATE: 指定数据库字符集的校验规则

假设现在我们现在需要创建一个名为 d1 的数据库,首先我们先查看一下数据库,查看数据库:show databases;

在这里插入图片描述

下面开始创建 d1 数据库:create database d1;

在这里插入图片描述

如上,d1 数据库就创建好了。

注意:当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则是:utf8_ general_ ci.

  • 创建一个使用 utf8 字符集的 d2 数据库:create database d2 charset=utf8;

  • 创建一个使用 utf8 字符集,并带校对规则的 d3 数据库:create database d3 charset=utf8 collate utf8_general_ci;

创建好如下:

在这里插入图片描述

我们在前面也说过,创建一个数据库其实就是在 Linux 下创建一个目录,这里就不再重复介绍了。

2. 字符集和校验规则

当我们创建数据库的时候,有两个编码集:

  1. 数据库编码集 - - - 数据库未来存储数据所采用的编码集;
  2. 数据库校验集 - - - 支持数据库,进行字段比较使用的编码,本质也是一种读取数据库中数据所采用的编码格式;

所以数据库无论对数据做任何操作,都必须保证操作和编码必须是编码一致的。

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

(1)查看系统默认字符集以及校验规则

		show variables like 'character_set_database';  # 默认字符集show variables like 'collation_database';      # 检验规则

如下:

在这里插入图片描述

(2)查看数据库支持的字符集

		show charset;

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

		show collation;

(4)校验规则对数据库的影响

  • 不区分大小写

创建一个数据库,校验规则使用 utf8_ general_ ci (不区分大小写,即在检验的时候不严格匹配,不对大小写字母进行区分)

		create database test1 collate utf8_general_ci;

随后我们需要使用这个数据库:use test1

然后我们为这个数据库创建一张表,并插入一些数据,创建表和插入的语法我们先不做介绍,后面再介绍;如下:

在这里插入图片描述

接下来我们对这个表的插入结果进行查看,注意,该表的校验方法是不进行区分大小写进行匹配的;所以我们先查看整个表的情况:select * from for_test;

在这里插入图片描述

接下来我们筛选出 a 这个字符:select * from for_test where name='a';

在这里插入图片描述

我们可以看到,数据库在匹配 a 这个字符的时候不进行大小写区分,无论大写还是小写都给我们显示出来了。

  • 区分大小写

创建一个数据库,校验规则使用 utf8_ bin (区分大小写,校验时按照严格匹配的方式,区分大小写)

我们按照上面的方式进行创建,如下图:

在这里插入图片描述

接下来我们查看该表的数据:

在这里插入图片描述

接下来我们筛选出 a 字符:

在这里插入图片描述

如上图,因为该数据库的检验规则为 utf8_ bin,进行区分大小写的方式进行严格匹配,所以筛选出来的字符 a 就是字符 a.

3. 操纵数据库

(1)查看数据库

		show databases;

在这里插入图片描述

(2)显示创建的语句

		show create database 数据库名;

例如:

在这里插入图片描述

说明:

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

(3)修改数据库

语法:

		ALTER DATABASE db_name[alter_spacification [,alter_spacification]...]

alter_spacification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name

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

假设将我们上面创建的 test1 数据库的字符集改成 gbkalter database test1 charset=gbk;

在这里插入图片描述

如上图 test1 数据库的字符集就修改成了 gbk.

4. 数据库删除

语法:

		DROP DATABASE [IF EXISTS] db_ name;

例如我们删掉我们前面建的 test2 数据库:drop database test2;

如下:

在这里插入图片描述

如上图,test2 数据库就被删除了。

执行删除之后的结果:

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

5. 备份和恢复

(1)备份数据库

在备份数据库之前我们先需要退出 mysql.

语法:

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

其中密码部分我们可以不在命令行输入,当我们执行这条命令的时候命令行会提示我们输入。

例如我们把 test1 库备份到文件中:mysqldump -P3306 -uroot -p -B test1 > /home/lmy/test1.sql

在这里插入图片描述

这时,可以打开看看 test1.sql 文件里的内容,其实把我们整个创建数据库,建表,导入数据的语句都装载这个文件中。

接下来我们进入 mysql 中,把这个数据库删掉:

在这里插入图片描述

如上图,test1 库就被我们删除了,接下来我们进行还原。

(2)还原

语法:

		source 数据库备份的文件路径;

我们在 mysql 中输入指令:source /home/lmy/test1.sql; 即可在 mysql 中恢复 test1 库:

在这里插入图片描述

(3)拓展

如果备份的不是整个数据库,而是其中的一张表,怎么做?做法如下:

		mysqldump -uroot -p 数据库名 表名1 表名2 > 备份文件路径

如果同时备份多个数据库,如下:

		mysqldump -uroot -p -B 数据库名1 数据库名2 ... > 数据库存放路径

如果备份一个数据库时,没有带上 -B 参数, 在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用 source 来还原。

6. 查看连接情况

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

语法:

		show processlist;

例如:

在这里插入图片描述

二、表的操作

1. 创建表

语法:

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

在创建表之前需要指定数据库,即使用:use 数据库; 为该数据库创建表。

注意,数据库的数据类型我们暂时先不介绍,后续会介绍。

说明:

  • field 表示列名
  • datatype 表示列的类型
  • character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准
  • collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准

例如我们创建一个 users 表,里面存储用户的 id用户名密码生日

		create table users(-> id int,-> name varchar(20) comment '用户名',-> password char(20) comment '密码',-> birther date comment '生日'-> ) character set utf8 engine MyISAM;

说明:不同的存储引擎,创建表的文件不一样。users 表存储引擎是 MyISAM ,在数据库目录中有三个不同的文件,我们可以进入该目录查看:cd /var/lib/mysql/d1,分别是:

在这里插入图片描述

其中,它们分别表示:

  • users.frm:表结构
  • users.MYD:表数据
  • users.MYI:表索引

db.opt 则是该数据库对应的字符集和检验规则。

2. 查看表

上面我们已经创建好了一张 users 表,此时我们可以查看该数据库有哪些表:show tables;

在这里插入图片描述

3. 查看表结构

语法:desc 表明;

例如查看 users 表的结构:

在这里插入图片描述

以上就是表的结构中的介绍,我们后面会详细介绍每一列的功能的。

4. 修改表

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

		ALTER TABLE tablename ADD (column datatype [DEFAULT expr][,columndatatype]...);  # 添加ALTER TABLE tablename MODIfy (column datatype [DEFAULT expr][,columndatatype]...);  # 修改ALTER TABLE tablename DROP (column);  # 删除

例如:

先在 users 表添加两条记录:

	mysql> insert into users values(1, 'a', 'b', '2000-01-01'), -> (2, 'c', 'd', '2000-01-02');

在这里插入图片描述

  • 在 users 表添加一个字段,用于保存图片路径:alter table users add assets varchar(100) comment '图片路径' after birther;

在这里插入图片描述

插入新字段后,我们查看原表的数据,对原来表中的数据没有影响:

在这里插入图片描述

  • 修改 name,将其长度改成 60: alter table users modify name varchar(60);

在这里插入图片描述

  • 删除 password 列: alter table users drop password;

在这里插入图片描述

我们再查看表中的数据,发现 password 这一列的数据都不见了:

在这里插入图片描述

所以删除字段一定要小心,删除字段及其对应的列数据都没了。

  • 修改表名为 employee: alter table users rename to employee; ,其中 to 可以省略

在这里插入图片描述

  • 将 name 列修改为 xingming: alter table employee change name xingming varchar(60); ,新字段需要完整定义

在这里插入图片描述

5. 删除表

语法:DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...

例如:

在这里插入图片描述

再次查看:

在这里插入图片描述

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

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

相关文章

RabbitMQ 基础

1.初识RabbitMQ 1.1.同步调用 我们现在基于OpenFeign的调用都属于是同步调用,那么这种方式存在哪些问题呢? 拓展性差性能下降级联失败 而要解决这些问题,我们就必须用异步调用的方式来代替同步调用。 1.2.异步调用 异步调用方式其实就是基…

EG网关网口连接MCGS触摸屏应用案例

EG网关网口连接MCGS触摸屏应用案例 前言:MCGS触摸屏广泛应于工业控制领域,是一款性能高,运行稳定的人机交互设备。此次我们要把MCGS的TPC7062系列触摸屏通过Modbus协议连接EG系列网关,将数据传输到EMCP物联网云平台,实…

马云笔下的AI电商时代,到底长啥样?

前两天,马云“惊现”阿里内网,正面回应拼多多市值接近阿里巴巴。 AI电商时代刚刚开始,对谁都是机会,也是挑战。要祝贺pdd过去几年的决策,执行和努力。谁都牛x过,但能为了明天后天牛而改革的人,…

页面置换算法详解专题

页面置换算法的功能是:当缺页中断发生,需要调入新的页面而内存已满时,选择内存当中哪个物理页面被置换~ 页面置换算法的目的:尽可能地减少页面的换进换出次数(既缺页中断的次数)。具体来说,把未…

论文笔记:Bilinear Attention Networks

更精简的论文学习笔记 1、摘要 多模态学习中的注意力网络提供了一种选择性地利用给定视觉信息的有效方法。然而,学习每一对多模态输入通道的注意力分布的计算成本是非常昂贵的。为了解决这个问题,共同注意力为每个模态建立了两个独立的注意分布&#x…

【YOLOv8量化】普通CPU上加速推理可达100+FPS

NNCF介绍 OpenVINO2023版本衍生出了一个新支持工具包NNCF(Neural Network Compression Framework – 神经网络压缩框架),通过对OpenVINO IR格式模型的压缩与量化更好的提升模型在OpenVINO框架上部署的推理性能,github。 https://github.com/openvinoto…

STM32单片机项目实例:基于TouchGFX的智能手表设计(5)硬件驱动层程序设计

STM32单片机项目实例:基于TouchGFX的智能手表设计(5)硬件驱动层程序设计 目录 一、 概述 二、 新建工程与外设配置 三、 TouchGFX配置 四、 增加TouchGFX关键驱动 一、 概述 本文内容主要进行工程新建,硬件外设的配置以及添加…

【Python】—— 如果使用matplotlib做数据可视化

matplotlib做数据可视化 相关知识掌握matplotlib的基本使用方法1. 折线图2. 散点图3. 柱状图4. 饼图5. 直方图6. 等高线图7. 图形定制 掌握数据处理的基本方法1. 数据筛选2. 缺失值处理3. 异常值处理 理解数据可视化的原则和方法1. 选择合适的图表类型2. 避免数据混淆3. 突出重…

【java IO】|java NIO总结

在传统的 Java I/O 模型(BIO)中,I/O 操作是以阻塞的方式进行的。也就是说,当一个线程执行一个 I/O 操作时,它会被阻塞直到操作完成。这种阻塞模型在处理多个并发连接时可能会导致性能瓶颈,因为需要为每个连…

Tarjan-割点问题

文章目录 前言割点定义割点的求解割点判定定理证明(非严谨) 算法实现算法流程代码详解 再看SCCOJ练习 前言 之前介绍Tarjan算法求强连通分量时,提到了代码段中对于访问过的邻接点应用其时间戳来更新追溯值,不是说用追溯值更新会导…

结果实例: 一个cpu的parsec结果

简介 限于篇幅限制,很多教程和论文只展示部分结果。我们这里展示非常细节的结果,包括输出的许多命令行结果。 运行命令行 的shell窗口 ./build/X86/gem5.opt -d m5out/onlyoneCPUkvmCheckPointDifferRCS20231218restore \configs/deprecated/example/…

教务系统一键评教

利用浏览器的开发者模式实现“一键评教”,本教程针对金智教务系统 步骤 1、打开教务系统的评教页面。 2、按下键盘快捷键 F12,或者点击鼠标右键打开浏览器的开发者工具,然后选择控制台(Console)。 3、复制以下 Java…

大数据机器学习-梯度下降:从技术到实战的全面指南

大数据机器学习-梯度下降:从技术到实战的全面指南 文章目录 大数据机器学习-梯度下降:从技术到实战的全面指南一、简介什么是梯度下降?为什么梯度下降重要? 二、梯度下降的数学原理代价函数(Cost Function)…

[德人合科技]——设计公司 \ 设计院图纸文件数据 | 资料透明加密防泄密软件

国内众多设计院都在推进信息化建设,特别是在异地办公、应用软件资产规模、三维设计技术推广应用以及协同办公等领域,这些加快了业务的发展,也带来了更多信息安全挑战,尤其是对于以知识成果为重要效益来源的设计院所,防…

vue内容渲染

内容渲染指令用来辅助开发者渲染DOM元素的文本内容。常用的内容渲染指令有3个 1.v-text 缺点:会覆盖元素内部原有的内容 2.{{}}:插值表达式在实际开发中用的最多,只是内容的占位符,不会覆盖内容 3.v-html:可以把带有标…

MySQL表的增删改查(初阶)

CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写。且增删改查(CRUD,create,retrieve,update,delete)数据库的核心模块。 1. 新增(Create) 实…

【数据结构】二叉树的模拟实现

前言:前面我们学习了堆的模拟实现,今天我们来进一步学习二叉树,当然了内容肯定是越来越难的,各位我们一起努力! 💖 博主CSDN主页:卫卫卫的个人主页 💞 👉 专栏分类:数据结构 👈 &…

CogVLM与CogAgent:开源视觉语言模型的新里程碑

引言 随着机器学习的快速发展,视觉语言模型(VLM)的研究取得了显著的进步。今天,我们很高兴介绍两款强大的开源视觉语言模型:CogVLM和CogAgent。这两款模型在图像理解和多轮对话等领域表现出色,为人工智能的…

A01、关于JVM的GC回收

引用类型 对象引用类型分为强引用、软引用、弱引用,具体差别详见下文描述: 强引用:就是我们一般声明对象是时虚拟机生成的引用,强引用环境下,垃圾回收时需要严格判断当前对象是否被强引用,如果被强引用&am…

GaN图腾柱无桥 Boost PFC(单相)九-EMI 滤波器容性电流影响分析

前言 为了防止 PFC 变换器中高频开关谐波对电网产生影响,同时抑制电网中的高频干扰对变换器运行的影响,一般通过在 PFC 变换器与交流电源之间加入EMI 滤波器消除共模干扰和差模干扰,使变换器满足相应的 EMI 标准。在基于GaN 功率器件的图腾柱…