【MYSQL中级篇】数据库数据查询学习

news2024/12/25 12:57:54

在这里插入图片描述

🍁博主简介

  🏅云计算领域优质创作者
  🏅华为云开发者社区专家博主
  🏅阿里云开发者社区专家博主
💊交流社区:运维交流社区 欢迎大家的加入!

相关文章

文章名文章地址
【MYSQL初级篇】入门学习【增删改查-库表数据】https://liucy.blog.csdn.net/article/details/128396592
【MYSQL中级篇】数据库数据查询学习https://liucy.blog.csdn.net/article/details/128717294

MYSQL中级篇学习目录

  • 相关文章
  • 前言
    • 排序查询
    • 分组查询
    • 去重查询
    • 聚合函数
    • 比较运算符查询
    • 逻辑运算符查询
    • 模糊查询
    • 范围查询
    • 空判断查询
    • 多表联查
      • 两表联查内连接
      • 两表联查左连接
      • 两表联查右连接
      • 全连接: union或union all

前言

没有安装mysql的,大家可参考【 Centos7安装Mysql5.7(超详细版)】、【【云原生】Docker之创建并进入mysql容器】 两种方式任选其一来安装;

SQL语句

  • DDL 数据定义语言 create drop alter
  • DML 数据操纵语言 update delete insert
  • DQL 数据查询语言 select
  • DCL 数据控制语言 grant revoke

排序查询

  • desc 降序
  • asc 升序
  • limit 1 取第一行

mysql order by排序默认为升序(从小到大)

#排序;默认为升序
select * from 表名 order by id;(根据id排序)

#取行数
select * from 表名 limit 偏移量,行数;
#根据score排序,默认为升序
select * from student order by score;

#根据id排序,升序(从小到大)
select * from student order by id asc;

#根据score排序,降序(从大到小)
select * from student order by score desc;

#偏移量为2,取5行;(取第3行到第7行)
select * from student limit 2,5;

在这里插入图片描述

分组查询

select * from 表名 group by 字段;
#按分数打包分组(打包相同的分数)
select * from student group by score;

如遇到以下报错,可了解 https://blog.csdn.net/weixin_44013783/article/details/119422353、https://blog.csdn.net/W_317/article/details/116723943
在这里插入图片描述

去重查询

select distinct 字段 from 表名;
#去除相同的分数
select distinct score from student;
select distinct score as '分数' from student;

在这里插入图片描述

聚合函数

  • max()  最大值
select max(字段) from 表名;
#查找最高的分数,显示姓名和分数
select name as '姓名',max(score) as '分数' from student;

+----+-------+
| 姓名 | 分数 |
+----+-------+
| 老六 | 125 |
+----+-------+
  • min()  最小值
select min(字段) from 表名;
#查找最底的分数,显示姓名、性别、年龄、分数;
select name as '姓名',sex as '性别',age as '年龄',min(score) as '分数' from student;

+-----+----+-----+-------+
| 姓名 | 性别 | 年龄 | 分数 |
+-----+----+-----+-------+
| 王五 || 15 |  100 |
+-----+----+-----+-------+
  • sum()  和
select sum(字段) from 表名;
#查询班级的总分
select sum(score) as '班级总分' from student;

+---------+
| 班级总分 |
+---------+
|  1546   |
+---------+
  • count()  统计
select count(字段) from 表名;
#统计班级有多少个人
select count(*) as '班级总人数' from student;

+----------+
| 班级总人数 |
+----------+
|    13    |
+----------+
  • avg()  平均数
select avg(字段) from 表名;
#计算班级总分的平均分
select avg(score) as '班级平均分' from student;

+----------+
| 班级平均分 |
+----------+
| 118.9231 |
+----------+

综合:

#统计班级的总人数、总分及平均分
select count(*) as '班级总人数',sum(score) as '班级总分',avg(score) as '班级平均分' from student;

+---------+----------+----------+
| 班级总人数 | 班级总分 | 班级平均分 |
+---------+----------+----------+
|    13    |   1546  | 118.9231 |
+---------+----------+----------+
  • with rollup  对聚合结果进行汇总

使用 with rollup,此函数是对聚合函数进行求和,注意 with rollup是对 group by 后的第一个字段,进行分组求和。

#按分数分组,并计算出各组人数、总分、平均分,在做全部统计
select count(*),sum(score),avg(score) from student group by score with rollup;
select count(*) as '各组人数',sum(score) as '各组总分',avg(score) as '各组平均分' from student group by score with rollup;

+---------+---------+----------+
| 各组人数 | 各组总分 | 各组平均分 |
+---------+---------+----------+
|       2 |     246 | 123.0000 |
|       3 |     360 | 120.0000 |
|       2 |     242 | 121.0000 |
|       2 |     200 | 100.0000 |
|       2 |     248 | 124.0000 |
|       2 |     250 | 125.0000 |
|      13 |    1546 | 118.9231 |
+---------+---------+----------+
  • having    对于聚合后的结果进行过滤,如果逻辑允许,多用where
#查询分数小于120的人
select * from student having score<120;

在这里插入图片描述

  • where   用于聚合前,having用于聚合后。
#查询性别为女的人
select * from student where sex='女';

在这里插入图片描述

比较运算符查询

  • 等于: =
#查询性别是男的学生
select * from student where sex='男';

在这里插入图片描述

  • 大于: >
#查询年龄大于15的学生
select * from student where age>15;

在这里插入图片描述

  • 大于等于: >=
#查询年龄大于等于15的学生
select * from student where age>=15;

在这里插入图片描述

  • 小于: <
#查询分数小于122的学生
select * from student where score<122;

在这里插入图片描述

  • 小于等于: <=
#查询分数小于等于122的学生
select * from student where score<=122;

在这里插入图片描述

  • 不等于: != 或 <>
#查询学生性别不是男生的
select * from student where sex!='男';

在这里插入图片描述

#查询学生性别不是女生的
select * from student where sex<>'女';

在这里插入图片描述

逻辑运算符查询

  • and 和,要同时符合这两个条件或多个条件;
#查询学生分数高于122的男同学
select * from student where score>122 and sex='男';

在这里插入图片描述

  • or 或,满足其中一个条件即可,两者都有则都输出;
#查询年龄大于18或小于20的学生
select * from student where age>18 or age<20;

在这里插入图片描述

  • not 不,不要指定条件的数据;
#查询分数不在120到123的学生
select * from student where not (score>=120 and score<=123);

在这里插入图片描述

多个条件判断想要作为一个整体的时候,可以使用()

模糊查询

新增3条模糊查询要用到的数据

insert into student values (null,'张九','男',15,7.12,'北京市朝阳区某小区1号楼1单元103','zhangjiu@163.com',16839217282,122);
insert into student values (null,'张时嘉','女',17,12.12,'北京市朝阳区某小区1号楼1单元102','zhangsj@163.com',13307189235,124.5),(null,'张时依','女',17,12.12,'北京市朝阳区某小区1号楼1单元102','zhangsy@163.com',13307189236,125);
  • like是模糊查询关键字

  • %表示任意多个任意字符

  • _表示一个任意字符

例1:查询姓张的学生都有谁

#查询姓张的学生都有谁
select name from student where name like "张%";

在这里插入图片描述

例2:查询姓张的两个字的学生都有谁

#查询姓张的两个字的学生都有谁
select * from student where name like "张_";

在这里插入图片描述

例3:查询三个字的学生都有谁

#查询三个字的学生都有谁
select * from student where name like "___";

在这里插入图片描述

例4:查询手机号以16开头的学生

#查询手机号以16开头的学生
select * from student where iphone like "16%";

在这里插入图片描述

例5:查询姓老的或是名字中带时的都有谁

#查询姓老的或是名字中带时的都有谁
select * from student where name like "老%" or name like "%时%";

在这里插入图片描述

范围查询

  • between … and … 表示在一个连续的范围内查询
  • in 表示在一个非连续的范围内查询

例1:查询生日6月01日到9月31日的学生

#查询生日6月01日到9月31日的学生
select * from student where birthday between "6.01"and"9.31";

在这里插入图片描述

例2:查询地址为1单元103到109之间的男同学

#查询地址为1单元103到109之间的男同学
select * from student where (address between "北京市朝阳区某小区1号楼1单元103"and"北京市朝阳区某小区1号楼1单元109") and sex='男';

在这里插入图片描述

例3:查询id为1和22的两个学生

#查询id为1和22的两个学生
select * from student where id in(1,22);

在这里插入图片描述

IN 列表项不仅支持数字,也支持字符甚至时间日期类型等,并且可以将这些不同类型的数据项混合排列而无须跟 column 的类型保持一致:
一个 IN 只能对一个字段进行范围比对,如果要指定更多字段,可以使用 AND 或 OR 逻辑运算符:
使用 AND 或 OR 逻辑运算符后,IN 还可以和其他如 LIKE、>=、= 等运算符一起使用。

空判断查询

  • 判断为空使用: is null
  • 判断非空使用: is not null
#查询邮件是空的学生
select * from student where email is null;
#查询邮件不是空的学生
select * from student where email is not null;

不能使用 where height = null 判断为空
不能使用 where height != null 判断非空
null 不等于 空字符串

多表联查

新增一个表

create table body (id int(3) ZEROFILL PRIMARY KEY AUTO_INCREMENT comment'id',name varchar(255) not null comment'姓名',height varchar(255) comment'身高',weight varchar(255) not null comment'体重',heartbeat int comment'心跳/每分钟')comment='学生身体表';

新增数据

insert into body values (null,'张三','177.2','140.4',99),(null,'李四','180','149.2',80),(null,'王五','167.9','141',80),(null,'老六','173','128',77),(null,'小七','159.5','90.8',89),(null,'老八','169.9','145.2',78),(null,'张九','169','120.5',82),(null,'张时嘉','168','83',79),(null,'张时依','168.3','83.4',82);

两表联查内连接

两表联查必须加上where 表1 id=表2 id,否则查询出来会有很多重复的数据,你写了几个字段,就会查询到多少字段的重复数据;

内连接格式:A inner join B on 条件

例子:
select * from A inner join B on 条件;
select * from A inner join B on 条件 where 条件;
select * from A inner join B on 条件 where 条件 having 条件;
select * from A inner join B on 条件 order by 字段;
select * from A inner join B on 条件 where 条件 order by 字段;
select * from A inner join B on 条件 where 条件 having 条件 order by 字段;

例1:查询student表姓名、性别、年龄,body表身高、体重、心跳;

#两表联查:查询student表姓名、性别、年龄,body表身高、体重、心跳;
select student.name as '姓名',student.sex as '性别',student.age as '年龄',body.height as '身高',body.weight as '体重',body.heartbeat as '心跳/每分钟' from student,body where student.id=body.id;

#别名两表联查:查询student表姓名、性别、年龄,body表身高、体重、心跳;
select a.name as '姓名',a.sex as '性别',a.age as '年龄',b.height as '身高',b.weight as '体重',b.heartbeat as '心跳/每分钟' from student a,body b where a.id=b.id;

在这里插入图片描述

例2:查询student表姓名、性别、年龄、分数,body表身高、体重、心跳,并只显示成绩大于等于122的学生;

#别名两表联查:查询student表姓名、性别、年龄、分数,body表身高、体重、心跳,并只显示成绩大于等于122的学生;
select a.name as '姓名',a.sex as '性别',a.age as '年龄',b.height as '身高',b.weight as '体重',b.heartbeat as '心跳/每分钟',a.score as '分数' from student a,body b where a.id=b.id having score>=122;

在这里插入图片描述

例3:查询student表姓名、性别、年龄、分数,body表身高、体重、心跳,并只显示成绩大于等于122的女学生;

#别名两表联查内连接:查询student表姓名、性别、年龄、分数,body表身高、体重、心跳,并只显示成绩大于等于122的女学生;
select a.name as '姓名',a.sex as '性别',a.age as '年龄',b.height as '身高',b.weight as '体重',b.heartbeat as '心跳/每分钟',a.score as '分数' from student a inner join body b on a.id=b.id where score>=122 having sex='女';

在这里插入图片描述

例4:查询student表姓名、性别、年龄、分数,body表身高、体重、心跳,并只显示成绩大于等于122的女学生且从大到小排序;

#别名两表联查内连接:查询student表姓名、性别、年龄、分数,body表身高、体重、心跳,并只显示成绩大于等于122的女学生且从大到小排序;
select a.name as '姓名',a.sex as '性别',a.age as '年龄',b.height as '身高',b.weight as '体重',b.heartbeat as '心跳/每分钟',a.score as '分数' from student a inner join body b on a.id=b.id where score>=122 having sex='女' order by score desc;

在这里插入图片描述

两表联查左连接

两表联查必须加上where 表1 id=表2 id,否则查询出来会有很多重复的数据,你写了几个字段,就会查询到多少字段的重复数据;

内连接格式:A left join B on 条件

例子:
select * from A left join B on 条件;
select * from A left join B on 条件 where 条件;
select * from A left join B on 条件 where 条件 having 条件;
select * from A left join B on 条件 order by 字段;
select * from A left join B on 条件 where 条件 order by 字段;
select * from A left join B on 条件 where 条件 having 条件 order by 字段;

例1:查询student表姓名、性别、年龄,body表身高;

#别名两表联查左连接:查询student表姓名、性别、年龄,body表身高;
select a.name as '姓名',a.sex as '性别',a.age as '年龄',b.height as '身高' from student a left join body b on a.id=b.id;

在这里插入图片描述

例2:查询student表姓名、性别、年龄、分数,body表身高、体重、心跳,并只显示成绩大于等于122的学生;

#别名两表联查左连接:查询student表姓名、性别、年龄、分数,body表身高、体重、心跳,并只显示成绩大于等于122的学生;
select a.name as '姓名',a.sex as '性别',a.age as '年龄',b.height as '身高',b.weight as '体重',b.heartbeat as '心跳/每分钟',a.score as '分数' from student a left join body b on a.id=b.id where score>=122;

在这里插入图片描述

例3:查询student表姓名、性别、年龄、分数,body表身高、体重、心跳,并只显示成绩大于等于122的女学生;

#别名两表联查左连接:查询student表姓名、性别、年龄、分数,body表身高、体重、心跳,并只显示成绩大于等于122的女学生;
select a.name as '姓名',a.sex as '性别',a.age as '年龄',b.height as '身高',b.weight as '体重',b.heartbeat as '心跳/每分钟',a.score as '分数' from student a left join body b on a.id=b.id where score>=122 having sex='女';

在这里插入图片描述

例4:查询student表姓名、性别、年龄、分数,body表身高、体重、心跳,并只显示成绩大于等于122的女学生且从大到小排序;

#别名两表联查左连接:查询student表姓名、性别、年龄、分数,body表身高、体重、心跳,并只显示成绩大于等于122的女学生且从大到小排序;
select a.name as '姓名',a.sex as '性别',a.age as '年龄',b.height as '身高',b.weight as '体重',b.heartbeat as '心跳/每分钟',a.score as '分数' from student a left join body b on a.id=b.id where score>=122 having sex='女' order by score desc;

在这里插入图片描述

两表联查右连接

两表联查必须加上where 表1 id=表2 id,否则查询出来会有很多重复的数据,你写了几个字段,就会查询到多少字段的重复数据;

内连接格式:A right join B on 条件

例子:
select * from A right join B on 条件;
select * from A right join B on 条件 where 条件;
select * from A right join B on 条件 where 条件 having 条件;
select * from A right join B on 条件 order by 字段;
select * from A right join B on 条件 where 条件 order by 字段;
select * from A right join B on 条件 where 条件 having 条件 order by 字段;

例1:查询student表姓名、性别、年龄,body表身高;

#别名两表联查右连接:查询student表姓名、性别、年龄,body表身高;
select a.name as '姓名',a.sex as '性别',a.age as '年龄',b.height as '身高' from student a right join body b on a.id=b.id;

在这里插入图片描述

例2:查询student表姓名、性别、年龄、分数,body表身高、体重、心跳,并只显示成绩大于等于122的学生;

#别名两表联查右连接:查询student表姓名、性别、年龄、分数,body表身高、体重、心跳,并只显示成绩大于等于122的学生;
select a.name as '姓名',a.sex as '性别',a.age as '年龄',b.height as '身高',b.weight as '体重',b.heartbeat as '心跳/每分钟',a.score as '分数' from student a right join body b on a.id=b.id where score>=122;

在这里插入图片描述

例3:查询student表姓名、性别、年龄、分数,body表身高、体重、心跳,并只显示成绩大于等于122的女学生;

#别名两表联查右连接:查询student表姓名、性别、年龄、分数,body表身高、体重、心跳,并只显示成绩大于等于122的女学生;
select a.name as '姓名',a.sex as '性别',a.age as '年龄',b.height as '身高',b.weight as '体重',b.heartbeat as '心跳/每分钟',a.score as '分数' from student a right join body b on a.id=b.id where score>=122 having sex='女';

在这里插入图片描述

例4:查询student表姓名、性别、年龄、分数,body表身高、体重、心跳,并只显示成绩大于等于122的女学生且从大到小排序;

#别名两表联查右连接:查询student表姓名、性别、年龄、分数,body表身高、体重、心跳,并只显示成绩大于等于122的女学生且从大到小排序;
select a.name as '姓名',a.sex as '性别',a.age as '年龄',b.height as '身高',b.weight as '体重',b.heartbeat as '心跳/每分钟',a.score as '分数' from student a right join body b on a.id=b.id where score>=122 having sex='女' order by score desc;

在这里插入图片描述

全连接: union或union all

注意:
1.两张表的数据数量必须相同
2.全连接内使用order by 没有效果,可以对连接后的结果进行排序;
3.union会合并相同的数据;

select * from 表1 union all select * from 表2;
select * from student1 union all select * from student2;

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

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

相关文章

网络安全-Kali更新源(APT)

网络安全-Kali更新源(APT&#xff09; 这篇东东很少内容 Kali是基于乌班图开发出来的 这个APT不是攻击的那个APT 这个APT和centos里面的YUM是一样的 下面是介绍的一些国内的APT包&#xff0c;我自己用的阿里云 通俗点怎么理解呢&#xff0c;你手机里面的应用市场&#xff0c;苹…

【闲聊】我用ChatGPT参加了大数据面试

用Chat GPT试了试面试题&#xff0c;回答得比较简单。 问&#xff1a;你可以以应聘者的身份参加一场大数据程序员面试吗 答&#xff1a;可以 &#xff0c;如果您符合面试要求&#xff0c;可以参加大数据程序员面试。 问&#xff1a;那么为什么你要投递大数据开发这个岗位 答&am…

数据结构总结

数据结构总结排序算法冒泡排序选择排序插入排序希尔排序堆排序快速排序算法归并排序计数排序基数排序树红黑树基本概念规则B树基础知识规则B树图回溯算法并查集拓扑排序其他算法KMP算法例题数组类求最大和子数组求子数组最大乘积删除重复链表元素十大排序算法参考 排序算法 冒…

16:00面试,16:09就出来了 ,问的实在是太...

从外包出来&#xff0c;没想到算法死在另一家厂子 自从加入这家公司&#xff0c;每天都在加班&#xff0c;钱倒是给的不少&#xff0c;所以也就忍了。没想到8月一纸通知&#xff0c;所有人不许加班&#xff0c;薪资直降30%&#xff0c;顿时有吃不起饭的赶脚。 好在有个兄弟内…

情人节快到了,我部署了一套情侣头像小程序,并过审了

最近在学习如何部署微信小程序&#xff0c;目的就是像拥有一个属于自己的小程序 之前做的是一个微信公众号&#xff0c;靠自然的流量虽然也开通了流量主&#xff0c;但是每天收益就是那0.0几的,所有寻思看能不能做一个小程序出来。不会写小程序的我&#xff0c;也只能用现成的…

IO流01_字节字符流、缓冲流、标准输入、输出流、打印流

文章目录①. IO流概述及分类②. 字节输入流 - FileInputStream③. 字节输出流 - FileOutputStream④. 字符输入流 - FileReader⑤. 字符输出流 - FileWriter⑥. 字节缓冲流 - Buffered⑦. 掌握 - 相关流习题操作⑧. 标准输入、输出流(了解)⑨. 打印流 - PrintStream、PrintWrit…

Retinanet网络与focal loss损失

1.损失函数 1&#xff09;原理 本文一个核心的贡献点就是 focal loss。总损失依然分为两部分&#xff0c;一部分是分类损失&#xff0c;一部分是回归损失。 在讲分类损失之前&#xff0c;我们来回顾一下二分类交叉熵损失 &#xff08;binary_cross_entropy&#xff09;。 计…

算法设计与分析(屈婉玲)视频笔记day2

序列求和的方法 数列求和公式 等差、等比数列与调和级数 求和的例子 二分检索算法 二分检索运行实例 2 n 1个输入 比较 t 次的输入个数 二分检索平均时间复杂度 估计和式上界的放大法 放大法的例子 估计和式渐近的界 估计和式渐近的界 小结 • 序列求和基本公式&#xff1a;…

使用 CSS 变量更改多个元素样式

使用 CSS 变量更改多个元素样式 var() 函数用于插入自定义的属性值&#xff0c;如果一个属性值在多处被使用&#xff0c;该方法就很有用。 custom-property-name 是必需的, 自定义属性的名称&#xff0c;必需以 – 开头。 value 可选。备用值&#xff0c;在属性不存在的时候使…

牛客网Python篇数据分析习题(六)

1.某公司计划举办一场运动会&#xff0c;现有运动会项目数据集items.csv。 包含以下字段&#xff1a; item_id&#xff1a;项目编号&#xff1b; item_name:项目名称&#xff1b; location:比赛场地。 有员工报名情况数据集signup.csv。包含以下字段&#xff1a; employee_id&a…

高性能(二)

三、读写分离和分库分表 1.读写分离 1.1 概述 将数据库的读写操作分散到不同的数据库节点上 通常一主多从一台主数据库负责写&#xff0c;多台从数据库负责读。 主库和从库之间会进行数据同步&#xff0c;以保证从库中数据的准确性。 1.2 问题及解决 1.2.1 问题 主从同…

ChatGPT眼中的产品经理是这样的

在玩ChatGPT的时候&#xff0c;突发奇想&#xff0c;ChatGPT对产品经理的认知是啥样呢&#xff1f;于是我找了几个大家都比较关注的产品经理问题&#xff0c;看看ChatGPT是如何回答的。1、产品经理可以干一辈子嘛&#xff1f;2、产品经理的核心竞争力是啥&#xff1f;3、产品经…

【本周特惠课程】深度学习6大模型部署场景(Pytorch+NCNN+MNN+Tengine+TensorRT+微信小程序)速成!...

前言欢迎大家关注有三AI的视频课程系列&#xff0c;我们的视频课程系列共分为5层境界&#xff0c;内容和学习路线图如下&#xff1a;第1层&#xff1a;掌握学习算法必要的预备知识&#xff0c;包括Python编程&#xff0c;深度学习基础&#xff0c;数据使用&#xff0c;框架使用…

操作系统——1.操作系统的概念、定义和目标

目录 1.概念 1.1 操作系统的种类 1.2电脑的组成 1.3电脑组成的介绍 1.4操作系统的概念&#xff08;定义&#xff09; 2.操作系统的功能和目标 2.1概述 2.2 操作系统作为系统资源的管理者 2.3 操作系统作为用户和计算机硬件间的接口 2.3.1用户接口的解释 2.3.2 GUI 2.3.3接…

代码随想录第十一天(459)

文章目录459. 重复的子字符串答案思路暴力破解移动匹配459. 重复的子字符串 也不知道为啥这个提示简单题…… 答案思路 暴力破解 例如&#xff1a;abcabc 移位一次&#xff1a;cabcab 移位两次&#xff1a;bcabca 移位三次&#xff1a;abcabc 现在字符串和原字符串匹配了…

搭建Vue版Ant Design Pro后台管理系统

搭建Vue版Ant Design Pro后台管理系统 此文章通过基于Vue实现的Ant DesignPro脚手架快速构建一个后台管理系统的前端 相关文档链接 1、【Ant Design Pro of Vue 官方文档】2、【Vue 官方文档】3、【Vue Router 官方文档】 Ant Design Pro相关系列文章&#xff1a; 一、AntDesig…

Ansible中常用的模块

目录 一、Ansible Ad-Hoc命令集 1 Ad-hoc 使用场景 2 Ansible的并发特性 3 Ansible-doc用法 4 ansible命令运行方式及常用参数 5 ansible的基本颜色代表 6 ansible中的常用模块 command模块 shell模块 script模块 copy模块 fetch模块 unarchive模块 archive模块…

Spring3之控制反转(IOC)

简介 控制反转(Inversion of Control, 缩写为IoC), 是面向对象编程中的一种设计原则, 可以用来减低计算机代码之间的耦合度;其中最常见的方式叫做依赖注入(Dependency Injection, 简称DI), 还有一种方式叫 “赖查找” (Dependency Lookup); 通过控制反转, 对象在被创建的时候,…

CData Drivers for Acumatica

CData Drivers for Acumatica Acumatica的CData驱动程序为用户提供了使用AcumaticaERP数据的便捷途径&#xff0c;该数据来自商业智能、分析、定制应用程序、报告以及ETL。通过JDBC、ADO.NET和ODBC等标准驱动程序&#xff0c;以及与PowerShell、Power BI、Excel、SSIS等流行应用…

java微信小程序音乐播放器分享系统

随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,音乐播放器小程序被用户普遍使用,为方便用户能够可以随时进行音乐播放器小程序的数据信息管理,特开发了基于音乐播放器小程序…