MySQL的操作

一.数据库的操作

        1.创建数据库

                create database (if not exists) 数据库名称 (character set/charset 字符集名称);

                SQL中有特定含义的单词(create database)也就是关键字 在创建数据库名 表名 列名的时候都可以和关键字重复 。

                if not exists:使用if not exists 是为了处理在创建数据库的时候会有重复的问题,使用if not exists 可以避免sql报错(实际工作中很多时候是把一系列sql写到文件中,批量执行的,很少会一条一条的执行,在批量执行的情况下,如果一条sql报错了,后面的sql就无法继续执行了)。

                character set/charset 字符集名称:MySQL的默认字符集是拉丁文,是不支持中文的,所以想要使数据库支持中文就需要在创建数据的时候指定数据库的字符集。

                在计算机中,不同的字符集中,不同的编码方式下,一个汉字占几个字节是不同的。

                字符集一般是使用UTF8,在这个字符集中汉字是占3个字节的。UTF8是从Unicode字符集中衍生过来的。

                Unicode是给一个字符进行编码的,但是如果是字符串就不可以了,UTF8也可以被称为Unicode的字符串版本。

                在Java中,char数据类型是使用Unicode来进行编码的,string类型是使用UTF8来进行编码的(在使用时Java内部会自动进行转换)。

                MySQL中的UTF8并不是完整的,因为它并不支持emoj! UTF8mb4是MySQL独有的是完整的UTF8。

        2.查看数据库

                show databases;

                这些都是MySQL数据库中自带的数据库,修改MySQL的配置可以通过mysql这个数据库。 

        3.选中数据库

                use 数据库名;

                数据库中最关键的操作就是针对数据库中的表的增删改查,表是从属与数据库中的,所以操作表的前提需要限定含有这张表的数据库。 

        4.删除数据库

                drop database 数据库名;

                删除数据库中的所有数据。

二.数据库的分类

        数据库一般分为线上数据库和线下数据库。

        线上数据库:生产环境的数据库和用户直接对接。线上数据库一般都是有报警的,如果一个线上MySQL服务器程序挂了,会有专门的报警程序检测到给管理数据库的工作人员发送报警的,但是在工作人员发布新版本的时候,就会重启服务器,此时就会会产生误报,所以在发布新版本的时候需要先关闭报警,然后发布新版本,然后在打开报警。

        线下数据库:用于开发/测试,里面的数据都是自己构造的假的数据。

三.数据中表的操作

        1.创建表

                create table 表名(列名 列的类型,列名 列的类型,...);

                一般情况下是比建议表名和列名同数据库的关键字相同的,但是在特殊的情况下如果一定需要相同,可以使用``将表名和列名反引起来。

                一个表包含很多行,每一行也成为一个记录,一行的每一个列成为一个字段,每一个列都有一个自己的类型。

               数值类型:

                float(m,d):()是用来描述精度的,m表示小数一共有多少位,1.23有三位,d是用来藐视小数点后面有多少位的。

                decimal相对于double来说,运算更慢,占用的空间也更多。

                扩展资料

                        数值类型可以指定为无符号(unsigned),表示不取负数。1字节(bytes)= 8bit。上面的数据类型都是有符号的,MySQL官方并不建议使用无符合,并且表示后面会将无符号删除。

                对于整型类型的范围:
                        1. 有符号范围:-2^(类型字节数*8-1)到2^(类型字节数*8-1)-1,如int是4字节,就 是-2^31到2^31-1
                        2. 无符号范围:0到2^(类型字节数*8)-1,如int就是2^32-1 尽量不使用unsigned,对于int类型可能存放不下的数据,int unsigned同样可能存放不下,与其如此,还不如设计时,将int类型提升为bigint类型。
                字符串类型:

                SIZE是表示的是可以存储几个字符(不是字节).如果SZIE = 10系统并不会马上为其分配存储10个字符的空间,而是先分配给它一部分,如果不足后面会自动扩展,但是最大的存储字符的数量不会超过10。 

                二进制形式的文本数据:通常指的是图片,音乐,视频,但是又因为BLOB的存储空间小,所以一般不使用这个数据类型来存储这些数据(一般很少会在数据库中的某一列中存储特别大的数据(几兆或者几百兆),因为这样做会影响数据库的增删改查的效率),实际上一般在存储这样的数据的时候会先将这些数据放到单独的目录中,然后数据库中只保存这些目录的地址。

                日期类型:    

                        时间戳:1970年1月1日 0:0:0到现在的毫秒数。 

        2.查看表

                show tables;

        3.查看指定表的结构

                desc  表名;

        4.删除表

                drop table 表名; 

四.MySQL的表的增删改查(CRUD)

        1.增(C)

                增加一行的所有列:

                        insert into 表名 values(值,值...);

                        这里新增的值需要和表中的列的数量和类型一致。

                        使用''或""来表示字符串,SQL中没有字符这个类型。

                指定一行的某一列:

                        insert into 表名 (列名,列名...) values(值,值...);

                        此时这一行中的没有复制的列,会自动被赋值为默认值。

                一次插入多行记录:

                        insert into 表名 (列名,列名...) values(值,值...),(值,值...);

                在插入datatime类型数据时可以使用一个固定的字符串来插入:

                如果想让时间为当前时刻,可以使用now()函数:

        2.查(R) 

                全列查询:

                        select * from 表名;

                        将表中所有行和列都查询出来,这里查询出来后,服务器通过网络把这些数据返回给客户端,并且以表格的形式打印出来。

                        select * 是一个非常危险的操作,因为MySQL是一个“客户端-服务器”结构的程序,客户端中进行的操作,都是以请求的方式发送给服务器的,服务器被动接收这些请求处理完后,将响应返回给客户端,这个中间的过程都在在网络的环境中实现的,所以当一个表中有很多的数据的时候使用select *就会产生问题,导致服务器挂了。

                指定列查询:

                        select (列名,列名...) from 表名;

                查询字段为表达式:

                        select (列名,列名表达式 as 别名) from 表名;                

                        这样操作并不会修改数据库服务器中的原始数据只是在最终响应时发生的临时计算,用于临时展示。                        

                        distinct:去除掉同一列中的相同值,如果distinct去修饰多个列,那么列中的数据出现整行都一样的情况才会去除。

                在查询的时候进行排序(临时):

                        select 列名 from 表名 order by 列名 asc(升序)/desc(降序);

                        前面的列名可以不包含后面的列名。

                        如果不手动指定asc还是desc的话默认是asc。

                        如果一个sql语句不加order by那么所查出来的数据的顺序是得不到保证的,前面的查询操作所查出来的数据看似顺序是一定的,如果做一些复杂操作后数据的顺序就有可能发生变化,如果不加order by代码就不应该依赖上述的顺序,尤其是在代码中,就不能依靠上述的顺序来展开逻辑。(因为数据库并没有承诺过你这个数据是有序的)

                        order by也可以根据表达式来排序 也可以使用表达式别名。

                         同时也可以根据多个列来排序,多个列先按照前面的列进行排序,在按照后面的列排序。 

        条件查询(where):

                select 列名 from 表名 where 条件;

 

   

         分页查询:LIMIT

       3.修改(U)

                update 表名 set 列名 = 值 where条件/order by/limit;

                可以一次修改多个列用,隔开。

                如果没有条件限制就是对整列的内容都就行修改。

                查询出总成绩倒数前三的同学并且将其的数学成绩加30。

                update exam_result set math = math + 30 order by chinese + math + english limit 3; 

                注意,这里的成绩加完30后有可能超过成绩的类型限制。

                不可以math += 30。         

        4.删除 (D)

                delete 表名 where条件/order by/limit;

                delete和update的操作都是很危险的操作,因为对于表中的数据都是永久性的改变,所以在操作前最好先对数据进行备份。

                数据备份:

                        将数据的文件进行全量备份。

                        mysqldump工具(mysql自带的程序)会将mysql中的数据导出成一系列的insert语句,再把这些insert语句,放到另一个mysql中进行执行。

                        mysql还有一个binlog功能(将mysql中的各种操作都通过日志的形式记录下来),借助binlog(让另一个数据库按照binlog的内容执行,就能得到一样的数据)。       

        

 

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

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

相关文章

MariaDB *MaxScale*实现mysql8读写分离

1.MaxScale 是干什么的? MaxScale是maridb开发的一个mysql数据中间件,其配置简单,能够实现读写分离,并且可以根据主从状态实现写库的自动切换,对多个从服务器能实现负载均衡。 2.MaxScale 实验环境 中间件192.168.12…

响应式编程_05 Project Reactor 框架

文章目录 概述响应式流的主流实现框架RxJavaReactor Project Reactor 框架Reactor 异步数据序列Flux 和 Mono 组件FluxMono 操作符背压处理 小结 概述 响应式编程_02基本概念:背压机制 Backpressure介绍了响应式流规范以及 Spring 框架中的响应式编程技术&#xff…

免费windows pdf编辑工具Epdf

Epdf(完全免费) 作者:不染心 时间:2025/2/6 Github: https://github.com/dog-tired/Epdf Epdf Epdf 是一款使用 Rust 编写的 PDF 编辑器,目前仍在开发中。它提供了一系列实用的命令行选项,方便用户对 PDF …

计算机组成原理(3)

计算机组成原理(3) 存储器层次结构存储器概述存储器分类存储器性能指标 半导体随机存储SRAM和DRAM 存储器层次结构 主存-辅存:实现了虚拟存储系统,解决了主存容量不足的问题; Cache-主存:解决了主存于CPU速…

html 列动态布局

样式说明: /* 列动态布局,列之间以空格填充 */ li {display: flex;/* flex-direction: column; */justify-content: space-between; }

25/2/8 <机器人基础> 阻抗控制

1. 什么是阻抗控制? 阻抗控制旨在通过调节机器人与环境的相互作用,控制其动态行为。阻抗可以理解为一个力和位移之间的关系,涉及力、速度和位置的协同控制。 2. 阻抗控制的基本概念 力控制:根据感测的外力调节机械手的动作。位置…

Redis03 - 高可用

Redis高可用 文章目录 Redis高可用一:主从复制 & 读写分离1:主从复制的作用2:主从复制原理2.1:全量复制2.2:增量复制(环形缓冲区) 3:主从复制实际演示3.1:基本流程准…

蓝桥杯C语言组:图论问题

蓝桥杯C语言组图论问题研究 摘要 图论是计算机科学中的一个重要分支,在蓝桥杯C语言组竞赛中,图论问题频繁出现,对参赛选手的算法设计和编程能力提出了较高要求。本文系统地介绍了图论的基本概念、常见算法及其在蓝桥杯C语言组中的应用&#…

在阿里云ECS上一键部署DeepSeek-R1

DeepSeek-R1 是一款开源模型,也提供了 API(接口)调用方式。据 DeepSeek介绍,DeepSeek-R1 后训练阶段大规模使用了强化学习技术,在只有极少标注数据的情况下提升了模型推理能力,该模型性能对标 OpenAl o1 正式版。DeepSeek-R1 推出…

Ollama + AnythingLLM + Deepseek r1 实现本地知识库

1、Ollama:‌是一个开源的大型语言模型 (LLM)服务工具,旨在简化在本地运行大语言模型的过程,降低使用大语言模型的门槛‌。 2、AnythingLLM:是由Mintplex Labs Inc. 开发的一款全栈应用程序,旨在构建一个高效、可定制、…

(Arxiv-2023)HiPA: 通过高频增强自适应实现一步文本到图像扩散模型

HiPA: 通过高频增强自适应实现一步文本到图像扩散模型 paper是NUS发布在Arxiv 2023的工作 paper title:HiPA: Enabling One-Step Text-to-Image Diffusion Models via High-Frequency-Promoting Adaptation Code:等待开源 Abstract 扩散模型已彻底改变了文本到图像…

Java版本与JDK版本

两者关联 Java版本指的Java语言和平台的版本,例如Java8、Java11、Java17等,每个版本会引入新特性、改进和修复。 JDK(Java Development Kit)版本则是开发工具包,包含编译器、调试器等工具,通常与Java版本对应,例如JDK…

【C语言标准库函数】三角函数

目录 一、头文件 二、函数简介 2.1. 正弦函数:sin(double angle) 2.2. 余弦函数:cos(double angle) 2.3. 正切函数:tan(double angle) 2.4. 反正弦函数:asin(double value) 2.5. 反余弦函数:acos(double value)…

活动预告 |【Part 2】Microsoft 安全在线技术公开课:通过扩展检测和响应抵御威胁

课程介绍 通过 Microsoft Learn 免费参加 Microsoft 安全在线技术公开课,掌握创造新机遇所需的技能,加快对 Microsoft Cloud 技术的了解。参加我们举办的“通过扩展检测和响应抵御威胁”技术公开课活动,了解如何更好地在 Microsoft 365 Defen…

MySQL第五次作业

根据图片内容完成作业 1.建表 (1)建立两个表:goods(商品表)、orders(订单表) mysql> create table goods( -> gid char(8) primary key, -> name varchar(10), -> price decimal(8,2), -> num int); mysql> create t…

Breakout靶场小试牛刀

1.首先经典两件套 nmap -A 扫描 发现开放很多端口(80,10000,20000为重点关注) 问题不大,先dirsearch扫一下目录再说 结果能看的manual里啥也没有,之后再查看80端口界面源代码 发现有一串字符 但是问了ai…

Vue el-tree 加载过滤出的父节点以及其包含的子节点

由于el-tree提供的过滤函数&#xff0c;过滤出来的目录节点不包含子节点&#xff0c;因此需要改造过滤函数&#xff0c;使其过滤出的目录节点包含子节点。 <template><div><el-input placeholder"请输入内容" v-model"filterText" clearab…

认识O(NlogN)的排序

归并排序 归并排序&#xff08;任何一个递归&#xff09;如果不懂可以画一个树状结构去帮助自己去理解。 核心排序方法为Merger public class 归并排序 {public static void main(String[] args) {int[] arr1 {3, 1, 2, 2, 5, 6};int[] arr2 Arrays.copyOf(arr1, arr1.len…

如何使用Gemini模型,国内如何订阅购买Gemini Pro的教程,Gemini Pro 免费试用操作步骤, 谷歌 aistudio 使用入口

最近的榜首又被Gemini给霸占了&#xff0c;很多童鞋想要体验一翻 Gemini免费库模型更新了 Gemini2.0向所有人开放了&#xff01;使用了真香 目前呢2.0flash和Gemini-2.0-Flash-Thinking-Exp、Gemini-2.0-Flash-Thinking-Exp-with-apps已经免费给所有注册用户开放了&#xff0c…

【数据结构】(7) 栈和队列

一、栈 Stack 1、什么是栈 栈是一种特殊的线性表&#xff0c;它只能在固定的一端&#xff08;栈顶&#xff09;进行出栈、压栈操作&#xff0c;具有后进先出的特点。 2、栈概念的例题 答案为 C&#xff0c;以C为例进行讲解&#xff1a; 第一个出栈的是3&#xff0c;那么 1、…