当前位置: 首页 > news >正文

MySQL-函数

一、统计函数

CREATE TABLE student (id INT NOT NULL DEFAULT 1,`name` varchar(20) not null default '',chinese float not null default 0.0,english float not null default 0.0,math float not null default 0.0 );insert into student values (1,'曹操',77,89,85);insert into student values (2,'刘备',80,89,90);insert into student values (3,'孙权',87,79,86);insert into student values (4,'诸葛亮',88,89,90);insert into student values (5,'郭嘉',82,89,85);insert into student values (6,'周瑜',79,89,99);insert into student values (7,'荀彧',79,90,80);

1、count     返回行的总数

公式: Select count(*)|count(列名) from tablename
                                          [WHERE where definition]

示例:

#统计一个班级共有多少同学?
select count(*) from student;
#统计数学成绩大于90的学生有多少个?
select count(*) from student where math>90;
#统计总分大于250的人数有多少
select count(*) from student where (math+chinese+english)>250;

-- count(*)和count(列)的区别

-- count(*)和count(列)的区别
-- 解释:count(*)返回满足条件的记录的行数
-- count(列):统计满足条件的某列有多少个,但是会排除 为null
CREATE TABLE ww_15 (`name` VARCHAR (20));INSERT INTO ww_15	VALUES ('tom');			INSERT INTO ww_15	VALUES ('jack');			INSERT INTO ww_15	VALUES ('mary');			INSERT INTO ww_15	VALUES (NULL);			
SELECT * from ww_15;SELECT count(*) from ww_15;   -- 4
SELECT count(`name`) from ww_15;   -- 3

2、sum  合计函数

公式:   Select sum(列名) {,sum(列名)...} from tablename
                                        [WHERE where definition]


#统计一个班级数学总成绩?
SELECT sum(math) from student;
#统计一个班级语文、英语、数学各科的总成绩
SELECT sum(math) as math_total,sum(chinese) as chinese_totoal,sum(english) as english_total from student;
#统计一个班级语文、英语、数学的成绩总和
select sum(math+english+chinese) from student;
#统计一个班级语文成绩平均分
select sum(chinese)/count(*) from student;

注意:sum仅对数值起作用,否则会报错。
注意:对多列求和,“,”号不能少。

3、AVG   合计函数 

公式 : Select avg(列名) {,avg(列名)...} from tablename
                          [WHERE where definition]


#求一个班级数学平均分
select AVG(math) from student;
#求一个班级总分平均分
SELECT avg(math+english+chinese) from student;

4、MAX  合计函数

        MIN 合计函数

Max/min函数返回满足where条件的一列的最大/最小值

公式 : Select max(列名)from tablename
                        [WHERE where definition]

 #求班级总分的最高分 , 最低分select max(math+english+chinese) as `max_score`,min(math+english+chinese) as `min_score` from student;

5、GROUP BY、HAVING 分组统计

         首先建立三张表并插入测试数据。

#新建一张部门表
create table dept (deptno MEDIUMINT  UNSIGNED  NOT NULL DEFAULT 0,dname varchar(20) not null default '',loc varchar(13) not null default '');
INSERT INTO dept VALUES (10,'ACCOUNTING','NEW YORK'),(20,'RESEARCH','DALLAS'),(30,'SALES','CHICAGO'),(40,'OPERATIONS','BOSTON');
#新建一张员工表
create table emp (empno MEDIUMINT unsigned not null default 0,ename varchar(20) not null default '',  /* 名字*/job varchar(9) not null default '',mgr mediumint unsigned , /* 上级编号*/hiredate date not null, /* 入职时间*/sal  decimal (7,2) not null , /* 薪水*/comn decimal(7,2), /* 红利*/deptno MEDIUMINT unsigned not null default 0);  /* 部门编号*/INSERT INTO emp VALUES (7369,'SMITH','CLERK', 7902, '1990-12-17', 800.00, NULL , 20);
INSERT INTO emp VALUES ( 7499,'ALLEN' , 'SALESMAN', 7698, '1991-2-20', 1600.00, 300.00, 30);
INSERT INTO emp VALUES (7521,'WARD','SALESMAN', 7698,'1991-2-22', 1250.00, 500.00, 30);
INSERT INTO emp VALUES (7566,'JONES','MANAGER', 7839,'1991-4-2', 2975.00, NULL, 20);
INSERT INTO emp VALUES (7654,'MARTIN','SALESMAN',7698,'1991-9-28',1250.00,1400.00,30);
INSERT INTO emp VALUES (7698, 'BLAKE', 'MANAGER', 7839,'1991-5-1', 2850.00, NULL, 30);
INSERT INTO emp VALUES (7782,'CLARK','MANAGER',7839,'1991-6-9',2450.00,NULL,10);
INSERT INTO emp VALUES (7788, 'SCOTT', 'ANALYST', 7566, '1997-4-19', 3000.00, NULL, 20);
INSERT INTO emp VALUES (7839, 'KING', 'PRESIDENT' , NULL, '1991-11-17' , 5000.00, NULL,10);
INSERT INTO emp VALUES (7844,'TURNER', 'SALESMAN', 7698, '1991-9-8', 1500.00, NULL, 30);
INSERT INTO emp VALUES (7900, 'JAMES', 'CLERK' , 7698, '1991-12-3', 950.00, NULL, 30);
INSERT INTO emp VALUES (7902,'FORD', 'ANALYST', 7566, '1991-12-3', 3000.00, NULL, 20);
INSERT INTO emp VALUES (7934,'MILLER' , 'CLERK', 7782,'1992-1-23', 1300.00,NULL, 10) ;
SELECT * from emp;#工资级别表
CREATE TABLE salgrade 
(grade MEDIUMINT UNSIGNED NOT NULL DEFAULT 0, -- 级别
losal DECIMAL(17,2) NOT NULL, -- 该级别最低工资
hisal DECIMAL(17,2) NOT NULL); -- 该级别最高工资RENAME TABLE salgradegrade TO salgrade;INSERT INTO salgrade VALUES(2, 1201, 1400);
INSERT INTO salgrade VALUES(3,1401, 2000);
INSERT INTO salgrade VALUES(4, 2001, 3000);
INSERT INTO salgrade VALUES(5,3001,9999);
INSERT INTO salgrade VALUES(1,700,1200);

>1.要求查询每个部门的平均工资与最高工资 

#>1.要求查询每个部门的平均工资与最高工资 
SELECT AVG(sal),MAX(sal) FROM emp GROUP BY deptno;

      在进行分组后,对每个分组求平均值与最高值 。

>2.要求查询每个部门的平均工资与最低工资

#>2.要求查询每个部门的每种岗位的平均工资与最低工资
SELECT AVG(sal),MIN(sal) ,deptno,job FROM emp GROUP BY deptno,job;

       GROUP BY deptno,job  //相当于分组两次,按部门先分组再按工作分组。

>3.要求查询平均工资低于2000的部门号和它的平均工资

#>3.要求查询平均工资低于2000的部门号和它的平均工资
SELECT AVG(sal) as sal_avg,deptno FROM emp GROUP BY deptno HAVING sal_avg>2000;

      group by 与 having 是搭配使用的一对兄弟, having的作用相当于where,即在分组的基础上再做筛选。

二、字符串函数

#练习字符串的相关函数的使用,使用emp表#CHARSET(str)返回字串字符集select CHARSET(ename) from emp;#CONCAT(string2 [...]) ,连接字串,将多个列拼接成一列显示select CONCAT(ename,'的工作是',job) from emp;#INSTR (string,substring) 返回substring在string中出现的位置SELECT INSTR('LOVEFREVER','LOVE') FROM DUAL;#DUAL  亚元表,系统表作测试使用#UCASE(string) 转成大写#LCASE(string) 转成小写#LEFT(string2,length) 从length2中的左边去除length个字符#RIGHT(string2,length)select LEFT('LOVE',2) FROM emp;#LENGTH(string) 取字串长度select LENGTH(ename) from emp;#REPLACE (STR,search_str,replace_str) -- 在str中用replace_str替换search_strselect ename,REPLACE(job,'MANAGER','经理')FROM emp;#逐字符比较两字串大小, STRCMP(stringl ,string2 )select STRCMP('bsmsm','asmsm') from dual;  -- 输出1#SUBSTRING(str,position,[,length]) #从str 这个字段的第position个位置取出length个字符#*****如果length不写,即默认从position全部取出来*****select SUBSTRING(ename,1,3) from emp;#LTRIM(str) /RTRIM(str) /TRIM([remstr FROM] str)-- 去除前端或者后端的空格select LTRIM('   THINK') FROM DUAL;select RTRIM('think     ') from dual;select TRIM('   THINK   ') FROM  DUAL;#以首字母小写的方式显示所有员工的enameselect CONCAT(LCASE(SUBSTR(ename,1,1)),SUBSTR(ename,2)) from emp;

三、数学函数

#练习数学函数的使用
--  ABS(num) 绝对值
SELECT ABS(-10) FROM DUAL;  -- 10
--  BIN (decimal number ) 十进制转二进制
SELECT BIN(10) FROM DUAL;  -- 1010
--  CEILING (number2 ) 向上取整,得到比num2大的最小整数
SELECT CEILING(-1.1) FROM DUAL;  -- -1
-- CONV(number2,from base, to base)  进制转换
--下面的含义是8 是十进制的8, 转成2进制输出
SELECT CONV(8,10,2) FROM DUAL;  -- 1000
-- FLOOR (number2 ) 向下取整,得到比num2小的最大整数 
select FLOOR(-1.1) from DUAL;  -- -2
-- FORMAT (number , decimal places ) 保留小数位数
#>1.要求查询每个部门的平均工资与最高工资 
SELECT FORMAT(AVG(sal),2),MAX(sal) FROM emp GROUP BY deptno;
-- HEX(DecimalNumber )转十六进制
SELECT HEX(1001) FROM DUAL;
-- LEAST (number , number2 [,..]) 求最小值
SELECT LEAST(0,-1,-10,-15)FROM dual;  -- -15
-- MOD (numerator ,denominator ) 求余
-- RAND([seed])  RAND([seed])其范围为 0≤ v ≤1.0
-- 如果使用RAND() , 每次返回一个不同的随机数,0≤ v ≤1.0
-- 如果使用RAND() , 返回随机数0≤ v ≤1.0,如果seed不变
-- 该随机数也不变
SELECT RAND() FROM DUAL;
SELECT RAND(4) FROM DUAL;

四、日期函数

-- CURRENT_DATE ()当前日期
SELECT CURRENT_DATE FROM DUAL;
-- CURRENT_TIME () 当前时间
SELECT CURRENT_TIME FROM DUAL;
-- CURRENT_TIMESTAMP 当前时间戳
SELECT CURRENT_TIMESTAMP FROM DUAL;
CREATE TABLE mes (id INT,content VARCHAR(30),send_time DATETIME);			
INSERT into mes VALUES (1,'北京时间',CURRENT_TIMESTAMP);

 

上面函数的细节说明:
1.DATE ADD()中的 interval 后面可以是year minute second day等
2.DATE SUB()中的 interval 后面可以是 year minute second hour day等3.DATEDIFF(date1,date2)得到的是天数,而且是date1-date2的天数,因此可以取负数
4.这四个函数的日期类型可以是date,datetime 或者 timestamp

INSERT into mes VALUES (2,'上海时间',CURRENT_TIMESTAMP);
INSERT into mes VALUES (3,'杭州时间',CURRENT_TIMESTAMP);-- 上应用实例--显示所有新闻信息,发布日期只显示日期,不用显示时间.
SELECT id ,content,DATE(send_time) from mes;
-- 请查询在10分钟内发布的帖子
SELECT* from mes where DATE_ADD(send_time,INTERVAL 10 MINUTE) >=NOW();
-- 请在mysq1的sql语句中求出2011-11-11和1990-1-1相差多少天
SELECT DATEDIFF('2011-11-11','1990-1-1') FROM DUAL;
-- 请用mysql的sq1语句求出你活了多少天?[练习]
SELECT DATEDIFF(NOW(),'1996-11-12') FROM DUAL;
-- 如果你能活80岁,求出你还能活多少天.[练习]	
SELECT DATEDIFF(DATE_ADD('1996-11-12',INTERVAL 80 YEAR),NOW())	FROM DUAL;

-- YEAR | MONTH | DAY |DATE (datetime)
SELECT YEAR(NOW()) FROM DUAL;  -- 2023
SELECT DAY(NOW()) FROM DUAL;  -- 29
-- unix_timestamp() : 返回的是1970-1-1 到现在的秒数
select UNIX_TIMESTAMP()/(365*24*60*60) from dual;
-- FROM_UNIXTIME() : 可以把一个unix_timesamp 转换为指定格式的日期
SELECT FROM_UNIXTIME(1618483484,'%Y-%m-%d') from dual;  -- 2021-04-15
SELECT FROM_UNIXTIME(1618483100,'%Y-%m-%d %H:%i:%s') from dual;  -- 2021-04-15 18:38:20

  在实际开发中,我们也经常使用int来保存一个unix时间戳,然后使用from_unixtime()进行转换,还是非常有实用价值的

(例如,一个订单的创建时间createTime 可以设置成 int 类型, 到数据库再转换成时间)

五、加密函数

-- USER() 查询用户
-- 可以查看登录到mysql的有哪些用户,以及登录的ip
SELECT USER() from dual;   -- 用户@ip地址
-- DATABASE()  查询当前使用的数据库名称
SELECT DATABASE() FROM DUAL;
-- MD5(str)  为字符串算出一个MD532的字符串,(用户密码)加密
-- 在数据库中存放的是加密字段
SELECT (MD5 ('loveyou')) FROM DUAL;    -- f74a10e1d6b2f32a47b8bcb53dac5345
SELECT LENGTH(MD5 ('loveyou')) FROM DUAL;    -- 32
CREATE TABLE love_user (id INT,`name` VARCHAR(32) NOT NULL default'',pwd CHAR(32) NOT NULL DEFAULT '');INSERT INTO love_user VALUES (100,'love',MD5('FOREVER'));
SELECT * FROM love_user;  -- CSDN
SELECT * from love_user where `name` = 'love' and pwd = MD5('FOREVER');  -- 查询时也需要使用MD5函数
-- PASSWORD (str) 加密函数 , MySQL数据库的用户密码就是PASSWORD函数加密的
select PASSWORD('LOV') FROM DUAL;
-- select*frommysql.user \G从原文密码str计算并返回密码字符串,通常用于对mysql数

六、流程控制函数

#IF(expr1,expr2,expr3)如果expr1为True,则返回 expr2否则返回 expr3
SELECT IF(TRUE,'北京','上海') FROM DUAL;
# IFNULL(expr1,expr2)如果expr1不为空NULL,则返回expr1,否则返回expr2
SELECT IFNULL(NULL,'旭日') FROM DUAL;
# SELECT CASE WHEN expr1 THEN expr2 WHEN exPr3 THEN exPr4 ELSE exPr5 END;[类似多重分支.]
#如果expr1 为TRUE,则返回expr2,如果expr2 为t, 返回expr4,否则返回expr5
SELECT CASE WHEN true THEN 'jack'WHEN false THEN 'tom'ELSE 'mary' END#查询emp表,如果comm是null,则显示0.0SELECT ename,IF(comn is null,0.0,comn) from emp;					
SELECT ename,IFNULL(comn,0.0) from emp;
#如果emp表的job是英文则显示对应中文
SELECT ename,(SELECT CASE WHEN job = 'CLERK' THEN '职员'WHEN job = 'MANAGER'THEN '经理'WHEN job  = 'SALESMAN' THEN '销售人员'ELSE job END) AS 'job'FROM emp;

相关文章:

MySQL-函数

一、统计函数 CREATE TABLE student (id INT NOT NULL DEFAULT 1,name varchar(20) not null default ,chinese float not null default 0.0,english float not null default 0.0,math float not null default 0.0 );insert into student values (1,曹操,77,89,85);insert int…...

【12】Python函数专题(下)

文章目录 1. 高阶函数1.1 以函数为参数1.2 以函数为返回值1.3 以函数为 参数和返回值2. 闭包3. 装饰器3.1 装饰器的引入3.2. 装饰器的使用3.3 装饰器强化练习🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔…...

国标GB28181协议/RTSP视频监控汇聚平台EasyCVR(V.3.4)页面UI大更新

为提高用户体验,增强平台功能,旭帆科技的Easy系列平台也在不断优化更新中。在最新的EasyCVR(V.3.4)中,其最显著的区别即为首页UI的调整。 其亮点是在【配置中心】-【基础配置】-【展示信息】中,首页UI可分…...

生成式AI与预测式AI的主要区别与实际应用

近年来,预测式人工智能(Predictive AI)通过先进的推荐算法、风险评估模型、以及欺诈检测工具,一直在推高着该领域公司的投资回报率。然而,今年初突然杀出的生成式人工智能(Generative AI)突然成…...

【JavaEE】多线程 -- 死锁问题

目录 1. 问题引入 2.死锁问题的概念和原因 3. 解决死锁问题 1. 问题引入 在学习死锁之前, 我们先观察下面的代码能否输出正确的结果: 运行程序, 能正常输出结果: 这个代码只管上看起来, 好像是有锁冲突的, 此时的 locker 对象已经是加锁的状态, 在尝试对 locker 加锁, 不应该…...

XTU OJ 1339 Interprime 学习笔记

链接 传送门 代码 #include<bits/stdc.h> using namespace std;const int N1e610; //78498 我计算了一下&#xff0c;6个0的范围内有这么多个素数&#xff0c;所以开这么大的数组存素数 //计算的代码是一个循环 int prime[80000]; int a[N],s[N];//s数组是前缀和数组b…...

【Web安全】xss攻击方式与绕过

xss攻击方式与绕过 文章目录 xss攻击方式与绕过XSS攻击方式1. script标签2. img标签3. input标签4. details标签5. svg标签6. select标签7. iframe标签8. video标签9. audio标签10. body标签11. textarea标签 常见绕过方式1. 空格过滤2. 引号过滤3. 括号过滤4. 关键词过滤5. 编…...

文件夹重命名技巧:用关键词替换文件夹名称指定内容的右侧文字

在日常生活中&#xff0c;经常要管理大量的文件夹&#xff0c;这时候掌握一些文件夹重命名的技巧就非常实用。例如文件夹重命名时&#xff0c;经常要将一些通用的文字替换成其他关键词&#xff0c;以便更好地标识和分类文件夹。而用关键词替换文件夹名称指定内容的右侧文字&…...

python pip安装第三方包时报错 error: Microsoft Visual C++ 14.0 or greater is required.

文章目录 1.问题2.原因3.解决办法 1.问题 pip install 的时候报错一大堆&#xff0c;其中有这么一段话 &#x1f447; error: Microsoft Visual C 14.0 or greater is required. Get it with "Microsoft C Build Tools": https://visualstudio.microsoft.com/visua…...

对 .NET程序2G虚拟地址紧张崩溃 的最后一次反思

一&#xff1a;背景 1. 讲故事 最近接连遇到了几起 2G 虚拟地址紧张 导致的程序崩溃&#xff0c;基本上 90% 都集中在医疗行业&#xff0c;真的很无语&#xff0c;他们用的都是一些上古的 XP&#xff0c;Windows7 x86&#xff0c;我也知道技术人很难也基本无法推动硬件系统和…...

HCIA-RS基础-静态路由协议

摘要&#xff1a;静态路由是一种在网络中广泛应用的路由选择方案&#xff0c;它以其简单的配置和低开销而备受青睐。本文将介绍静态路由的配置方法、默认路由的设置、路由的负载分担和备份策略。通过学习本文&#xff0c;希望可以你能够掌握静态路由的基本概念和在华为模拟器中…...

LeetCode(46)汇总区间【区间】【简单】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 汇总区间 1.题目 给定一个 无重复元素 的 有序 整数数组 nums 。 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说&#xff0c;nums 的每个元素都恰好被某个区间范围所覆盖&#xff0c;并且不存在属于某…...

数据预处理:随机裁剪放缩

随机裁剪放缩是一种数据增强技术&#xff0c;可以在训练神经网络时增加数据的多样性&#xff0c;提高模型的泛化能力。具体来说&#xff0c;随机裁剪放缩可以通过随机裁剪和缩放原始图片来生成多个不同的训练样本&#xff0c;从而增加数据集的大小和多样性。这种技术在图像分类…...

RabbitMQ 搭建和工作模式

MQ基本概念 1. MQ概述 MQ全称 Message Queue&#xff08;[kjuː]&#xff09;&#xff08;消息队列&#xff09;&#xff0c;是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信。 &#xff08;队列是一种容器&#xff0c;用于存放数据的都是容器&#xff0…...

一起学docker系列之七docker容器卷技术

目录 1 为什么使用容器数据卷&#xff1f;2 数据卷的特点和优势3 使用数据卷的方法3.1 创建容器并挂载数据卷3.2 容器间数据卷的共享与继承 4 数据卷的权限设置5 注意事项5.1 解决权限问题5.2 路径自动创建 结语 对于容器化应用程序的数据管理和持久化&#xff0c;Docker 数据卷…...

Loki安装部署

Loki安装部署 1、Loki介绍 Loki 是受 Prometheus 启发由 Grafana Labs 团队开源的水平可扩展&#xff0c;高度可用的多租户日志聚合系统。开发语 言: Google Go。它的设计具有很高的成本效益&#xff0c;并且易于操作。使用标签来作为索引&#xff0c;而不是对全文进行检索&…...

php如何实现文件上传

php实现文件上传需要通过全局变量&#xff08;数组&#xff09;&#xff1a;$_FILES 结合 move_uploaded_file 函数来实现。 move_uploaded_file函数&#xff08;只对POST方式生效&#xff09;&#xff1a; 其中move_uploaded_file函数语法&#xff1a;move_uploaded_file(需要…...

实验8配置工具

一、实验目的 1. 掌握UML中建模工具——部署图&#xff0c;用于显示系统中软件和硬件的物理架构。 2. 掌握应用Visio等业界常用的建模工具的基本使用方法和基本绘图操作&#xff0c;选择一种并熟练使用&#xff0c;会使用该工具针对具体问题建立分析模型。 二、实验内容与步骤…...

论文笔记:详解NEUPSL DSI

《Using Domain Knowledge to Guide Dialog Structure Induction via Neural Probabilistic 》 名词解释 Dialog Structure Induction&#xff08;DSI&#xff09;是推断给定目标导向对话的潜在对话结构&#xff08;即一组对话状态及其时间转换&#xff09;的任务。它是现代对…...

shared_ptr子类指针转换成父类指针

假设有如下应用场景: class Base { public:void addChild(std::shared_ptr<Base>& child){...} }class Derived : public Base {}int main() {Base a;std::shared_ptr<Derived> b std::make_shared<Derived>();a.addChild(b); // Error } 该代码中声…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中&#xff0c;iftop是网络管理的得力助手&#xff0c;能实时监控网络流量、连接情况等&#xff0c;帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战&#xff0c;克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...