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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 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;

结果:

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

1. -- 查询同学各门成绩,依次按 数学降序,英语升序,语文升序的方式显示
2. select name,math,chinese,english from exam_result order by math desc,
3. 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. = 和 <=> 的区别为当数据为nullnull = 任何数据(哪怕也是null) 结果都为null 如果是<=>

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

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

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

案例:

基本查询:

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

1. -- 查询英语不及格的同学及英语成绩 ( < 60 )
2. 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_result
 order 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基本操作总结的所以内容了,希望能够对你有所帮助.


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
13天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
87 15
|
6天前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。
|
13天前
|
关系型数据库 MySQL 数据库
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。
|
17天前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
25天前
|
关系型数据库 MySQL 数据库
GBase 数据库如何像MYSQL一样存放多行数据
GBase 数据库如何像MYSQL一样存放多行数据
|
1月前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
39 1
|
1月前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
54 4
|
1月前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
251 1
|
1月前
|
运维 关系型数据库 MySQL
安装MySQL8数据库
本文介绍了MySQL的不同版本及其特点,并详细描述了如何通过Yum源安装MySQL 8.4社区版,包括配置Yum源、安装MySQL、启动服务、设置开机自启动、修改root用户密码以及设置远程登录等步骤。最后还提供了测试连接的方法。适用于初学者和运维人员。
175 0
|
1月前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第26天】数据库作为现代应用系统的核心组件,其性能优化至关重要。本文主要探讨MySQL的索引策略与查询性能调优。通过合理创建索引(如B-Tree、复合索引)和优化查询语句(如使用EXPLAIN、优化分页查询),可以显著提升数据库的响应速度和稳定性。实践中还需定期审查慢查询日志,持续优化性能。
105 0

推荐镜像

更多
下一篇
DataWorks