一、MySQL查询学习笔记(基础查询、条件查询、排序查询、常见函数、分组查询 详解)

DQL语言的学习

一、基础查询

语法:
**SELECT 要查询的东西
【FROM 表名】;**类似于Java中 :System.out.println(要打印的东西);
特点:
①通过select查询完的结果 ,是一个虚拟的表格,不是真实存在
② 要查询的东西 可以是常量值、可以是表达式、可以是字段、可以是函数
USE myemployees;

1. 查询表中的单个字段

SELECT last_name FROM employees;

2. 查询表中的多个字段

SELECT last_name,salary,email FROM employees;

3. 查询表中的所有字段

#方式一:
SELECT `employee_id`,`first_name`,`last_name`,`phone_number`,`last_name`,`job_id`,`phone_number`,`job_id`,`salary`,`commission_pct`,`manager_id`,`department_id`,`hiredate` 
FROMemployees ;
#方式二:  SELECT * FROM employees;

4. 查询常量值

SELECT 100;SELECT 'john';

5. 查询表达式

 SELECT 100%98;

6. 查询函数

 SELECT VERSION();

7. 起别名
①便于理解
②如果要查询的字段有重名的情况,使用别名可以区分开来

方式一:使用as

SELECT 100%98 AS 结果;
SELECT last_name AS,first_name ASFROM employees;

方式二:使用空格

SELECT last_name 姓,first_name 名 FROM employees;

案例:查询salary,显示结果为 out put

SELECT salary AS "out put" FROM employees;

8. 去重

案例:查询员工表中涉及到的所有的部门编号

SELECT DISTINCT department_id FROM employees;

9. +号的作用
1)java中的+号:
①运算符,两个操作数都为数值型
②连接符,只要有一个操作数为字符串

2)mysql中的+号:
仅仅只有一个功能:运算符

select 100+90; 两个操作数都为数值型,则做加法运算 select
‘123’+90;只要其中一方为字符型,试图将字符型数值转换成数值型 如果转换成功,则继续做加法运算 select
‘john’+90; 如果转换失败,则将字符型数值转换成0

select null+10; 只要其中一方为null,则结果肯定为null

案例:查询员工名和姓连接成一个字段,并显示为 姓名

SELECT CONCAT('a','b','c') AS 结果;SELECT CONCAT(last_name,first_name) AS 姓名
FROMemployees;

二、条件查询

条件查询:根据条件过滤原始表的数据,查询到想要的数据
  1. 语法:
    select 查询列表 from 表名
    where 筛选条件;

  2. 分类:
    一、按条件表达式筛选

    简单条件运算符:> < = != <> >= <=
    示例:salary>10000

    二、按逻辑表达式筛选

    逻辑运算符:
    作用:用于连接条件表达式
    && || !
    and or not

    &&和and:两个条件都为true,结果为true,反之为false
    ||或or: 只要有一个条件为true,结果为true,反之为false
    !或not: 如果连接的条件本身为false,结果为true,反之为false

    示例:salary>10000 && salary<20000

    三、模糊查询
    like
    between and
    in
    is null

    示例:last_name like ‘a%’

一、按条件表达式筛选

案例1:查询工资>12000的员工信息

SELECT *
FROMemployees
WHEREsalary>12000;

案例2:查询部门编号不等于90号的员工名和部门编号

SELECT last_name,department_id
FROMemployees
WHEREdepartment_id<>90;

二、按逻辑表达式筛选

案例1:查询工资z在10000到20000之间的员工名、工资以及奖金

SELECTlast_name,salary,commission_pct
FROMemployees
WHEREsalary>=10000 AND salary<=20000;

案例2:查询部门编号不是在90到110之间,或者工资高于15000的员工信息

SELECT*
FROMemployees
WHERENOT(department_id>=90 AND  department_id<=110) OR salary>15000;

三、模糊查询
like
between and
in
is null | is not null

1.like
特点:
①一般和通配符搭配使用

通配符:
% 任意多个字符,包含0个字符
_ 任意单个字符

案例1:查询员工名中包含字符a的员工信息

select *
fromemployees
wherelast_name like '%a%';#abc

案例2:查询员工名中第三个字符为e,第五个字符为a的员工名和工资

selectlast_name,salary
FROMemployees
WHERElast_name LIKE '__n_l%';

案例3:查询员工名中第二个字符为_的员工名

SELECTlast_name
FROMemployees
WHERElast_name LIKE '_$_%' ESCAPE '$';

2.between and

①使用between and 可以提高语句的简洁度
②包含临界值
③两个临界值不要调换顺序

案例1:查询员工编号在100到120之间的员工信息

SELECT*
FROMemployees
WHEREemployee_id >= 120 AND employee_id<=100;
#----------------------
SELECT*
FROMemployees
WHEREemployee_id BETWEEN 120 AND 100;

3.in

含义:判断某字段的值是否属于in列表中的某一项
特点:
①使用in提高语句简洁度
②in列表的值类型必须一致或兼容
③in列表中不支持通配符

案例:查询员工的工种编号是 IT_PROG、AD_VP、AD_PRES中的一个员工名和工种编号

SELECTlast_name,job_id
FROMemployees
WHEREjob_id = 'IT_PROT' OR job_id = 'AD_VP' OR JOB_ID ='AD_PRES';#------------------SELECTlast_name,job_id
FROMemployees
WHEREjob_id IN( 'IT_PROT' ,'AD_VP','AD_PRES');

4、is null

=或<>不能用于判断null值
is null或is not null 可以判断null值

案例1:查询没有奖金的员工名和奖金率

SELECTlast_name,commission_pct
FROMemployees
WHEREcommission_pct IS NULL;

案例1:查询有奖金的员工名和奖金率

SELECTlast_name,commission_pct
FROMemployees
WHEREcommission_pct IS NOT NULL;#----------以下为×
SELECTlast_name,commission_pct
FROMemployeesWHERE salary IS 12000;

案例1:查询没有奖金的员工名和奖金率

#安全等于  <=>SELECTlast_name,commission_pct
FROMemployees
WHEREcommission_pct <=>NULL;

案例2:查询工资为12000的员工信息

SELECTlast_name,salary
FROMemployeesWHERE salary <=> 12000;#is null pk <=>

IS NULL:仅仅可以判断NULL值,可读性较高,建议使用
<=> :既可以判断NULL值,又可以判断普通的数值,可读性较低

三、排序查询

语法:
select要查询的东西
from表
where 条件	
order by 排序的字段|表达式|函数|别名 【asc|desc】特点:
1、asc代表的是升序,可以省略
desc代表的是降序2、order by子句可以支持 单个字段、别名、表达式、函数、多个字段3、order by子句在查询语句的最后面,除了limit子句

1、按单个字段排序

SELECT * FROM employees ORDER BY salary DESC;

2、添加筛选条件再排序

案例:查询部门编号>=90的员工信息,并按员工编号降序

SELECT *
FROM employees
WHERE department_id>=90
ORDER BY employee_id DESC;

3、按表达式排序
案例:查询员工信息 按年薪降序

SELECT *,salary*12*(1+IFNULL(commission_pct,0))
FROM employees
ORDER BY salary*12*(1+IFNULL(commission_pct,0)) DESC;

4、按别名排序
案例:查询员工信息 按年薪升序

SELECT *,salary*12*(1+IFNULL(commission_pct,0)) 年薪
FROM employees
ORDER BY 年薪 ASC;

5、按函数排序
案例:查询员工名,并且按名字的长度降序

SELECT LENGTH(last_name),last_name 
FROM employees
ORDER BY LENGTH(last_name) DESC;

6、按多个字段排序

案例:查询员工信息,要求先按工资降序,再按employee_id升序

SELECT *
FROM employees
ORDER BY salary DESC,employee_id ASC;

7、强化练习

  1. 查询员工的姓名和部门号和年薪,按年薪降序 按姓名升序
SELECT last_name,department_id,salary*12*(1+IFNULL(commission_pct,0)) 年薪
FROM employees
ORDER BY 年薪 DESC,last_name ASC;
  1. 选择工资不在8000到17000的员工的姓名和工资,按工资降序
SELECT last_name,salary
FROM employeesWHERE salary NOT BETWEEN 8000 AND 17000
ORDER BY salary DESC;
  1. 查询邮箱中包含e的员工信息,并先按邮箱的字节数降序,再按部门号升序
SELECT *,LENGTH(email)
FROM employees
WHERE email LIKE '%e%'
ORDER BY LENGTH(email) DESC,department_id ASC;

四、常见函数

概念:类似于java的方法,将一组逻辑语句封装在方法体中,对外暴露方法名
好处:1、隐藏了实现细节 2、提高代码的重用性
调用:select 函数名(实参列表) 【from 表】;
特点:
①叫什么(函数名)
②干什么(函数功能)

分类:
1、单行函数
如 concat、length、ifnull等
2、分组函数

功能:做统计使用,又称为统计函数、聚合函数、组函数一、单行函数1、字符函数concat拼接substr截取子串upper转换成大写lower转换成小写trim去前后指定的空格和字符ltrim去左边空格rtrim去右边空格replace替换lpad左填充rpad右填充instr返回子串第一次出现的索引length 获取字节个数2、数学函数round 四舍五入rand 随机数floor向下取整ceil向上取整mod取余truncate截断3、日期函数now当前系统日期+时间curdate当前系统日期curtime当前系统时间str_to_date 将字符转换成日期date_format将日期转换成字符4、流程控制函数if 处理双分支case语句 处理多分支情况1:处理等值判断情况2:处理条件判断5、其他函数version版本database当前库user当前连接用户

一、字符函数

1.length 获取参数值的字节个数

SELECT LENGTH('john');
SELECT LENGTH('张三丰hahaha');SHOW VARIABLES LIKE '%char%'

2.concat 拼接字符串

SELECT CONCAT(last_name,'_',first_name) 姓名 FROM employees;

3.upper、lower

SELECT UPPER('john');
SELECT LOWER('joHn');

示例:将姓变大写,名变小写,然后拼接

SELECT CONCAT(UPPER(last_name),LOWER(first_name))  姓名 FROM employees;

4.substr、substring
注意:索引从1开始
截取从指定索引处后面所有字符

SELECT SUBSTR('李莫愁爱上了陆展元',7)  out_put;

截取从指定索引处指定字符长度的字符

SELECT SUBSTR('李莫愁爱上了陆展元',1,3) out_put;

案例:姓名中首字符大写,其他字符小写然后用_拼接,显示出来

SELECT CONCAT(UPPER(SUBSTR(last_name,1,1)),'_',LOWER(SUBSTR(last_name,2)))  out_put
FROM employees;

5.instr 返回子串第一次出现的索引,如果找不到返回0

SELECT INSTR('杨不殷六侠悔爱上了殷六侠','殷八侠') AS out_put;

6.trim

SELECT LENGTH(TRIM('    张翠山    ')) AS out_put;SELECT TRIM('aa' FROM 'aaaaaaaaa张aaaaaaaaaaaa翠山aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa')  AS out_put;

7.lpad 用指定的字符实现左填充指定长度

SELECT LPAD('殷素素',2,'*') AS out_put;

8.rpad 用指定的字符实现右填充指定长度

SELECT RPAD('殷素素',12,'ab') AS out_put;

9.replace 替换

SELECT REPLACE('周芷若周芷若周芷若周芷若张无忌爱上了周芷若','周芷若','赵敏') AS out_put;

二、数学函数

1.round 四舍五入

SELECT ROUND(-1.55);
SELECT ROUND(1.567,2);

2.ceil 向上取整,返回>=该参数的最小整数

SELECT CEIL(-1.02);

3.floor 向下取整,返回<=该参数的最大整数

SELECT FLOOR(-9.99);

4.truncate 截断

SELECT TRUNCATE(1.69999,1);

5.mod取余

/*
mod(a,b) :  a-a/b*bmod(-10,-3):-10- (-10)/(-3)*(-3)=-1
*/
SELECT MOD(10,-3);
SELECT 10%3;

三、日期函数

1.now 返回当前系统日期+时间

SELECT NOW();

2.curdate 返回当前系统日期,不包含时间

SELECT CURDATE();

3.curtime 返回当前时间,不包含日期

SELECT CURTIME();

4.可以获取指定的部分,年、月、日、小时、分钟、秒

SELECT YEAR(NOW());
SELECT YEAR('1998-1-1');SELECT  YEAR(hiredate)FROM employees;SELECT MONTH(NOW());
SELECT MONTHNAME(NOW());

5.str_to_date 将字符通过指定的格式转换成日期

SELECT STR_TO_DATE('1998-3-2','%Y-%c-%d') AS out_put;

6.查询入职日期为1992–4-3的员工信息

SELECT * FROM employees WHERE hiredate = '1992-4-3';SELECT * FROM employees WHERE hiredate = STR_TO_DATE('4-3 1992','%c-%d %Y');

7.date_format 将日期转换成字符

SELECT DATE_FORMAT(NOW(),'%y年%m月%d日') AS out_put;

8.查询有奖金的员工名和入职日期(xx月/xx日 xx年)

SELECT last_name,DATE_FORMAT(hiredate,'%m月/%d日 %y年') 入职日期
FROM employees
WHERE commission_pct IS NOT NULL;

四、其他函数

SELECT VERSION();
SELECT DATABASE();
SELECT USER();

五、流程控制函数

1.if函数: if else 的效果

SELECT IF(10<5,'大','小');SELECT last_name,commission_pct,IF(commission_pct IS NULL,'没奖金,呵呵','有奖金,嘻嘻') 备注
FROM employees;

2.case函数的使用一: switch case 的效果

java中
switch(变量或表达式){
case 常量1:语句1;break;

default:语句n;break;
}


mysql中
case 要判断的字段或表达式
when 常量1 then 要显示的值1或语句1;
when 常量2 then 要显示的值2或语句2;

else 要显示的值n或语句n;
end

案例:查询员工的工资,要求
部门号=30,显示的工资为1.1倍
部门号=40,显示的工资为1.2倍
部门号=50,显示的工资为1.3倍
其他部门,显示的工资为原工资

SELECT salary 原始工资,department_id,
CASE department_id
WHEN 30 THEN salary*1.1
WHEN 40 THEN salary*1.2
WHEN 50 THEN salary*1.3
ELSE salary
END AS 新工资
FROM employees;

3.case 函数的使用二:类似于 多重if

java中:
if(条件1){
语句1;
}else if(条件2){
语句2;
}

else{
语句n;
}


mysql中:

case when 条件1 then 要显示的值1或语句1
when 条件2 then 要显示的值2或语句2

else要显示的值n或语句n
end

#案例:查询员工的工资的情况
如果工资>20000,显示A级别
如果工资>15000,显示B级别
如果工资>10000,显示C级别
否则,显示D级别

SELECT salary,
CASE 
WHEN salary>20000 THEN 'A'
WHEN salary>15000 THEN 'B'
WHEN salary>10000 THEN 'C'
ELSE 'D'
END AS 工资级别
FROM employees;

4.强化练习:

1. 显示系统时间(注:日期+时间)

SELECT NOW();

2. 查询员工号,姓名,工资,以及工资提高百分之20%后的结果(new salary)

SELECT employee_id,last_name,salary,salary*1.2 "new salary"
FROM employees;

3. 将员工的姓名按首字母排序,并写出姓名的长度(length)

SELECT LENGTH(last_name) 长度,SUBSTR(last_name,1,1) 首字符,last_name
FROM employees
ORDER BY 首字符;

4. 做一个查询,产生下面的结果

<last_name> earns <salary> monthly but wants <salary*3>
Dream Salary
King earns 24000 monthly but wants 72000SELECT CONCAT(last_name,' earns ',salary,' monthly but wants ',salary*3) AS "Dream Salary"
FROM employees
WHERE salary=24000;

二、分组函数

	sum 求和max 最大值min 最小值avg 平均值count 计数特点:1、以上五个分组函数都忽略null值,除了count(*)2、sum和avg一般用于处理数值型max、min、count可以处理任何数据类型3、都可以搭配distinct使用,用于统计去重后的结果4、count的参数可以支持:字段、*、常量值,一般放1建议使用 count(*)

功能:用作统计使用,又称为聚合函数或统计函数或组函数

分类:
sum 求和、avg 平均值、max 最大值 、min 最小值 、count 计算个数

特点:
1、sum、avg一般用于处理数值型
max、min、count可以处理任何类型

2、以上分组函数都忽略null值

3、可以和distinct搭配实现去重的运算

4、count函数的单独介绍
一般使用count(*)用作统计行数

5、和分组函数一同查询的字段要求是group by后的字段

代码演示:

1、简单 的使用

SELECT SUM(salary) FROM employees;
SELECT AVG(salary) FROM employees;
SELECT MIN(salary) FROM employees;
SELECT MAX(salary) FROM employees;
SELECT COUNT(salary) FROM employees;SELECT SUM(salary),AVG(salary) 平均,MAX(salary) 最高,MIN(salary) 最低,COUNT(salary) 个数
FROM employees;SELECT SUM(salary),ROUND(AVG(salary),2) 平均,MAX(salary) 最高,MIN(salary) 最低,COUNT(salary) 个数
FROM employees;

2、参数支持哪些类型

SELECT SUM(last_name) ,AVG(last_name) FROM employees;
SELECT SUM(hiredate) ,AVG(hiredate) FROM employees;SELECT MAX(last_name),MIN(last_name) FROM employees;SELECT MAX(hiredate),MIN(hiredate) FROM employees;SELECT COUNT(commission_pct) FROM employees;
SELECT COUNT(last_name) FROM employees;

3、是否忽略null

SELECT SUM(commission_pct) ,AVG(commission_pct),SUM(commission_pct)/35,SUM(commission_pct)/107 FROM employees;SELECT MAX(commission_pct) ,MIN(commission_pct) FROM employees;SELECT COUNT(commission_pct) FROM employees;
SELECT commission_pct FROM employees;

4、和distinct搭配

SELECT SUM(DISTINCT salary),SUM(salary) FROM employees;SELECT COUNT(DISTINCT salary),COUNT(salary) FROM employees;

5、count函数的详细介绍

SELECT COUNT(salary) FROM employees;SELECT COUNT(*) FROM employees;SELECT COUNT(1) FROM employees;

效率:
MYISAM存储引擎下 ,COUNT()的效率高
INNODB存储引擎下,COUNT(
)和COUNT(1)的效率差不多,比COUNT(字段)要高一些

6、和分组函数一同查询的字段有限制

SELECT AVG(salary),employee_id  FROM employees;

5:分组查询

语法:
select 查询列表
from 表
【where 筛选条件】
group by 分组的字段
【order by 排序的字段】;特点:
1、可以按单个字段分组
2、和分组函数一同查询的字段必须是group by后出现的字段
3、分组筛选针对的表	             位置			关键字
分组前筛选:  	原始表		     group by的前面		 where
分组后筛选:	分组后的结果集	     group by的后面		 having4、分组可以按多个字段分组,字段之间用逗号隔开
5、可以搭配着排序
6、having后可以支持别名

问题1:分组函数做筛选能不能放在where后面
答:不能

问题2:where——group by——having
一般来讲,能用分组前筛选的,尽量使用分组前筛选,提高效率

引入:查询每个部门的员工个数

SELECT COUNT(*) FROM employees WHERE department_id=90;

1.简单的分组

案例1:查询每个工种的员工平均工资

SELECT AVG(salary),job_id
FROM employees
GROUP BY job_id;

案例2:查询每个位置的部门个数

SELECT COUNT(*),location_id
FROM departments
GROUP BY location_id;

2、可以实现分组前的筛选

案例1:查询邮箱中包含a字符的 每个部门的最高工资

SELECT MAX(salary),department_id
FROM employees
WHERE email LIKE '%a%'
GROUP BY department_id;

案例2:查询有奖金的每个领导手下员工的平均工资

SELECT AVG(salary),manager_id
FROM employees
WHERE commission_pct IS NOT NULL
GROUP BY manager_id;

3、分组后筛选

案例:查询哪个部门的员工个数>5

#①查询每个部门的员工个数
SELECT COUNT(*),department_id
FROM employees
GROUP BY department_id;#② 筛选刚才①结果SELECT COUNT(*),department_id
FROM employeesGROUP BY department_idHAVING COUNT(*)>5;

案例2:每个工种有奖金的员工的最高工资>12000的工种编号和最高工资

SELECT job_id,MAX(salary)
FROM employees
WHERE commission_pct IS NOT NULL
GROUP BY job_id
HAVING MAX(salary)>12000;

案例3:领导编号>102的每个领导手下的最低工资大于5000的领导编号和最低工资

manager_id>102SELECT manager_id,MIN(salary)
FROM employees
GROUP BY manager_id
HAVING MIN(salary)>5000;

4.添加排序

案例:每个工种有奖金的员工的最高工资>6000的工种编号和最高工资,按最高工资升序

SELECT job_id,MAX(salary) m
FROM employees
WHERE commission_pct IS NOT NULL
GROUP BY job_id
HAVING m>6000
ORDER BY m ;

5.按多个字段分组

案例:查询每个工种每个部门的最低工资,并按最低工资降序

SELECT MIN(salary),job_id,department_id
FROM employees
GROUP BY department_id,job_id
ORDER BY MIN(salary) DESC;

6.强化练习

1.查询各job_id的员工工资的最大值,最小值,平均值,总和,并按job_id升序

#1.查询各job_id的员工工资的最大值,最小值,平均值,总和,并按job_id升序SELECT MAX(salary),MIN(salary),AVG(salary),SUM(salary),job_id
FROM employees
GROUP BY job_id
ORDER BY job_id;

2.查询员工最高工资和最低工资的差距(DIFFERENCE)

#2.查询员工最高工资和最低工资的差距(DIFFERENCE)
SELECT MAX(salary)-MIN(salary) DIFFRENCE
FROM employees;

3.查询各个管理者手下员工的最低工资,其中最低工资不能低于6000,没有管理者的员工不计算在内

#3.查询各个管理者手下员工的最低工资,其中最低工资不能低于6000,没有管理者的员工不计算在内
SELECT MIN(salary),manager_id
FROM employees
WHERE manager_id IS NOT NULL
GROUP BY manager_id
HAVING MIN(salary)>=6000;

4.查询所有部门的编号,员工数量和工资平均值,并按平均工资降序

#4.查询所有部门的编号,员工数量和工资平均值,并按平均工资降序
SELECT department_id,COUNT(*),AVG(salary) a
FROM employees
GROUP BY department_id
ORDER BY a DESC;
#5.选择具有各个job_id的员工人数
SELECT COUNT(*) 个数,job_id
FROM employees
GROUP BY job_id;

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

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

相关文章

LeetCode 2119. 反转两次的数字

文章目录1. 题目2. 解题1. 题目 反转 一个整数意味着倒置它的所有位。 例如&#xff0c;反转 2021 得到 1202 。反转 12300 得到 321 &#xff0c;不保留前导零 。 给你一个整数 num &#xff0c;反转 num 得到 reversed1 &#xff0c;接着反转 reversed1 得到 reversed2 。 …

JVM系列五:JVM监测工具[整理中]

转自本站&#xff1a;http://www.cnblogs.com/redcreen/archive/2011/05/09/2040977.html 前几篇篇文章介绍了介绍了JVM的参数设置并给出了一些生产环境的JVM参数配置参考方案。正如之前文章中提到的JVM参数的设置需要根据应用的特性来进行设置&#xff0c;每个参数的设置都需要…

红米k30 android版本,Redmi K30 Pro 推送 MIUI 12.2.1 稳定版:为安卓跨版本升级

今日&#xff0c;Redmi K30 Pro 推送了 MIUI 12.2.1 稳定版内测更新。新系统基于 Android 11 深度定制&#xff0c;更新了 2020 年 10 月谷歌安全补丁。需要注意的是&#xff0c;本次更新为安卓跨版本升级&#xff0c;为降低升级风险&#xff0c;建议提前备份个人数据。同时&am…

三、MySQL子查询学习笔记(标量子查询、列子查询、行子查询、表子查询 详解)

三、MySQL子查询学习笔记 7&#xff1a;子查询 含义&#xff1a; 一条查询语句中又嵌套了另一条完整的select语句&#xff0c;其中被嵌套的select语句&#xff0c;称为子查询或内查询&#xff1b;在外面的查询语句&#xff0c;称为主查询或外查询 分类&#xff1a; 一、按子查…

LeetCode 2120. 执行所有后缀指令(模拟)

文章目录1. 题目2. 解题1. 题目 现有一个 n x n 大小的网格&#xff0c;左上角单元格坐标 (0, 0) &#xff0c;右下角单元格坐标 (n - 1, n - 1) 。 给你整数 n 和一个整数数组 startPos &#xff0c;其中 startPos [startrow, startcol] 表示机器人最开始在坐标为 (startrow…

android代理生命周期,了解 Activity 生命周期

当用户浏览、退出和返回到您的应用时&#xff0c;您应用中的在生命周期回调方法中&#xff0c;您可以声明用户离开和再次进入 Activity 时 Activity 的行为方式。例如&#xff0c;如果您正构建流媒体视频播放器&#xff0c;当用户切换至另一应用时&#xff0c;您可能要暂停视频…

Module System of Swift (简析 Swift 的模块系统)

原文地址: http://andelf.github.io/blog/2014/06/19/modules-for-swift/ Swift 中模块是什么&#xff1f;当写下 Swift 中一句 import Cocoa 的时候到底整了个什么玩意&#xff1f;官方 ibook 很含糊只是提了半页不到。 本文解决如下问题 介绍 Swift 中两种可 import 的模块如…

四、MySQL分页查询 + 子查询复习 学习笔记 (复习连接查询相关内容 详解)

8&#xff1a;分页查询 应用场景&#xff1a;当要显示的数据&#xff0c;一页显示不全&#xff0c;需要分页提交sql请求 语法&#xff1a; SELECT 查询列表 FROM 表名 【JOIN type JOIN 表2 ON 连接条件 WHERE 筛选条件 GROUP BY 分组字段 HAVING 分组后的筛选 ORDER BY 排序的…

LeetCode 2121. 相同元素的间隔之和(前缀和)

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始、由 n 个整数组成的数组 arr 。 arr 中两个元素的 间隔 定义为它们下标之间的 绝对差 。更正式地&#xff0c;arr[i] 和 arr[j] 之间的间隔是 |i - j| 。 返回一个长度为 n 的数组 intervals &#xff0c;其中 interva…

jquery中怎么删除ul中的整个li包括节点

1.$(ul li).remove(); 2.$(ul li).each(function(){ $(this).remove(); }); 3.$("ul").find("li").remove(); 4.$(ul).children().filter(li).remove();转载于:https://www.cnblogs.com/zhujiabin/p/5008006.html

在android添加数据采集,一种基于Android系统的地理信息数据采集方法与流程

本方法属于采集地理信息数据的发明&#xff0c;是一种基于android操作系统和gis地理信息系统进行户外地理信息数据采集的方法。背景技术&#xff1a;众所周知地理信息数据采集在很多行业中都有应用&#xff0c;比如说农业中的土地普查、城市管理中的地下管线普查、工业中的地质…

五、MySQL联合查询学习笔记 + 查询总结(详解)

9、 联合查询 union 联合 合并&#xff1a;将多条查询语句的结果合并成一个结果 语法&#xff1a; 查询语句1 UNION 查询语句2 UNION … 应用场景&#xff1a;要查询的结果来自多个表&#xff0c;且多个表之间没有直接的连接关系&#xff0c;但查询的信息相同 特点&#xff…

LeetCode 2124. 检查是否所有 A 都在 B 之前

文章目录1. 题目2. 解题1. 题目 给你一个 仅 由字符 a 和 b 组成的字符串 s 。 如果字符串中 每个 ‘a’ 都出现在 每个 ‘b’ 之前&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;s "aaabbb" 输出&#x…

设计模式—桥接模式

前言 这里以电视遥控器为例子引出桥接模式&#xff0c;首先每个牌子的电视都有一个遥控器&#xff0c;可以设计吧遥控器作为一个抽象类&#xff0c;抽象类中提供遥控器的所有实现&#xff0c;其他具体电视品牌的遥控器都继承这个抽象类 这样的实现使得每个不同型号的电视都有自…

Android8.1怎么装谷歌,谷歌PixelXL安卓9.0/8.1/8.0/7.X安装面具ROOT方案

免费预览&#xff1a;注意1&#xff1a;请提前备份资料&#xff0c;解锁BL会清空所有数据&#xff01;注意2&#xff1a;请提前移除谷歌账户(设置—账户—你的谷歌账户—移除)全套资料在教程末尾1. 解锁BL在手机开机状态下&#xff0c;启用开发者选项并勾选「允许USB调试」和「…

六、MySQL DML数据操纵语言学习笔记(插入、修改、删除详解 + 强化复习)

DML语言 数据操作语言&#xff1a; 插入&#xff1a;insert修改&#xff1a;update删除&#xff1a;delete 一、插入语句 &#xff08;1&#xff09;方式一&#xff1a;经典的插入方式 语法&#xff1a; insert into 表名&#xff08;列名&#xff0c;…&#xff09;values…

LeetCode 2125. 银行中的激光束数量

文章目录1. 题目2. 解题1. 题目 银行内部的防盗安全装置已经激活。 给你一个下标从 0 开始的二进制字符串数组 bank &#xff0c;表示银行的平面图&#xff0c;这是一个大小为 m x n 的二维矩阵。 bank[i] 表示第 i 行的设备分布&#xff0c;由若干 ‘0’ 和若干 ‘1’ 组成。…

2-Second Scrum Meeting-20151202

任务安排 闫昊&#xff1a; 今日完成&#xff1a;设计学习进度的管理。 明日任务&#xff1a;请假。&#xff08;编译计组&#xff0c;压力有点大&#xff09; 金哉仁&#xff1a; 今日完成&#xff1a;继续商讨APP相关界面与设计&#xff0c;安装AndroidStudio。 明日任务&…

android查询所有照片,Android查询外部存储中所有照片

最近写了个自定义相册模块&#xff0c;其中比较核心的算是查询照片了&#xff0c;直接上代码吧val contentUri MediaStore.Files.getContentUri("external")val sortOrder MediaStore.Files.FileColumns.DATE_MODIFIED " DESC"val selection "(${M…

七、MySQL DDL数据定义语言 学习笔记(库和表的创建、修改、删除详解 + 强化复习)

DDL语言 数据定义语言 库和表的管理&#xff1a; 一、库的管理: 创建、修改、删除 二、表的管理: 创建、修改、删除 创建&#xff1a; create 修改&#xff1a; alter 删除&#xff1a; drop 一、库的管理 1、库的创建: 语法&#xff1a; create database [if not exists…