【MySQL入门指南】数据库基本操作

news/2024/5/5 20:48:03/文章来源:https://blog.csdn.net/whc18858/article/details/130122137

文章目录

  • MySQL库操作
    • 一、SQL语句
    • 二、创建数据库
        • 1.语法
        • 2.案例
        • 3.极其不推荐的方式
    • 三、查看数据库
        • 1.语法
    • 四、修改数据库
    • 五、删除数据库
    • 六、字符集与校验规则
        • 1.是什么
        • 2.相关指令
        • 3.校验规则的影响
    • 七、备份数据库
        • 1.基本语法
        • 2.注意事项

MySQL库操作

一、SQL语句

  • DDL(data definition language):数据定义语言,用来维护数据表、数据库的属性结构。代表指令有 create/drop/alter
  • DML(data manipulation language):数据操纵语言,用来修改文件内容
  • DCL(Data Control Language):数据控制语言,主要负责数据库的安全和权限管理

​ 在本文中,我们将重点介绍对数据库的增删查改操作。需要注意的是,我们只是修改数据库的属性结构,并没有修改数据库的内容,所以接下来介绍的SQL语句都属于DDL语句。

​ 不同版本的MySQL实际可能会有所不同,本教程所使用地MySQL版本为5.7

二、创建数据库

1.语法

CREATE DATABASE [IF NOT EXISTS] db_name [CHARACTER SET   charset_name] [COLLATE collation_name]

说明:

  • []表示可加可不加
  • CHARACTER SET: 指定数据库采用的字符集。没有则采用配置文件中默认选用的
  • COLLATE: 指定数据库字符集的校验规则。没有则采用配置文件中所默认选用的
  • create、database属于mysql中的关键字。mysql对关键字的大小写不敏感(注意仅仅是对关键字不敏感,但是比如对数据库名,数据表名还是敏感的),为了便于阅读,之后都用小写呈现

(字符集和校验集在后面会介绍)

2.案例

  • 创建一个名为 db1 的数据库

    create database db1;
    
  • 加上 if not exists。只有当目标数据库不存在时才会创建

    image-20230410162253905

  • 创建一个使用 utf-8 字符集的数据库

    create database db2 charset=utf8;  -- 写法1
    create database db2 character set utf8;  -- 写法2
    
  • 创建一个使用 utf-8 字符集,校验集为 utf8_general_ci 的数据库

    create database db3 charset=utf8 collate utf8_general_ci;
    create database db3 charset=utf8 collate=utf8_general_ci;
    
  • 创建一个名字为 create 的数据库。因此create是mysql中的关键字,如果我们需要将以它作为数据库名的话就需要加上 ``。

    create database `create`
    

​ 字符集和校验集如果没有被设置,则采用默认设置的;否则根据就近原则,采用用户所指定的。在一般情况下,都不推荐用户自己设置字符集和校验集

3.极其不推荐的方式

​ 当我们创建一个数据库的时候,在物理层面上,本质就是在 var/lib/mysql 路径下为我们为我们创建对应的文件夹:

image-20230410163949437

​ 如果我们手动的在这个路径下创建目录,虽然也会被mysql识别成数据库,但这样的做法是不推荐的。就好比你的领导的领导直接给你发任务,这样显然乱了套。

image-20230410164141431

image-20230410164214654

三、查看数据库

1.语法

show databases;   -- 显示所有的数据库
show create database db_nams  -- 显示创建一个数据库的指令

image-20230410164522960

image-20230410164354443

四、修改数据库

基本语法:

ALTER DATABASE db_name [alter_spacification……]

常用修改:

  • 修改字符集与校验集

    alter database db1 charset=gbk;
    

    image-20230411193031532

    ​ 对比修改前和修改后,我们发现虽然我们只修改了字符集,编码集也会自动调整为相对应的。而且数据库创建语句也会发生变化

    image-20230411193225025

  • 注意在mysql 5.7下是不支持修改数据库名称的。本身修改数据库名称的行为就是极其不推荐的,在开始时就应该明确,否则容易影响到上层业务。

五、删除数据库

drop database [if exists] db_ name;

删除数据库时,会将数据库中的所有内容都删除。需要慎重!

六、字符集与校验规则

1.是什么

  • 字符集是指用于表示字符的编码规则。在 MySQL 中,字符集决定了如何存储字符数据,以及如何将字符数据传递给客户端。MySQL 支持多种字符集,这些字符集的选择会影响到数据存储的可靠性、数据传输的正确性以及文本比较、排序等操作的结果。​
  • 校验规则是用于规定字符数据的比较方法。在 MySQL 中,校验规则决定了如何比较字符串,包括如何区分大小写、如何对不同字符进行排序等。MySQL 支持多种校验规则,这些规则在不同场合下可能会产生不同的比较结果。正确选择校验规则可以保证数据比较、排序等操作的正确性

image-20230411085554502

数据库文件夹中的 dp.opt 文件就保存着该数据库所采用的字符集和校验集

2.相关指令

  • 查看数据库默认使用的字符集以及校验规则

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

    image-20230411084407360

  • 使用模糊查询看到更多内容

    show variables like 'character%';
    show variables like 'collation%';
    

    image-20230411084550805

  • 查看数据库支持的所有字符集。可以看到每个字符集默认匹配一个校验集

    show charset;
    

    image-20230411084742476

    (部分)

  • 查看数据库支持的所有校验集。一个字符集实际上可以对应多个校验集

    show collation;
    

    image-20230411084936410

3.校验规则的影响

​ 我们在前面提到,校验集用于字符数据之间的比较。校验集的不同也会影响大小写区分和排序等。

  • 创建两个不同字符集的数据库
create database db2 collate utf8_general_ci; -- 不区分大小写	
create database test2 collate utf8_bin; -- 区分大小写	
  • 分别插入以下数据
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';

image-20230411091902442

  • 排序结果
select* from person order by name

image-20230411092130302

七、备份数据库

1.基本语法

​ 我们前面提到,数据库在物理层面上,本质就是 var/lib/mysql路径下的一个文件夹,而数据表则是文件夹中的一个文件。我们要想拷贝一个数据库,虽然也可以粗暴的使用cp指令复制文件夹来实现对数据库的复制,但同样这样的行为是极其不推荐的。

​ MySQL提供了一个命令行工具 mysqldump,专门用来备份和还原mysql数据库。其使用方法如下:

mysqldump -P 3306 -uroot -p password -B database > backup.sql

说明:

  • -P说明mysql服务端的端口号
  • -uroot 等价于 -u root,写法上都可以
  • -p说明数据库的密码
  • -B说明需要备份的数据库名
  • > backup.sql 表示将数据结果重定向到backup.sql文件中,否则会输出到屏幕上

​ 我们从下面的保存结果中不难发现,数据库备份本质上并不是为我们备份具体的数据,而是为我们保存创建数据库的历史SQL语句(MySQL会为我们做优化)。这样做除了可以备份数据本身之外,还可以包含数据库的完整结构、约束、触发器、存储过程等信息,这样在备份还原时可以更好的保证数据的一致性可靠性

image-20230411195515903

复原的方式如下(mysql下的指令):

source xxx  -- 复原xx路径下的文件

2.注意事项

  • 如何只备份数据库中的一张或多张表?

     mysqldump -u root -p 数据库名 表名1 表名2 > /mytest.sql
    
  • 如何同时备份多个数据库

    mysqldump -u root -p -B 数据库名1 数据库名2 ... > /mytest.sql
    
  • 如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库(create),然后使用数据库(use),再使用source来还原

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

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

相关文章

Visual Studio Code跳转到CSS定义

Visual Studio Code 快速跳转到 VUE文件 或 CSS文件的定义位置(跳转到class定义,跳转到css定义),插件Css Peek、Vue Peek 对提升开发效率上,事半功倍。 目录 1、跳转到CSS定义 1.1、CSS Peek 1.2、Vue Peek 2、其他…

全国青少年软件编程(Scratch)等级考试一级考试真题2023年3月——持续更新.....

一、单选题(共25题,共50分) 1. 下列说法不正确的是?( ) A.可以从声音库中随机导入声音 B.可以录制自己的声音上传 C.可以修改声音的大小 D.不能修改声音的速度 试题解析:针对声音可以进行导入,上传&…

【C++】哈希的应用 -- 布隆过滤器

文章目录一、布隆过滤器的引入二、哈希函数个数的选择三、布隆过滤器的实现四、布隆过滤器的应用五、布隆过滤器总结一、布隆过滤器的引入 我们在上一节中学习了 位图,知道了位图可以用来快速判断某个数据是否在一个集合中,但是位图有如下的缺点&#x…

计网第五章.运输层—TCP的三次握手与四次挥手

以下来自湖科大计算机网络公开课笔记及个人所搜集资料 目录一、TCP三次握手建立连接为什么TCP客户进程最后还要发送一个普通的TCP确认报文段呢?能不能两次握手?总结:二、TCP四次挥手释放连接四次挥手过程问题1:TCP客户进程在发送完…

论文阅读 - ANEMONE: Graph Anomaly Detection with Multi-Scale Contrastive Learning

目录 摘要 1 简介 2 问题陈述 3 PROPOSED ANEMONE FRAMEWORK 3.1 多尺度对比学习模型 3.1.1 增强的自我网络生成 3.1.2 补丁级对比网络 3.1.3 上下文级对比网络 3.1.4 联合训练 3.2 统计异常估计器 4 EXPERIMENTS 4.1 Experimental Setup 4.1.1 Datasets 4.1.2 …

HuggingGPT强势来袭,LLM+专家模型,迈向更通用的AI

出品人:Towhee 技术团队 超级组合:HuggingFace ChatGPT HuggingGPT强势来袭。人类仿佛距离真正的AGI又更近了一步。 HuggingGPT是浙江大学与微软亚洲研究院的联手研究,发布之后迅速引发关注,已经开源。 它的使用非常简单&#x…

极氪X上市,18.98万元起售,进军紧凑豪华车市场

HiEV消息(文/Amy)4月12日,纯电SUV极氪X上市,共发布三个版本,官方零售价为: •ME版 五座后驱 189,800元 •YOU版 五座四驱 209,800元 •YOU版 四座后驱 209,800元全系三款车型预计将于6月起开启交付。极氪X限…

分享一个RecyclerView嵌套webview 滑动不流畅的解决方法

因RecyclerView 和webview 或者X5的webview 都具有滑动的功能 所以在做嵌套的时候 会出现滑动不流畅 等问题 解决思路 就是判断滑动的时候 是否自身消耗 或者父布局的RecycleView消耗 开发中还遇到个问题 就是 更换成x5的时候 getScrolly() 返回的一直是0 改成getWebScrollY(…

借助Nacos配置中心实现一个简易的动态线程池

目录 一、实现思路 二、实现说明概览 三、代码实现 DynamicThreadPool RejectedProxyInvocationHandler DynamicThreadPoolRegister DynamicThreadPoolRefresher 测试动态线程池 平常我们系统中定义的一些线程池如果要想修改的话,需要修改配置重启服务才能生…

HTTPS-TSL握手

HTTP一般基于TCP协议,而HTTPS就是在这之间加了SSL/TLS协议,那么在TCP三次握手建立TCP连接后,就需要TLS握手建立SSL/TLS连接。 TLS握手-流程 (基于RSA算法) (1)首先,客户端向服务器发…

Linux_vim编辑器

Vi编辑器是所有Unix及Linux系统下标准的编辑器,类似于windows系统下的notepad(记事本)编辑器,由于在Unix及Linux系统的任何版本,Vi编辑器是完全相同的,因此可以在其他任何介绍vi的地方都能进一步了解它&…

多路I/O转接 poll(了解)

poll() 的机制与 select() 类似,与 select() 在本质上没有多大差别,管理多个描述符也是进行轮询,根据描述符的状态进行处理,但是 poll() 没有最大文件描述符数量的限制(但是数量过大后性能也是会下降)。 p…

LeetCode_单调栈_中等_1019.链表中的下一个更大节点

目录1.题目2.思路3.代码实现(Java)1.题目 给定一个长度为 n 的链表 head。对于列表中的每个节点,查找下一个更大节点的值。也就是说,对于每个节点,找到它旁边的第一个节点的值,这个节点的值严格大于它的值…

最火爆的持续集成工具 jenkins ,详细教程来啦(傻瓜式教程)

很多小伙伴在安装以及配置jenkins的时候,总会遇到一些问题。 今天在这边特地把jenkins的安装,以及常用的一些功能的配置整理到了这篇文章中,希望对大家有所帮助! 1安装JDK JDK安装完需要配置环境变量,大家可以自行百度…

(四)栈—中缀表达式转后缀表达式

一、基本介绍 二、应用实例 将中缀表达式"1((23)x4)-5" 转换为 后缀表达式"1 2 3 4 x 5 -" 思路: 1.初始化两个栈:运算符栈s1和存储中间结果的栈s2; 2.从左至右扫描中缀表达式&#x…

java审计-JDBC注入审计

sql注入 基础 在常见的web漏洞中,SQL注入漏洞较为常见,危害也较大。攻击者一旦利用系统中存在的SQL注入漏洞来发起攻击,在条件允许的情况下,不仅可以获取整站数据,还可通过进一步的渗透来获取服务器权限,…

叮咚买菜基于 Apache Doris 统一 OLAP 引擎的应用实践

导读: 随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时 OLAP 数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实…

阿里云服务器搭建网站流程by宝塔Linux面板

阿里云服务器安装宝塔面板教程,云服务器吧以阿里云Linux系统云服务器安装宝塔Linux面板为例,先配置云服务器安全组开放宝塔所需端口8888、888、80、443、20和21端口,然后执行安装宝塔面板命令脚本,最后登录宝塔后台安装LNMP&#…

crypto-js AES-CTR 实现密文前缀式局部解密细节 踩坑点

项目有需求,长明文经过AES-CTR模式加密后,在解密的时候,密文不能直接得到,每次通过某些方法尝试后,只能得到一块密文(按顺序),所以只能一块一块的拼接解密。在使用crypto-js这个库的…

Java语言数据类型与c语言数据类型的不同

目录 一、c语言数据类型 1.基本类型: 2.枚举类型: 3.空类型: 4.派生类型: 二、C语言编程需要注意的64位和32机器的区别 三、 不同之处 一、c语言数据类型 首先,先来整体介绍一下C语言的数据类型分类。 1.基…