【MySQL】基础知识(二)

MySQL基础知识(二)

文章目录

  • MySQL基础知识(二)
    • 01 表操作
      • 1.1 创建表
      • 1.2 查看所有表
      • 1.3 查看指定表的结构
      • 1.4 删除表
      • 练习
    • 02 CURD
      • 2.1 新增
        • 2.1.1 指定列插入
        • 2.1.2 datetime类型插入
      • 2.2 查询
        • 2.2.1 全列查询
        • 2.2.2 指定列查询
        • 2.2.3 查询字段为表达式
        • 2.2.4 别名查询
        • 2.2.5 去重
        • 2.2.6 查询时排序
        • 2.2.7 ‼️条件查询 WHERE
        • 2.2.8 分页查询 LIMIT
      • 2.3 修改
      • 2.4 删除

衔接上文 MySQL基础知识(一),我们已经了解以下相关知识。

  • 一个数据库服务器上,可以把很多有业务联系上的表放到一起,构成了一个逻辑上的“数据集合”,称为数据库。

  • 数据库操作:

    • 创建数据库

      create database 数据库名字 charset utf8;
      
    • 查看数据库

      show databases;
      
    • 选中指定的数据库

      use 数据库名;
      
    • 删除数据库

      drop database 数据库名;
      

那么下面我们继续来聊,MySQL的基础知识。

在这里插入图片描述


01 表操作

1.1 创建表

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

聊聊类型:

整数: int long
小数   double decimal
字符串  varchar
时间日期 datetime

MySQL其实也提供了无符号版本的数据库类型(unsigned),但是在官方文档上明确写了不建议使用,在未来也会删除。

因为两个无符号类型相减,可能会产生溢出的情况。

1.2 查看所有表

show tables

这里要注意,如果直接show tables;,是会报错的。

在这里插入图片描述

正确的操作应该是:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里由于没有在Test1中存任何东西,所以是empty。

1.3 查看指定表的结构

desc 表名;

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1.4 删除表

drop table 表名;

删除表的同时,也会把表里的数据一起删掉。

删除表切记一定要慎重!其严重性可能比删除数据库还要严重。

假设数据库有100个表,删库,是把100个都删了,删表,只是删掉一个。
如果是删库操作,你的程序一定是第一时间就报错了赶紧进行处理.(把之前备份的数据恢复回去)
如果是删表操作,你的程序就不一定第一时间报错了发现时间就会更晚.
程序就以错误的状态在生产环境又运行了很长时间(都是带伤运行的)=>以错误的数据,运行过程。


练习

  • 有一个商店的数据,记录客户及购物情况,有以下三个表组成:
    • 商品goods(商品编号goods_id,商品名goods_name,单价unitprice,商品类别category,供应商provider)
    • 客户customer(客户号customer_id,姓名name,住址address,邮箱email,性别sex,身份证card_id)
    • 购买purchase(购买订单号order_id,客户号customer_id,商品号goods_id,购买数量nums)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

最后展示效果:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

mysql> create database
    -> if not exists
    -> Test
    -> charset utf8mb4;
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> use Test;
Database changed

mysql> create table
    -> if not exists
    -> goods
    -> (
    -> goods_id int comment '商品编号',
    -> goodes_name varchar(32) comment '商品名称',
    -> unitprice int comment '单价,单位分',
    -> category varchar(12) comment '商品分类',
    -> provider varchar(64) comment '供应商名称'
    -> );
Query OK, 0 rows affected (0.02 sec)

mysql> create table if not exists customer
    -> (
    -> customer_id int comment '客户编号',
    -> name varchar(32) comment '客户姓名',
    -> address varchar(256) comment '客户地址',
    -> sex bit comment '性别',
    -> card_id varchar(18) comment '身份证'
    -> );
Query OK, 0 rows affected (0.02 sec)

mysql> create table if not exists purchase
    -> (
    -> oeder_id int comment '订单号',
    -> customer_id int comment '客户编号',
    -> goods_id int comment '商品编号',
    -> nums int comment '购买数量'
    -> );
Query OK, 0 rows affected (0.02 sec)

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| customer       |
| goods          |
| purchase       |
+----------------+
3 rows in set (0.00 sec)

02 CURD

CURD是数据库非常基础的部分,也是后端开发日常工作中,最主要做的一项工作。

CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写。

2.1 新增

insert into 表名 values(值,值...);
-- 此处的值,要与列相匹配(列的个数和类型)
mysql> create table student (id int, name varchar(20));
Query OK, 0 rows affected (0.01 sec)

mysql> insert into student values(1,'zhangsan');
Query OK, 1 row affected (0.01 sec)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 实际上插入中文也是ok的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.1.1 指定列插入

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

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 若此处只插入name,id 这一列就会被填充为默认值。(此处的默认值就是null)
  • 其实也可以一次插入多行记录
insert into 表名 values (值,值...),(值,值...)...;

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里的提示,就是反馈效果,客户端给服务器发起插入请求,服务器要返回这次插入是否成功。

一次插入多行记录,相比于一次插入一行,分多次插入,要快不少

MySQL是一个客户端服务器结构的程序。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们可以通过

select * from student;

查看我们插入的数据。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.1.2 datetime类型插入

datetime插入,可以是用一个固定格式的字符串,来表示时间日期。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们可以查看效果

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果我们想填写的时间日期,就是当前时刻,sql其实提供了一个现成的函数,now().

insert into student values(2, '李四', now());

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.2 查询

sql中的增删改实际上都非常简单,但是查询就可以玩出各种花样。

下面就展开一个例子来详细聊聊~

  • 先构造一个表
-- 创建考试成绩表
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);

2.2.1 全列查询

select * from 表名;
--  * 表示通配符,可以指代所有的列

把表中的所有行和列都展示出来。

select * from exam_result;

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

以上的数据是查询出来之后,服务器通过网络把这些数据返回给客户端的,并且在客户端以表格形式打印出来。

‼️‼️‼️注意:select * 其实是一个危险操作‼️‼️‼️

MySQL是一个“客户端-服务器”结构的程序,客户端这里进行的操作,就都会通过请求发送给服务器,服务器查询的结果也就会通过响应返回给客户端

如果数据库当前这个表中的数据特别多,就可能会产生问题!

  1. 读取硬盘。 把硬盘的 IO 跑满了,此时程序其他部分想访问硬盘,就会非常慢
  2. 操作网络。 也可能把网卡的带宽跑满,此时其他客户端想通过网络访问服务器,就会非常慢

就好像高速堵车~


2.2.2 指定列查询

一个表的列数,可能是非常多的,某个场景下的操作,只需要关注其中的几个列。

select 列名, 列名... from 表名;
select name, chinese from exam_result;

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


2.2.3 查询字段为表达式

一边查询,一边进行计算…在查询的时候,写作由列名构成的表达式,把这一列中的所有行都带入到表达式中,参与运算~

下面举个例子:

想查询所有人的语文成绩都 -10 分。

select name, chinese - 10 from exam_result;

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

注意:这里的操作不会修改数据库服务器上的原始数据,只是在最终响应里的“临时结果”中做了计算~

再次强调,MySQL是客户端-服务器结构的数据,进行查询时,是将服务器这里的数据读出来,返回给客户端,并且以临时表的形式进行展示~

不信的话,我们可以将现在展示一下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

再举一个例子:计算所有人的总成绩

select name, chinese + math + english from exam_result;

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这也表明,SQL在查询的时候,可以进行一些简单的统计操作

表达式查询,是 列 和 列 之间的运算,把每一行都带入到这样的运算中,而不是 行和行 之间的。


2.2.4 别名查询

查询的时候给 列 / 表达式 指定别名。(给表也能指定别名)

select 表达式 as 别名 from 表名;
-- 别名通俗理解就是外号
-- as可以省略(不建议)

查询结果的临时表中,列名就是刚才的别名了。
在这里插入图片描述

2.2.5 去重

distinct修饰某个列/多个列

值相同的行,只会保留一个

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

那么此时我们可以进行以下操作:

select distinct math from exam_result;

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

他就会筛选掉重复的数据~

但是我们这样写的话

select distinct name, math from exam_result;

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

因为98的分数对应的name不一致,就不会去重咯。

2.2.6 查询时排序

把行进行排序~

明确排序规则~:

  • 针对哪个列作为比较规则
  • 排序时是升序还是降序
select 列名 from 表名 order by 列名 asc/desc;
-- order by 列名 :指定某个列进行排序
-- asc :升序
-- desc: 降序
-- 默认asc

再次强调:

mysql是一个客户端服务器结构的程序,把请求发给服务器之后,服务器进行查询数据,并且把查询到的结果进行排序之后,再组织成响应数据返回给客户端.
排序仍然是针对临时数据来展开的,此处的排序,不影响原有数据在mysql服务器上存储的顺序~

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

当前只是在我们自己的机器上进行了一些简单的操作看起来顺序好像没变,但是要是进行一些复杂的操作,那就不一定了~

如果不加order by代码就不应该依赖以上的顺序~~尤其是在代码中,就不能依赖上述的顺序来展开一些逻辑,因为数据库是没有承诺这个数据是有顺序的~

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

order by指定的列,如果你select 的时候没有把这一列查出来,也是不影响排序的~

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

order by还可以根据表达式进行排序

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

order by 指定多个列来排序~order by后面可以写多个列 使用,来分隔开

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.2.7 ‼️条件查询 WHERE

会指定具体的条件,按照条件针对数据进行筛选

select 列名 from 表名 where 条件;
-- 这里的条件:遍历这个表的每一行记录,把每一行的数据分别带入到条件中
--           如果条件成立,这个记录就会被放入结果集合中;若不成立你就会被pass 
  • 比较运算符:
运算符说明
>, >=, <, <=大于, 大于等于, 小于, 小于等于
=等于, NULL不安全,例如NULL=NULL结果是NULL
<=>等于, NULL安全,例如NULL<=>NULL结果是TRUE(1)
!=, <>不等于
BETWEEN a AND b范围匹配,[a,b],如果a<=value<=b.返回TRUE(1)
IN(option, …)如果是option中的任意一个,返回TRUE(1)
IS NULL是NULL
IS NOT NULL不是NULL
LIKE模糊匹配,%表示任意多个(包括0个)任意字符;_表示任意一个字符

注意:

  1. sql中是没有==

  2. 模糊匹配:通过一些特殊符号,描述出规则/特征后续哪些值,符合上述特征

    • 举个例子就是你要找对象,那么你的要求是

      1. 可爱
      2. 身材好😊😊😒

      此时虽然你还不知道你要追哪个,但是你已经有一定标准去筛选,那么这也就是模糊匹配~

  • 逻辑运算符(与或非)
运算符说明
AND多个条件必须都为TRUE(1),结果才是TRUE(1)
OR任意一个条件为TRUE(1),结果为TRUE(1)
NOT条件为TRUE(1),结果为FALSE(0)
  1. WHERE条件可以使用表达式,但不能使用别名。(下面会提到)

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


相关案例:

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

无论有几个列,都可以使用上述运算符来描述条件

  • 查询语文成绩优于英语成绩的同学
select name, chinese, english from exam_result where chinese > english;

条件查询搭配表达式

  • 查询总分低于200的同学
select name, chinese + math + english from exam_result where chinese + math + english < 200;

这里关于别名的使用见下图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里我们注意理解,select条件查询执行的顺序

  1. 遍历表中的每个记录

  2. 把当前记录的值,带入条件,根据条件进行筛选

  3. 如果这个记录条件成立,就要保留,进行列上表达式的计算

    • 这里也就说明where是第二步执行的,而别名是第三步定义,也就是说执行where的时候,total还处在未定义的状态~

    • 但是在理论上说,别名也是可以做到的~

      在实现sql解析引擎的时候,是完全可以做到的,把这里的别名预先定义好,然后再执行 1 2 3,保证执行到where的时候也能访问到别名~

    • 但是!mysql当前并没有这样执行😥

  4. 如果有order by,会在所有的行都被获取到之后(表达式也算完了)

    再针对所有的结果进行排序~~


  • 查询语文,英语成绩均大于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;
  • 观察andor的优先级

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

由此可见:sqland的运算符优先级更高~


  • 查询语文成绩在[80,90]的同学及其成绩
select name, chinese from exam_result where chinese between 80 and 90;
select name, chinese from exam_result where chinese >= 80 and chinese <= 90;

  • 查询数学成绩是58或者59或者98或者99的同学及其成绩
select name, math from exam_result where math in (58,59,98,99);
select name, math from exam_result where math = 58 or math = 58 or math = 98 or math = 99;

模糊查询:LIKE

通配符,就是一些特殊的字符,能够表示特定的含义~

类似于扑克牌中的 癞子 也就是特殊牌,可以用来代替任意的点数或者花色

% : 代指任意个任意字符
_ : 代指一个任意字符
  • 查询姓孙的同学的成绩
mysql> select * from exam_result where name like '孙%';
+------+--------+---------+------+---------+
| id   | name   | chinese | math | english |
+------+--------+---------+------+---------+
|    2 | 孙悟空 |    87.5 | 78.0 |    77.0 |
|    6 | 孙权   |    70.0 | 73.0 |    78.5 |
+------+--------+---------+------+---------+
2 rows in set (0.01 sec)
--------------------------------------------------------------
mysql> select * from exam_result where name like '孙_';
+------+------+---------+------+---------+
| id   | name | chinese | math | english |
+------+------+---------+------+---------+
|    6 | 孙权 |    70.0 | 73.0 |    78.5 |
+------+------+---------+------+---------+
1 row in set (0.00 sec)
---------------------------------------------------------------
mysql> select * from exam_result where name like '孙__';
+------+--------+---------+------+---------+
| id   | name   | chinese | math | english |
+------+--------+---------+------+---------+
|    2 | 孙悟空 |    87.5 | 78.0 |    77.0 |
+------+--------+---------+------+---------+
1 row in set (0.00 sec)
  • 孙%:查询以孙开头的内容

  • %孙:查询以孙结尾的内容

  • %孙%:查询包含孙的


NULL查询

select * from exam_result where chinese <=> null;
-- 可以针对两个列比较
select * from exam_result where chinese is null;
-- 只能针对一个列

2.2.8 分页查询 LIMIT

select 列名 from 表名 limit N offset M;
N 表示这次查询最多查出几个记录
M 表示这次查询的这个N记录,是从第几个下标开始算

使用select * 这种方式查询是比较危险的~

需要保证一次查询不要查出来的东西太多。那么LIMIT就是个好东西~

limit,可以限制查询这次查询最多可以查出来多少结果~

因为在有些时候,数据会非常多,一次性显示出来的话,会影响效率,也不方便用户查看,那么用limit就可以很好解决这个问题~

select * from exam_result limit 3;

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

 select * from exam_result limit 3 offset 3;
 -- limit 3  :这次查询,查出几个记录
 -- offset 3 :偏移量,也就是一个从0开始的下标

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


2.3 修改

update 表名 set 列名 =where 条件;
-- where 条件:限制这次操作具体要修改哪些数据

讲讲set这个词,它在计算机中有两种典型的含义~

  1. 设置 getter/setter
  2. 集合 TreeSet/HashSet

所以说,在计算机中,一个术语往往有多种含义,必须必须结合上下文来理解这个含义是什么意思~


  • 将孙悟空的数学成绩变更成80分
update exam_result set math = 80 where name = '孙悟空';

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


实际上使用update,可以一次性修改多个列

set= 值,列 =....;
  • 将曹孟德的数学 -> 60分,语文 -> 70分
update exam_result set math = 60, chinese = 70 where name = '曹孟德';
  • 将总成绩为倒数前三的数学成绩+30分
-- 首先先看看倒数前三是哪几位
mysql> select * from exam_result order by chinese + math + english limit 3;

+------+--------+---------+------+---------+
| id   | name   | chinese | math | english |
+------+--------+---------+------+---------+
|    7 | 宋公明 |    75.0 | 65.0 |    30.0 |
|    5 | 刘玄德 |    55.5 | 85.0 |    45.0 |
|    4 | 曹孟德 |    70.0 | 60.0 |    67.0 |
+------+--------+---------+------+---------+
3 rows in set (0.01 sec)

-- 这里注意观察,id 5 刘玄德的数学成绩若是+30 = 115.0,就会不符合前面说的decimal(3,1)  不信我们可以看看以下操作

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

ERROR 1264 (22003): Out of range value for column 'math' at row 2

-- Out of range value for column 是吧~这里说超出范围咯
-- 其次还有注意点就是 math = math + 30, 是不可以写成 math += 30
-- 那么我们进行math-30来看看效果吧
mysql> update exam_result set math = math - 30 order by chinese + math + english limit 3; 
Query OK, 3 rows affected (0.01 sec)
Rows matched: 3  Changed: 3  Warnings: 0

mysql> select * from exam_result order by chinese + math + english limit 3;
+------+--------+---------+------+---------+
| id   | name   | chinese | math | english |
+------+--------+---------+------+---------+
|    7 | 宋公明 |    75.0 | 35.0 |    30.0 |
|    5 | 刘玄德 |    55.5 | 55.0 |    45.0 |
|    4 | 曹孟德 |    70.0 | 30.0 |    67.0 |
+------+--------+---------+------+---------+
3 rows in set (0.00 sec)

  • 将所有同学的语文成绩更改为原来的两倍

这里的将所有,也就是update后面不写任何条件,就是针对所有行进行修改

mysql> update exam_result set chinese = chinese * 2;
ERROR 1264 (22003): Out of range value for column 'chinese' at row 1
-- 哈哈这里又超范围了,那我们换成/2

mysql> update exam_result set chinese = chinese / 2;
Query OK, 7 rows affected, 2 warnings (0.01 sec)
Rows matched: 7  Changed: 7  Warnings: 2

-- 这里我们可以看看warnings是什么

mysql> show warnings;
+-------+------+----------------------------------------------+
| Level | Code | Message                                      |
+-------+------+----------------------------------------------+
| Note  | 1265 | Data truncated for column 'chinese' at row 2 |
| Note  | 1265 | Data truncated for column 'chinese' at row 5 |
+-------+------+----------------------------------------------+

-- truncated 截断 这里说的是第 2 5 行的数据发生截断
-- 2 孙悟空 43.8 因为孙悟空原成绩是 87.5 ,/2之后是 43.75,但是43.75会超出decimal(3,1)这样的范围,于是就进行了截断~

mysql> select * from exam_result;
+------+--------+---------+------+---------+
| id   | name   | chinese | math | english |
+------+--------+---------+------+---------+
|    1 | 唐三藏 |    33.5 | 98.0 |    56.0 |
|    2 | 孙悟空 |    43.8 | 80.0 |    77.0 |
|    3 | 猪悟能 |    44.0 | 98.5 |    90.0 |
|    4 | 曹孟德 |    35.0 | 30.0 |    67.0 |
|    5 | 刘玄德 |    27.8 | 55.0 |    45.0 |
|    6 | 孙权   |    35.0 | 73.0 |    78.5 |
|    7 | 宋公明 |    37.5 | 35.0 |    30.0 |
+------+--------+---------+------+---------+
7 rows in set (0.00 sec)

2.4 删除

delete from 表名 where 条件 / order by / limit-- where 条件 / order by / limit 会把符合条件的行,从表中删除
  • 删除孙悟空的成绩
delete from exam_result where name = '孙悟空';
  • 删除整张表数据
delete from exam_result;

这和drop table还不太一样,drop table是删除了表,也删除了表里的记录

delete只是删除了表里的记录,但是表还在,只不过表变成一张空表~

所以我们要知道,deleteupdate都是很危险的操作!

一旦delete,的条件没有设置好,就可能把不该删除的给删掉了~

这两者修改 / 删除持久生效的,都会影响到 数据库服务器 硬盘中的数据~

sql中步步都是很危险的啊🥵🥵🥵🥵


那么~数据库既然这么危险,该怎么备份呢?

实际上有很多种方式:

  1. 数据库最终都是存储在硬盘上,以文件的形式体现(文件都是二进制),可以将这里的文件cv到别的机器上面(全量备份)。

  2. mysqldump工具,mysql自带的一个程序,会把你mysql中的数据导出成一系列insert语句~然后再将这些insert语句,放到另一个mysql中执行

  3. mysql还有一个binlog功能(将mysql中的各种操作,都通过日志记录下来)

    借助binlog(让另一个数据库按照binlog的内容执行就可以得到一样的数据)

    (增量备份/实时备份)


    至此,就将mysql的基础操作知识介绍的差不多了,接下来还会持续更新mysql,敬请期待~

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

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

相关文章

android frida 逆向 自吐加密算法

前言&#xff1a; ♛ frida hook android Android 逆向神器 前几天在学习 Android 逆向的时候发现了一个神器&#xff1a;通过 frida hook 我们可以 “劫持” 一些函数 为我们所用&#xff0c; 今天就和大家上手一个 加密函数的劫持 让打印出&#xff1a; 加密秘钥 …

Docker安装详细步骤

Docker安装详细步骤 1、安装环境准备 主机&#xff1a;192.168.40.5 zch01 设置主机名 # hostnamectl set-hostname zch01 && bash 配置hosts文件 [root ~]# vi /etc/hosts 添加如下内容&#xff1a; 192.168.40.5 zch01 关闭防火墙 [rootzch01 ~]# systemct…

分库分表篇-2.1 Mycat-配置文件篇

文章目录 前言一、Mycat server.xml作用&#xff1a;1.1 server.xml 作用&#xff1a;1.2 定义数据库逻辑模式&#xff1a; 二、Mycat schema.xml作用&#xff1a;2.1 schema 标签&#xff1a;2.1.1 schema 中table 标签&#xff1a; 2.2 dataNode 标签&#xff1a;2.3 dataHos…

dockerfile 例子(二)

Dockerfile由一行一行的命令语句组成&#xff0c;#开头的为注释行。Dockerfile文件内容分为四个部分&#xff1a;基础镜像信息、维护者信息、镜像操作指令以及容器启动执行指令。 接下来给大家列出Dockerfile中主要命令的说明。 FROM&#xff0c;指定所创建镜像的基础镜像。 …

安达发|APS软件排程规则及异常处理方案详解

随着科技的发展&#xff0c;工业生产逐渐向智能化、自动化方向发展。APS(高级计划与排程)软件作为一种集成了先进技术和理念的工业软件&#xff0c;可以帮助企业实现生产过程的优化和控制。其中&#xff0c;排程规则是APS软件的核心功能之一&#xff0c;它可以帮助企业合理安排…

跨境做独立站,如何低成本引流?

大家都知道&#xff0c;海外的消费习惯与国内不同&#xff0c;独立站一向是海外消费者的最喜欢的购物方式之一&#xff0c;这也吸引了许多跨境商家开设独立站。 独立站不同于其他的第三方平台&#xff0c;其他平台可以靠平台自身流量来获得转化&#xff0c;而独立站本身没有流…

USRP 简介,对于NI软件无线电你所需要了解的一切

什么是 USRP 通用软件无线电外设( USRP ) 是由 Ettus Research 及其母公司National Instruments设计和销售的一系列软件定义无线电。USRP 产品系列由Matt Ettus领导的团队开发&#xff0c;被研究实验室、大学和业余爱好者广泛使用。 大多数 USRP 通过以太网线连接到主机&…

docker 04.更加重要的命令

之前的都是基础命令&#xff0c; 前台交互进程和后台守护进程&#xff1a; 重新进入容器&#xff1a; docker中的导入导出&#xff1a; docker中的拷贝到&#xff1a;

用python画一个柱状图可能用到的代码【完整版】

画柱状图 导入包 import torch as t import numpy as np import pandas as pd import matplotlib.pyplot as plt import joblib import matplotlib as mpl设置默认字体格式为"Times New Roman" font_name Times New Roman mpl.rcParams[font.family] font_name通…

uni-app 分不清的全局变量this, uni, $u, vm, uni.$u, this.$u

项目引入了uview,并将uview所有模块指给uniapp全局变量uni uni.$u$u 在登录页面&#xff0c;或者APP.vue打印以下变量&#xff1a; this, uni, $u, vm, uni.$u, this.$u // this,$u,vm,uni&#xff0c; this.$u&#xff0c; uni.$u全局变量说明console.log(">>th…

简单数学题:找出最大的可达成数字

来看一道简单的数学题&#xff1a;力扣2769. 找出最大的可达成数字 题目描述的花里胡哨&#xff0c;天花乱坠&#xff0c;但这道题目非常简单。我们最多执行t次操作&#xff0c;只需每次操作都让x-1&#xff0c;让num1&#xff0c;执行t次操作后&#xff0c;x就变为xt&#xff…

【JavaEE】Spring事务-事务的基本介绍-事务的实现-@Transactional基本介绍和使用

【JavaEE】Spring 事务&#xff08;1&#xff09; 文章目录 【JavaEE】Spring 事务&#xff08;1&#xff09;1. 为什么要使用事务2. Spring中事务的实现2.1 事务针对哪些操作2.2 MySQL 事务使用2.3 Spring 编程式事务&#xff08;手动挡&#xff09;2.4 Spring 声明式事务&…

视频汇聚/视频云存储/视频监控管理平台EasyCVR接入海康SDK协议后无法播放该如何解决?

开源EasyDarwin视频监控/安防监控/视频汇聚EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;在视频监控播放上&#xff0c;视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放&#xff0c;可同时播放多路视频流&#…

java八股文面试[多线程]——线程池拒绝策略

四种线程池拒绝策略&#xff08;handler&#xff09; 当线程池的线程数达到最大线程数时&#xff0c;需要执行拒绝策略。拒绝策略需要实现 RejectedExecutionHandler 接口&#xff0c;并实现 rejectedExecution(Runnable r, ThreadPoolExecutor executor) 方法。不过…

矢量图片转换 Vector Magic for mac

Vector Magic会帮你进行自动识别和分析&#xff0c;转换过程中用户可选择相应的转换级别&#xff0c;从而达到自已所需的效果。 只需上传即可在线自动将 JPG、PNG、BMP 和 GIF 位图图像转换为真正的 SVG、Eps 和 PDF 矢量图像。真正的全彩描摹&#xff0c;无需安装软件&#xf…

智慧工厂解决方案:推动制造业转型升级的新引擎

随着信息技术的迅猛发展和制造业竞争的加剧&#xff0c;智慧工厂成为了推动制造业转型升级的重要引擎。智慧工厂解决方案通过整合物联网、人工智能、大数据分析等先进技术&#xff0c;实现生产过程的智能化、自动化和高效化&#xff0c;为企业提供了更加灵活、智能的生产模式和…

Linux之web服务器

目录 www简介 常见Web服务程序介绍 服务器主机 主要数据 浏览器 网址及HTTP简介 URL http请求方法 状态码 MIME&#xff08;Multipurpose Internet Mail Extension&#xff09; www服务器的类型 静态网站 动态网站 Apache服务的搭建 Apache的安装 准备工作 htt…

Android RecyclerView 之 列表宫格布局的切换

前言 RecyclerView 的使用我就不再多说&#xff0c;接下来的几篇文章主要说一下 RecyclerView 的实用小功能&#xff0c;包括 列表宫格的切换&#xff0c;吸顶效果&#xff0c;多布局效果等&#xff0c;今天这篇文章就来实现一下列表宫格的切换&#xff0c;效果如下 一、数据来…

大数据之Maven

一、Maven的作用 作用一&#xff1a;下载对应的jar包 避免jar包重复下载配置&#xff0c;保证多个工程共用一份jar包。Maven有一个本地仓库&#xff0c;可以通过pom.xml文件来记录jar所在的位置。Maven会自动从远程仓库下载jar包&#xff0c;并且会下载所依赖的其他jar包&…

uniapp项目实践总结(六)自定义顶部导航栏

本篇主要讲述如何自定义顶部导航栏,有时候默认导航栏不足以满足我们的需求,这时候就需要自定义导航栏来解决这个问题。 目录 默认导航修改配置自定义顶部默认导航 自带的默认顶部导航设置的内容有限,不容易扩展修改,因此如果有更加个性化的需求,则需要自定义顶部导航。 …