MySql入门教程--MySQL数据库基础操作

꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱
ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客
本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如需转载还请通知˶⍤⃝˶
个人主页:xiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客

系列专栏:xiaoxie的MySql学习系列专栏——CSDN博客●'ᴗ'σσணღ
我的目标:"团团等我💪( ◡̀_◡́ ҂)" 

( ⸝⸝⸝›ᴥ‹⸝⸝⸝ )欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​+关注(互三必回)!

 一.数据库的操作

1.1 显示当前的数据库

show databases;

1.2创建数据库 

create database Test;

可以使用显示当前的数据库的操作查看是否创建成功

1.3 使用数据库

 use 数据库名;

这里需要特别提醒:当我们对这个数据库进行增删改查操作表的时候,我们需要先use 数据库名

1.4 删除数据库

语法:

 drop database 数据库名

 可以使用显示当前的数据库的操作查看是否删除成功

同时这里博主提醒一下数据库删除以后,内部看不到对应的数据库,里边的表和数据全部被删除,可能目前我们操作的是自己的数据库,删库后影响不大,但我们工作之后, 删库操作就要小心谨慎

二.常用数据类型

MySQL 的数据类型有大概可以分为整数类型、浮点数类型和定点数类型、日期和时间类型、字符串类型、二进制类型等.

2.1  整数类型

MySQL 主要提供的整数类型有 TINYINTSMALLINTMEDIUMINTINTBIGINT,其属性字段可以添加 AUTO_INCREMENT 自增约束条件。

类型名称说明储存需求
TINYINT很小的整数一个字节
SMALLINT小的整数两个字节
MEDIUMINT中等大小的整数三个字节
INT普通大小的整数四个字节
BIGINT大整数八个字节

2.2  浮点类型

MySQL 中使用浮点数和定点数来表示小数。

浮点类型有两种,分别是单精度浮点数(FLOAT)和双精度浮点数(DOUBLE);定点类型只有一种,就是 DECIMAL

浮点类型和定点类型都可以用(M, D)来表示,其中 M 称为精度,表示总共的位数;D 称为标度,表示小数的位数。例如DECIMAL(3,1)可以为99.0 但不可以为100.0 因为它总的位数最大为3,而100.0为`4.

浮点数类型的取值范围为 M(1~255)和 D(1~30,且不能大于 M-2),分别表示显示宽度和小数位数。M 和 D 在 FLOAT 和DOUBLE 中是可选的,FLOAT 和 DOUBLE 类型将被保存为硬件所支持的最大精度。DECIMAL 的默认 D 值为 0、M 值为 10。

类型名称说明储存需求
FLOAT(M, D)单精度,M指定长度,D指定 小数位数。会发生精度丢失4字节
DOUBLE(M, D)双精度,M指定长度,D指定 小数位数。会发生精度丢失8字节
DECIMAL(M, D)定点类型,M指定长度,D表示 小数点位数。精确数值

M+2字节

2.3  日期和时间类型 

MySQL 中有多处表示日期的数据类型:YEARTIMEDATEDTAETIMETIMESTAMP。当只记录年信息的时候,可以只使用 YEAR 类型。每一个类型都有合法的取值范围,当指定确定不合法的值时,系统将“零”值插入数据库中。

2.4字符串类型

字符串类型用来存储字符串数据,还可以存储图片和声音的二进制数据。字符串可以区分或者不区分大小写的串比较,还可以进行正则表达式的匹配查找。

MySQL 中的字符串类型有 CHAR、VARCHAR、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT、ENUM、SET 等。下表中列出了 MySQL 中的字符串数据类型,括号中的 M 表示可以为其指定长度。

2.5总结

总的来说我们常用的数据类型就几个:INT,FLOAT,DOUBLE,DECIMAL,VARCHAR,DATETIME. 至于其他的几个数据类型,具体问题具体分析.

三.表的操作

需要操作数据库中的表时,需要先使用该数据库:

use 数据库名;

 3.1 显示当前库的所有表

show tables;

3.2查看表结构

desc 表名;

3.3创建表

语法:

create table 表名(
字段1(列名) 数据类型,
字段2(列名) 数据类型,
字段3(列名) 数据类型,
....      .....
);

示例:

create table student(id int,name varchar(20),gender varchar(2),age int);

结果:

显示是否成功创建表

显示当前表结构是否成功创建 

 3.4删除表

语法格式:

drop table 表名

示例:

drop table student -- 删除学生表

结果:

显示是否成功删除表

四.CRUD(增删改查操作)

4.1 新增(Create)

语法:

insert (into) 表名values(数据);

说明:

这里插入数据的数据类型,和顺序必须要和当前表的数据类型,顺序相同

1.单行数据

全列插入

案例:插入一条id为1name为张三性别为男年龄为18的学生信息到学生表

insert into student values(1,"张三","男",18);

注意由于SQL是一门弱类型的语言所以,字符串可以使用双引号 " " 或者单引号 ' '  修饰

结果:

指定列插入

语法:

insert into student(指定列) values(数据);

 案例:插入一条id为2name为李四性别为男的学生信息到学生表

insert into student(id,name,gender) values(1,"李四","男");

结果:

说明:可以看到没有指定插入列的那一行的值为null,同时指定列插入也同时需要, 插入数据的数据类型,和顺序必须要和当前表的数据类型,顺序相同.

2.多列插入

语法:

insert into 表名 values(数据),(数据);

案例: 插入一条id为3name为王五性别为女年龄为19和id为4name为赵六性别为男年龄为21的学生信息到学生表

insert into student values(3,"王五","女",19),(4,"赵六","男",21);

 结果:

指定列多行插入和上述的一样这里博主就不过多的赘述了

4.2查询

在我们以后工作的场景中,查询才是所有操作中应用最多的操作,所以一定要尽量熟练掌握

1 全列查询 

语法:

select * from 表名

案例:查询学生表的所有学生信息

select * from student;

结果:

 说明:这里需要记住的是,虽然全列查询很方便也很简单,当这是在我们自己学习的数据库,数据量不会很多,在日后工作后,一张表的数据可能都有百万级别甚至更大查询的列越多,意味着需要传输的数据量越大;

2.指定列查询

这里为了后续的案例分析,我们先创建一张表,和一些数据

-- 创建考试成绩表
DROP TABLE IF EXISTS exam_result;
CREATE TABLE exam_result (id INT,name VARCHAR(20),chinese DECIMAL(3,1),math DECIMAL(3,1),english DECIMAL(3,1)
);
-- 插入测试数据
INSERT INTO exam_result (id,name, chinese, math, english) VALUES(1,'唐三藏', 67, 98, 56),(2,'孙悟空', 87.5, 78, 77),(3,'猪悟能', 88, 98.5, 90),(4,'曹孟德', 82, 84, 67),(5,'刘玄德', 55.5, 85, 45),(6,'孙权', 70, 73, 78.5),(7,'宋公明', 75, 65, 30);

语法:

--单列查询
select 指定列 from 表名;
--多列查询
select 指定列,指定列,指定列 from 表名;
--可以加算术表达式
select 指定列,指定列+指定列 from 表名

案例:

查询所以考生的名字和该考生的总分在考试信息表中;

select name,chinese+math+english from exam_result;

结果:

 说明:

这里的指定列并不需要按照表的列的顺序,以及如果要用算术表达,类型要为,整数型或者浮点型,同时类型还需要相同

3.别名

语法:

select 列名 as 别名 from 表名;

案例:

查询所以考生的名字和该考生的总分在考试信息表中;

select name,chinese+math+english as total from exam_result;

 结果:

4.去重

语法:

select distinct 列名 from 表名;

案例:

 

5. 排序:ORDER BY 

语法:

-- ASC 为升序(从小到大)
-- DESC 为降序(从大到小)
-- 默认为 ASC
select 列名 from 表名 order by(asc|desc) (指定列);

案例:查询同学及总分,由高到低 

select name,chinese+math+english as total from exam_result order by total desc;

结果: 

可以对多个字段进行排序,排序优先级随书写顺序 

-- 查询同学各门成绩,依次按 数学降序,英语升序,语文升序的方式显示
select name,math,chinese,english from exam_result order by math desc,
english,chinese;

 结果:

说明:. NULL 数据排序,视为比任何值都小,升序出现在最上面,降序出现在最下面

6.条件查询:WHERE 

比较运算符

运算符说明
>, >=, <, <=大于,大于等于,小于,小于等于
=等于,NULL 不安全,例如 NULL = NULL 的结果是 NULL
<=>等于,NULL 安全,例如 NULL NULL 的结果是 TRUE(1
!=, <>不等于
BETWEEN a0 AND a1范围匹配,[a0, a1],如果 a0 <= value <= a1,返回 TRUE(1)
IN (option, ...)如果是 option 中的任意一个,返回 TRUE(1)
IS NULL是 NULL
IS NOT NULL不是 NULL
LIKE模糊匹配。% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字 符
AND多个条件必须都为 TRUE(1),结果才是 TRUE(1)
OR任意一个条件为 TRUE(1), 结果为 TRUE(1)
NOT条件为 TRUE(1),结果为 FALSE(0

说明:

1. = 和 <=> 的区别为当数据为null时 null = 任何数据(哪怕也是null) 结果都为null 如果是<=>

null <=> null 结果 就为 true(1);

2.. WHERE条件可以使用表达式,但不能使用别名

3.AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分

案例:

基本查询:

查询英语不及格的同学及英语成绩 ( < 60 )

-- 查询英语不及格的同学及英语成绩 ( < 60 )
select name,english from exam_result where english < 60;

 -- 查询语文成绩好于英语成绩的同学

 select name,english,chinese from exam_result where chinese > english;

-- 查询总分在 200 分以下的同学

select name,math+english+chinese as total from exam_result where chinese + english+math < 200;

这里要注意where 后边不可以跟别名

 AND与OR:

案例:

查询语文成绩大于80分,且英语成绩大于80分的同学

 select name,chinese,english from exam_result where chinese > 80 and english > 80;

 查询语文成绩大于80分,或英语成绩大于80分的同学

select name,chinese,english from exam_result where chinese > 80 or english > 80;

范围查询: 

1. BETWEEN ... AND ...

查询语文成绩在 [80, 90] 分的同学及语文成绩

select name,chinese from exam_result where chinese between 80 and 90;

2. IN

查询数学成绩是 58 或者 65 或者 98 或者 99 分的同学及数学成绩

select name,math from exam_result where math in(58,65,98,99);

模糊查询:LIKE

% 匹配任意多个(包括 0 个)字符

select name from exam_result where name like"孙%";

_ 匹配严格的一个任意字符 

select name from exam_result where name like"孙_";

7. 分页查询:LIMIT 

语法:

-- 从 0 开始,筛选 n 条结果
select 列名 from 表名 (where) (order by 列名) limit n;
----从 s 开始,筛选 n 条结果
select 列名 from 表名 (where) (order by 列名) limit s,n;
----从 s 开始,筛选 n 条结果(建议使用这个方法,更直观)
select 列名 from 表名 (where) (order by 列名) limit n offset s;

案例:按 id 进行分页,每页 3 条记录,分别显示 第 1、2、3 页

-- 第 1 页
select * from exam_result order by id limit 3;
-- 第 2 页
select * from exam_result order by id limit 3 offset 3;-- 第 3 页,如果结果不足 3 个,不会有影响
select * from exam_result order by id limit 3 offset 6;

 结果:

案例查询总分为前三的同学信息

 select name,math + chinese + english as total from exam_resultorder by total desc limit 3;

4.3修改(Update)

语法:

update 表 set 字段1=value1, 字段2=value2... where 条件(order by )(limit)

案例:

将孙悟空同学的数学成绩变更为 80 分

 update exam_result set math = 80 where name = "孙悟空";

将总成绩倒数前三的 3 位同学的语文成绩加上 5分

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

修改前:

 修改后:

 4.4 删除(Delete)

语法:

delete from 表名 (where)(order by)(limit)

案例:

-- 准备测试表
create table text_delect(id int);
-- 插入数据
insert into text_delect values(1),(2),(3),(4);
-- 删除数据
delete from text_delect where id = 1;

以上就是博主关于Mysql基本操作总结的所以内容了,希望能够对你有所帮助. 

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

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

相关文章

Typora设置文本颜色

目录 总共分为三种方法 1.使用markdown语法的内联公式 2.使用HTML语法 3.借助第三方软件&#xff08;不建议&#xff0c;操作没那么顺滑&#xff09; 总共分为三种方法 1.使用markdown语法的内联公式 <1>首先需要在设置中勾选Markdown扩展语法下的内联公式&#xff…

【计算机系统结构】重叠方式

&#x1f4dd;本文介绍 本文主要内容位计算机系统结构的重叠方式 &#x1f44b;作者简介&#xff1a;一个正在积极探索的本科生 &#x1f4f1;联系方式&#xff1a;943641266(QQ) &#x1f6aa;Github地址&#xff1a;https://github.com/sankexilianhua &#x1f511;Gitee地址…

深入浅出落地应用分析:AI数字人「微软小冰」

hi,各位,今天要聊的是AI小冰,机缘巧合,投递了这家公司的产品,正好最近在看数字人相关的,就详细剖析下这款产品! 前言 小冰,全称为北京红棉小冰科技有限公司,前身为微软(亚洲)互联网工程院人工智能小冰团队,是微软全球最大的人工智能独立产品研发团队。作为微软全…

Redis中的缓存设计

缓存穿透 缓存穿透是指查询一个根本不存在的数据&#xff0c;缓存层和存储层都不会命中&#xff0c;通常处于容错的考虑&#xff0c;如果从存储层查不到数据则不写入缓存层。缓存穿透将导致不存在的数据每次请求都要到存储层去查询&#xff0c;失去了缓存保护后端存储的意义。…

mysql5.7离线安装 windows

windows上离线安装mysql5.7 下载安装包 去官网下载对应版本的mysql官网 点击archives,接着选择自己要下载的版本&#xff0c;选择windows系统&#xff0c;并根据自己电脑的位数选择相应的版本【找到“此电脑”&#xff0c;鼠标右击&#xff0c;出来下拉框&#xff0c;选择“属性…

【django framework】ModelSerializer+GenericAPIView接口数据流

GenericAPIView数据从序列化到最终返回响应的数据流 // 以ModelSerializergenerics.CreateAPIView为例 程序终归是为了处理数据&#xff0c;怎么处理&#xff0c;以怎样的顺序和方法去处理&#xff0c;就涉及到了具体的业务流程。当我们是用了一个牛掰的框架&#xff0c;发现原…

考察c语言关键字

C语言——关键字 1.问题&#xff1a;简述goto语句的作用 答&#xff1a;无条件跳转 具体来说&#xff0c;其作用在于允许程序在执行时无条件地跳转到指定的标签位置&#xff0c;并从该标签位置继续执行。通过goto语句&#xff0c;可以实现程序流程的无条件转移&#xff0c;使得…

使用PWM实现呼吸灯功能

CC表示的意思位捕获比较&#xff0c;CCR表示的是捕获比较寄存器 占空比等效于PWM模拟出来的电压的多少&#xff0c;占空比越大等效出的模拟电压越趋近于高电平&#xff0c;占空比越小等效出来的模拟电压越趋近于低电平&#xff0c;分辨率表示的是占空比变化的精细程度&#xf…

离线安装docker、docker-compose、Mysql镜像

离线安装docker docker-compose mysql镜像 一、下载docker docker-compose mysql 镜像文件 1、首先下载docker镜像 博主所用文件版本号&#xff1a; docker-23.0.6.tgz 下载docker 地址 &#xff1a;https://blog.csdn.net/xiaohanshasha/article/details/135489623?spm1001…

【Hadoop大数据技术】——MapReduce经典案例实战(倒排索引、数据去重、TopN)

&#x1f4d6; 前言&#xff1a;MapReduce是一种分布式并行编程模型&#xff0c;是Hadoop核心子项目之一。实验前需确保搭建好Hadoop 3.3.5环境、安装好Eclipse IDE &#x1f50e; 【Hadoop大数据技术】——Hadoop概述与搭建环境&#xff08;学习笔记&#xff09; 目录 &#…

网络安全,硬防迪云

要减少被攻击的频率&#xff0c;游戏开发者可以采取以下措施&#xff1a; 1. 强化安全措施&#xff1a;确保游戏服务器和用户数据的安全性&#xff0c;加密网络传输&#xff0c;防止黑客攻击和数据泄露。 2. 更新和修复漏洞&#xff1a;定期检查游戏代码和服务器&#xff0c;…

Java学习笔记(14)

常用API Java已经写好的各种功能的java类 Math Final修饰&#xff0c;不能被继承 因为是静态static的&#xff0c;所以使用方法不用创建对象&#xff0c;使用里面的方法直接 math.方法名 就行 常用方法 Abs,ceil,floor,round,max,minm,pow,sqrt,cbrt,random Abs要注意参数的…

【汇编】#5 80x86指令系统其一(数据传送与算术)

文章目录 一、数据传送指令1. 通用数据传送指令1.1 MOV传送指令tips:MOV指令几条特殊规定 1.2 XCHG交换指令1.3 进栈指令PUSH1.4 出栈指令POP1.5 所有寄存器进出栈指令PUSHA/POPAtips:SP特别处理 2. 累加器专用传送指令2.1 输入指令IN2.2 OUT输出指令2.3 IO端口与8086CPU通讯关…

【Linux-网络编程】

Linux-网络编程 ■ 网络结构■ C/S结构■ B/S结构 ■ 网络模型■ OSI七层模型■ TCP/IP四层模型 ■ TCP■ TCP通信流程■ TCP三次握手■ TCP四次挥手 ■ 套接字&#xff1a;socket 主机IP 主机上的进程&#xff08;端口号&#xff09;■ TCP传输文件 ■ 网络结构 ■ C/S结构…

高亮页面任意元素,轻松完成用户引导 | 开源日报 No.201

kamranahmedse/driver.js Stars: 20.1k License: MIT driver.js 是一个轻量级、无依赖的纯 JavaScript 引擎&#xff0c;用于引导用户在页面上聚焦。该项目解决了如何在网页上引导用户关注核心要素的问题。 简单易用&#xff1a;没有任何外部依赖轻量级&#xff1a;仅有 5kb …

中间件 | RPC - [Dubbo]

INDEX 1 Dubbo 与 web 容器的关系2 注册发现流程3 服务配置3.1 注册方式 & 订阅方式3.2 服务导出3.3 配置参数 4 底层技术4.1 Dubbo 的 spi 机制4.2 Dubbo 的线程池4.3 Dubbo 的负载均衡策略4.3 Dubbo 的协议 1 Dubbo 与 web 容器的关系 dubbo 本质上是一个 RPC 框架&…

SpringCloud Stream 消息驱动

一、前言 接下来是开展一系列的 SpringCloud 的学习之旅&#xff0c;从传统的模块之间调用&#xff0c;一步步的升级为 SpringCloud 模块之间的调用&#xff0c;此篇文章为第九篇&#xff0c;即介绍 Stream 消息驱动。 二、消息驱动概念 2.1 消息驱动是什么 官方定义 Spring …

学习通刷视频刷题脚本及安装使用过程

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、安装插件二、复制脚本文件链接三、启动脚本四、登录学习通&#xff08;切记一倍速就行不然被封哦&#xff09;五、最好先把答题关掉先刷视频 前言 解决学习…

AI技术崛起:数据可视化之路更近

在当今AI技术蓬勃发展的时代&#xff0c;数据可视化作为信息传达的重要手段&#xff0c;其门槛逐渐降低。然而&#xff0c;这并不意味着我们可以忽视学习数据可视化的重要性。即使不需要深入专业技术&#xff0c;对数据可视化的基础知识的了解也是至关重要的。那么&#xff0c;…

02-Java变量和运算符

1. 基本数据类型转换&#xff08;Conversion&#xff09; 在Java程序中&#xff0c;不同的基本数据类型的值经常需要进行相互转换。Java语言所提供的七种数值类型之间可以相互转换&#xff0c;基本数据类型转换有两种转换方式&#xff1a;自动类型转换和强制类型转换。boolean…