• MySQL的数据库有关操作


    大家好,这次给大家带来的是我的新的专栏:数据库,数据库相对来说难度不是那么高,大家只要勤加练习、熟记语法,我相信学好数据库不是什么问题,博主会从0剖析,逐步讲解数据库的知识点,并且会举很多实例。最重要的是,博主不会采用软件,使用最原始的方式 -> 命令行来讲解,这样讲解的好处是逐个语句进行书写,不会造成读者思路跟不上的问题!
    👀QQ:162196770
    👀微信:PRIDE_Xu_
    👀Gitee:https://gitee.com/jialebihaitao
    👀上一篇博客传送门:
    👀下一篇博客传送门:
    👀文章专栏:
    👀B站:建设中,以后会考虑在B站上讲解一些知识点等等
    内容

    1、数据库的操作

    1.1 显示当前的数据库

    显示出当前服务器上都有哪些数据库(或者哪些数据集合)

    语法:

    show databases;
    
    • 1

    image-20220423120012212

    注意:

    1. databases是复数
    2. showdatabases之间要有空格(几个无所谓,但是不能没有!)
    3. SQL语句基本都是以;结尾的
    4. SQL语句不区分大小写
    5. 默认自带的数据库,不要乱动!把数据库搞坏了就不好玩了~

    1.2 创建数据库

    语法:

    create database [if not exists] 数据库名 [创建规则];
    
    • 1

    image-20220423121057049

    注意:

    1. 以后所有的[]都是不用必须输入的,这个[]代表可选项(可写可不写);

    2. 数据库的名字只要不是关键字的名字即可(其实也可以创建以关键字为名字的数据库,用反引号即可,即这个符号包裹住就行(位置在Tab上方,1的左面,Esc的下面)),但是要注意:不能在一个服务器上 创建出多个同名的数据库

      image-20220717230055091

    3. if not exists的作用是只要不存在才去创建,其实不加也可以

      使用场景:你发给别人一段SQL,但是你不知道他的电脑上有没有对应的数据库,所以就选择如果没有才去创建这种方式.人家已经创建好的,咱们就不要瞎弄了

    4. 这里面的database是单数

    5. 创建规则:创建数据库可以指定字符集和校验规则

      1. 校验规则 : 描述了当前字符之间的比较方法

        比较字符串的相等 / 大小关系(比如我们有时候希望忽略大小写)

        使用场景不多 , 我们一般很少手动进行干预 , 一般使用默认的校验规则就可以了 .

      2. 字符集 :

        create database test character set utf8mb4;
        
        • 1

        image-20220423122207855

        这里面的utf8mb4是怎么回事呢?

        首先,我们先来思考一下,计算机是如何保存字母的?

        ASCII码:通过数字,来表示字母。数字和字母的一一对应的关系,就成为ASCII码表

        但是ASCII是不包含中文的,所以现在常用的是两个版本

        1. GBK

          2个字节来表示一个汉字

          Windows简体中文版默认的字符编码

        2. UTF-8:被视为"世界通用的字符编码"

          UTF8变长编码:一个汉字,用几个字节表示,是不确定的.

          一般是3个字节表示一个汉字

        本质上,就是用数字表示各种语言文字的符号等,所对应的大表格,这个映射关系就叫做"字符集"

        那么上面的utf8mb4是怎么回事呢?

        utf8mb4其实就是比utf8多了一些特殊符号,比如emoji表情。设置成utf8也没啥事

        那么我们在之前学过这样一个东西

        char* s = "嗨";
        printf("%d\n",strlen(s));
        
        //那么请问,一个汉字占几个字节
        //通过刚才对GBK以及UTF8的讲解,我们可以得知:
        //需要先确认是哪种字符编码
        //	GBK  ->  2个字节
        //	UTF8 ->  3个字节1
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
    6. 执行这条SQL操作所耗费的时间:我们可以看到刚才的图片,运行时间是0.03sec,这相对于计算机,其实是一个非常慢的速度

      给大家介绍以下计算机常用操作的时间:

      访问网络:s~ms

      访问磁盘:ms~us

      访问内存:us~ns

      操作CPU:ps

      注意:这个换算是1000,不是1024。别混了

      数据库往往是比较慢的环节,大型项目容易在这里面出问题。

    1.3 使用数据库

    在针对数据库进行一系列操作之前,我们必须要先选中数据库

    语法:

    use 数据库名;
    
    • 1

    image-20220423122258965

    使用数据库这条语句,不加;也能执行.但是不推荐这样,在SQL中,有些语句可以不加;,但是有些语句就必须加;,所以我们就统一都加;,让你看到哪条SQL语句没加;你也不要奇怪

    image-20220717230914716

    1.4 删除数据库

    这个操作嗷嗷危险!!!千万不要在公司的服务器上进行删库操作 .

    语法:

    drop database 数据库名;
    
    • 1

    image-20220423122523736

    其实可以找回,但是比较麻烦了。

    可以开启MySQLbinlog功能,每次针对数据库进行的操作,都会被记录到binlog中。万⼀数据被毁,可以重新把binlog中的所有操作再导入⼀遍,但是这里面的内容不够全

    分割线

    那么是否有办法,避免生产环境中的数据被删除呢?

    1. 权限控制:提供管理员权限,只能管理员才能进行删除

      产生了一个职业 : DBA 数据库管理员

    2. 备份一份副本:一旦被删除,还有后路

      那么是否有可能权限控制也失效了,备份也都被删除了呢?那当然有可能,那就不是“误删”了,是故意的了,就会被送到一个包吃包住的好地方去了。

    3. 恢复硬盘数据 :

      image-20220718093327552

    1.5 扩展:cmd当中的小操作

    1. 按住键盘上键下键就可以找历史命令(省点劲)
    2. 复制粘贴:选中内容,回车复制,右键粘贴

    1.6 公司中会涉及到的环境(题外话)

    1. 办公环境:入职的时候,公司给你发的电脑(当然也有少数公司,会自己让你带电脑->基本快跑,离得远远的),会通过这个电脑进行日常办公。基本配置也就是8核CPU 16G内存 512G硬盘

    2. 开发环境:一般是以服务器的形式来提供的,办公电脑通过网络的连接到服务器。这个服务器端对应的设备一般都是大约在16核CPU 64G内存 4T硬盘

      有些项目跑起来是非常消耗资源的,一启动内存整不好就吃掉了几十个G,甚至上百G。用你自己的办公电脑当然是带不动的。

      如果开发的程序比较小,这个时候就可能没有开发环境了,就可以直接用办公电脑开发 .

      一般都是公司把过了保修期的设备拿来给程序猿作为"开发环境"

    3. 测试环境 : 测试的员工针对要测试的程序使用的环境 , 使用的机器基本也都是过了保修期的机器

    4. 线上环境/生产环境:也是服务器的形式来提供的,也需要通过办公电脑的网络远程去连接。配置要很好,大约56核CPU 256G/512G内存 若干T硬盘

      生产环境,实际上就是给外面的用户提供服务的环境,千万不能挂!

      挂了会造成重大资源损失的

    那么MySQL服务器基本会出现在上面的 2 3 4 环境中 , 要是误删了 2 3 环境里面的数据库 , 其实相对来说情况还好 , 同事们加加班也就抢救回来了 , 基本要被很多人骂的 . 但是一旦你不小心删除了 4 也就是线上环境里面的数据库 , 那么就完蛋了 . 外面的用户会感受到直接的影响 , 大概率会导致用户流失 , 吃官司等等 . 严重的会引起重大的安全事故 !

  • 相关阅读:
    Linux高性能服务器编程——ch2笔记
    C语言规范标准-C99(中文版) 完整版正式发布
    Rust中的 into和from如何使用?
    【DC综合】DC工具 report_timing 命令的一些选项
    冰冰学习笔记:泛型编程---模板简介
    baby_web (攻防世界)
    设计模式-外观模式
    Kotlin作用域函数引发的遮蔽问题
    【LeetCode】42、接雨水
    Orange3数据可视化组件概览
  • 原文地址:https://blog.csdn.net/m0_53117341/article/details/126003280