文章目录
前言
各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你:
📕 JavaSE基础: 基础语法, 类和对象, 封装继承多态, 接口, 综合小练习图书管理系统等
📗 Java数据结构: 顺序表, 链表, 堆, 二叉树, 二叉搜索树, 哈希表等
📘 JavaEE初阶: 多线程, 网络编程, TCP/IP协议, HTTP协议, Tomcat, Servlet, Linux, JVM等(正在持续更新)
从本篇开始介绍 MySQL 数据库的相关知识
提示:是正在努力进步的小菜鸟一只,如有大佬发现文章欠佳之处欢迎批评指点~ 废话不多说,直接上干货!
一、数据库的基本操作
📌首先要明确MySQL这个数据库软件, 是一个客户端服务器程序, 所有的数据都存放在数据库中, 其中库与表的关系 :
所以在进行表的操作之前, 先得有数据库, 下面简单介绍数据库的基本操作
1, 查看库
👉sql 语句 : show databases;
查看服务器中已有的数据库
这些数据库都是本机自带的数据库, 不要乱删!!!
2, 创建库
👉sql 语句 : create database 数据库名;
创建新的数据库
更完整的 sql 语句为 : create database if not exists 数据库名 charset 字符集;
3, 使用库
👉sql 语句: use 数据库名;
选中数据库
在对表中的数据进行增删改查之前必须要先选中数据库
4, 删除库
👉sql 语句: drop database 数据库名;
所谓的"程序员删库跑路"就是这个操作
⚠️⚠️⚠️
注意, 删库是非常危险的行为!!! 一旦删除,数据库里的表也都没了, 数据极有可能就无法恢复了,尤其是公司中的一些重要的数据(生产环境的数据)
由于真实的数据库中的数据可能是时刻变化的, 即便是有办法备份, 也会造成严重损失
二、表的基本操作
在进行表操作之前, 要先选中数据库 :
use 数据库名;
1, 创建表
👉sql 语句 : create table 表名 (列名 类型, 列名 类型....);
注意列名在前, 类型在后
- 姓名是字符串类型 在 MySQL 中的数据类型是 varchar(长度), 表示可边长字符串类型, 括号中可以指定字符串长度, 一般姓名, 性别什么的无脑指定 50 就够用
2, 查看表
👉sql 语句 : show tables;
显示(已选中的)数据库中所有的表
3, 查看表结构
👉sql 语句 : desc 表名;
这个 desc 是 describe(描述) 的意思
现在只需要关心前两个, 后面的字段是什么意思在后续的文章中介绍
4, 删除表
👉sql 语句 : drop table if exists 表名;
(if exists 可以省略) 和删库一样, 危险操作 (if exists 可以省略)
简单认识了上述库和表的基本操作后, 接下来介绍基础的增删改查
CURD 分别是 : 增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)
在增删改查之前, 先准备一张学生表(id, 学号, 姓名)
三、增加(Create)
👉sql 语句 : insert into 表名 values(字段, 字段...);
往表中插入数据
-
1️⃣单行, 全列插入(一次插入一行数据)
-
2️⃣多行, 全列插入(一次插入多行数据)
用逗号把各行的数据分开, 换行显得更加美观
-
3️⃣单行, 指定列插入
表名后面指定要插入的列名, values 后面的字段类型必须一一对应
-
4️⃣多行, 指定列插入
先来查询一下刚才插入的数据是否都成功了(查询语句下面详细介绍)
通过对比得知, 全部都插入对了, 但是下面三行数据的 sn(学号) 显示为 NULL , 是因为我们使用的是指定列插入的方式, 没有给这一列插入数据, 所以为 NULL
🚗🚗🚗
接下来介绍查询语句, 也是平常用的最多, 最重要的部分
1️⃣先准备一张表, 形如"成绩单"
2️⃣插入以下成绩
四、查询(Retrieve) (重点)
1, 全列查询
👉sql 语句 : select * from 表名;
, 星号是一个通配符, 表示查询表中所有的列
⚠️⚠️⚠️
注意, 由于现在查询出来的只是一张临时表, 也就是从硬盘中把数据读到内存, 在当前页面显示, 如果表中的数据本身非常庞大, 使用全列查询会非常非常吃网卡的带宽
现在我们的数据量少, 可以随便使用, 一旦数据量大, 就几乎不能使用这条 sql 语句, 而是使用以下 sql 语句来减少临时表中的数据
2, 指定列查询
既有指定列插入, 也有指定列查询
例如, 我要查询每个学生的语文成绩
👉sql 语句 : select 列名, 列名... from 表名;
3, 查询字段为表达式
例如, 要查询每个同学的总成绩
👉sql 语句 : select 列名/表达式 , 列名/ 表达式... fron 表名;
4, 指定别名
由于是查询出来的只是临时表, 不会改变原来表中的数据, 可以在查询时指定别名
例如刚刚查询总成绩, 临时表显示出来的 chinese + math + english 可以改成 total
👉sql 语句 : select 列名/表达式 as 别名... from 表名;
5, 去重
这张表中, 喜羊羊和灰太狼的英语成绩都是 56, 沸羊羊和小灰灰的英语成绩都是 90, 在查询时可以进行去重
👉sql 语句 : select distinct 列名, 列名.. from 表名;
去重失败的原因是, distinct 选择了多个列, 只有这两个列的数据都相同才能去重
如果只选择一个列, 就可以去重了
6, 排序
👉sql 语句 : select 列名, 列名... from 表名 order by 列名 asc/desc;
1, asc 是 ascend 的缩写, 表示升序 desc 是 descend 的缩写
2, 注意这里的 desc 和查询表结构的 desc 虽然关键字一样, 但是作用和场景都不同
3, 如果不指定排列方式, 默认升序
4, 如果列中的值是 NULL,则表示最小值
-
1️⃣对数学成绩进行降序排列
-
2️⃣对总分进行升序排列
-
3️⃣对多个字段排序, 按照书写优先级
按照英语优先, 数学其次, 语文最次的优先级进行降序排列
7, 条件查询
👉sql 语句 : select 列名 from 表名 where 条件语句;
条件查询的作用时, 查询之前就过滤掉不符合条件的数据记录
7.1, 基本查询
- 1️⃣查询数学成绩不及格的同学
- 2️⃣查询英语成绩比数学成绩高的同学
- 3️⃣查询总分小于100分的同学
7.2, 且(and)与或(or)
-
1️⃣表示且, sql 语句 :
select 列名, 列名... from 表名 where 条件语句 and 条件语句;
查询各科成绩都在 90 以上的同学
-
2️⃣表示或, sql 语句 :
select 列名, 列名... from 表名 where 条件语句 or 条件语句;
查询有一科成绩在 90 以上的同学
7.3, 范围查询
- 1️⃣表示在范围内, sql 语句 :
select 列名, 列名 from 表名 where 值 between...and...;
查询数学成绩在 80~90 之间的同学
- 2️⃣表示在选项之内, sql 语句 :
select 列名, 列名 from 表名 where 值 in (A,B,C,D...);
查询数学成绩是 58, 59, 98, 99 的同学
7.4, 模糊查询
👉sql 语句 : select 列名 from 表名 where 字段 like...;
例如我要查询名字最后一个字是"狼" 可以使用 name like “_狼” 或"%狼"
_ 和 % 都是通配符, _ 只能占用一个字符, % 可以占用多个字符
或者查询名字最后一个字是"羊"
8, 分页查询
如果表中数据量太大, 会排列在一页显示, 这不方便我们观察数据, 可以使用分页查询
👉sql 语句 : select 列名 from 表名(where 条件语句) limit n offset s ;
表示从第 s 条数据开始 查询 n 条
还有两种形式 :
select 列名 from 表名(where 条件语句) limit n ;
从 0 开始查询 n 条
select 列名 from 表名(where 条件语句) limit s, n ;
从 s 开始查询 n 条
都不够明确, 所以不推荐这样写
五、更新(Update)
👉sql 语句 : update 表名 set...
- 1️⃣把喜羊羊的数学成绩改成 0 分
- 2️⃣把数学成绩不及格的都改成 61 分
六、删除(Delete)
👉sql 语句 : delete from 表名 (条件语句)
同样是危险操作, 使用前要慎重
- 1️⃣要删除某一行数据, 必须要加条件语句, 比如删掉"沸羊羊"的数据记录
- 2️⃣如果不加 where 条件语句, 就会删掉表中所有的数据
数据都没了, 但是表还在, 要想把表删掉, 需要使用 drop 关键字, 不要弄混了
总结
以上就是本篇的全部内容, 主要介绍了 数据库的基本操作, 表的基本操作, 还有对表中数据的增删改查
其中"查"的这部分尤为重要, 其中重点掌握条件查询, 另外, 任何与删除相关的操作都需要慎重
如果本篇对你有帮助,请点赞收藏支持一下,小手一抖就是对作者莫大的鼓励啦😋😋😋~
上山总比下山辛苦
下篇文章见