>  기사  >  데이터 베이스  >  MySQL에서 자주 사용되는 쿼리 절 15개를 요약하고 공유합니다(오셔서 수집하세요)

MySQL에서 자주 사용되는 쿼리 절 15개를 요약하고 공유합니다(오셔서 수집하세요)

青灯夜游
青灯夜游앞으로
2021-12-20 17:24:382821검색

MySQL에서 쿼리하는 방법은 무엇인가요? 다음 기사는 MySQL에서 일반적으로 사용되는 15가지 쿼리 절을 요약하고 공유하며, 모두에게 도움이 되기를 바랍니다.

MySQL에서 자주 사용되는 쿼리 절 15개를 요약하고 공유합니다(오셔서 수집하세요)

데이터 분석을 위해 MySQL은 주로 데이터 정렬, 그룹화, 중복 제거, 요약, 문자열 일치 등과 같은 쿼리를 사용합니다. 쿼리된 데이터에 여러 테이블이 포함된 경우 이러한 테이블을 조인해야 합니다. 이 글에서는 MySQL에서 일반적으로 사용되는 쿼리 절 총 15개에 대해 설명합니다. [관련 권장사항: mysql 동영상 튜토리얼]

*1, *Sort: order by

정렬은 순서를 통해 이루어집니다. 예를 들어 stuinfo 테이블에서 데이터를 쿼리하고 연령별로 정렬합니다. sql 문은 다음과 같습니다.

select * from stuinfo order by age;

쿼리 결과:

MySQL에서 자주 사용되는 쿼리 절 15개를 요약하고 공유합니다(오셔서 수집하세요)

쿼리 결과가 나이에 따라 오름차순으로 정렬되어 있는 것을 볼 수 있습니다. 내림차순을 얻으려면 끝에 desc만 추가하면 됩니다. .SQL 문은 다음과 같습니다.

select * from stuinfo order by age desc;

쿼리 결과:

MySQL에서 자주 사용되는 쿼리 절 15개를 요약하고 공유합니다(오셔서 수집하세요)

이때의 쿼리 결과는 연령별로 내림차순으로 정렬됩니다.

위는 숫자 데이터를 정렬하기 위한 것입니다. 예를 들어 이름순으로 정렬하려면 SQL 문은 다음과 같습니다.

select * from stuinfo order by stuname;

쿼리 결과:

MySQL에서 자주 사용되는 쿼리 절 15개를 요약하고 공유합니다(오셔서 수집하세요)

As 위에서 볼 수 있듯이 문자열 정렬은 실제로 첫 글자를 기준으로 오름차순으로 정렬됩니다. 물론 날짜도 정렬할 수 있습니다. 스스로 생각해 보세요.

*2, *Group: group by

그룹화는 group by 절을 통해 구현됩니다. 예를 들어 성별별로 그룹화하려면 sql 문이 사용됩니다.

select gender,count(*) from stuinfo group by gender;

쿼리 결과:

MySQL에서 자주 사용되는 쿼리 절 15개를 요약하고 공유합니다(오셔서 수집하세요)

위의 SQL 문은 성별로 그룹화되고 각 그룹의 인원수를 제공하며 다른 필드로 그룹화하는 것도 유사합니다.

*3, *중복 제거: independent

중복 제거는 데이터 처리에서 일반적인 작업입니다. 예를 들어 학생이 위치한 모든 도시를 쿼리하려면 중복 제거가 필요합니다. 같은 도시에서.

SQL 문은 다음과 같습니다.

select distinct city from stuinfo;

쿼리 결과:

MySQL에서 자주 사용되는 쿼리 절 15개를 요약하고 공유합니다(오셔서 수집하세요)

중복 제거는 중복 제거 필드 앞에 구별 항목을 추가하는 것임을 알 수 있습니다.

*4, *Null 값: null임/null이 아님

Null 값은 특정 필드가 비어 있는지 여부를 결정하는 레코드입니다. 예를 들어 도시가 비어 있는 레코드를 쿼리합니다. , SQL 문은 다음과 같습니다.

select * from stuinfo where city is null;

쿼리 결과:

MySQL에서 자주 사용되는 쿼리 절 15개를 요약하고 공유합니다(오셔서 수집하세요)

쿼리의 빈 레코드는 실제로 where 조건 뒤에 오는 is null임을 확인할 수 있습니다.

반대로 도시가 비어 있지 않은 레코드를 쿼리하면 다음이 null이 아닙니다. sql 문은 다음과 같습니다.

select * from stuinfo where city is not null;

쿼리 결과:

MySQL에서 자주 사용되는 쿼리 절 15개를 요약하고 공유합니다(오셔서 수집하세요)

*5, *요약: 개수, 최대 value , sum,mean

요약은 실제로 계산하여 최대값/최소값, 합계, 평균 등을 구하는 것입니다.

가장 일반적으로 사용되는 통계 테이블은 count를 통해 구현됩니다. sql 문은 다음과 같습니다.

select count(*) from stuinfo;

MySQL에서 자주 사용되는 쿼리 절 15개를 요약하고 공유합니다(오셔서 수집하세요)

테이블의 특정 필드에 대한 최대/최소 값을 쿼리하는 것은 max/를 통해 구현됩니다. min 예를 들어 최대 연령을 쿼리하면 sql 문은 다음과 같습니다.

select max(age) from stuinfo;

쿼리 결과:

MySQL에서 자주 사용되는 쿼리 절 15개를 요약하고 공유합니다(오셔서 수집하세요)

다음 질문: 가장 나이가 많은 학생의 이름을 쿼리하는 sql 문을 작성하는 방법은 무엇입니까?

이것은 나이가 최대 나이와 같아야 한다는 조건입니다. 이 아이디어에 따라 sql 문을 작성합니다.

select stuname,age from stuinfo where age=(select max(age) from stuinfo);

쿼리 결과:

MySQL에서 자주 사용되는 쿼리 절 15개를 요약하고 공유합니다(오셔서 수집하세요)

위에서 볼 수 있습니다. , 최대 나이가 실제로 쿼리됩니다. 조건으로 나온 다음 해당 이름과 나이를 쿼리합니다.

질문 남기기: 가장 어린 학생의 이름을 확인하는 방법은 무엇인가요?

합산하려면 sum만 사용하세요. 숫자 데이터의 합이므로 count와 비슷하므로 설명하지 않겠습니다.

마지막은 평균입니다. 예를 들어 모든 학생의 평균 연령을 쿼리하려면 avg를 사용하세요. SQL 문은 다음과 같습니다.

select avg(age) from stuinfo;

쿼리 결과:

1MySQL에서 자주 사용되는 쿼리 절 15개를 요약하고 공유합니다(오셔서 수집하세요)

*6、 *别名:as

别名,就是as,意为用作,例如,查询出年龄的最大值、最小值和均值,sql语句为:

select max(age),min(age),avg(age) from stuinfo;

查询结果:

1MySQL에서 자주 사용되는 쿼리 절 15개를 요약하고 공유합니다(오셔서 수집하세요)

这样显示字段名不太好看,我们可以用as起一个别名,sql语句为:

select max(age) as age_max,min(age) as age_min,avg(age) as age_avg from stuinfo;

查询结果:

1MySQL에서 자주 사용되는 쿼리 절 15개를 요약하고 공유합니다(오셔서 수집하세요)

*7、 *表的连接

当要查询的记录涉及两个或者两个以上的表时,就需要表的连接。

表的连接有三种:内连接、左连接和右连接。

(1)内连接:inner join

内连接相当于两个表的交集,如下图所示。

1MySQL에서 자주 사용되는 쿼리 절 15개를 요약하고 공유합니다(오셔서 수집하세요)

例如,有两个表:学员信息表和成绩表,有一个共同的列:学号。

1MySQL에서 자주 사용되는 쿼리 절 15개를 요약하고 공유합니다(오셔서 수집하세요)

现在想查询出每个学员的姓名和成绩,查询结果如下图所示。

1MySQL에서 자주 사용되는 쿼리 절 15개를 요약하고 공유합니다(오셔서 수집하세요)

以上查询结果中的姓名需要从第一个表中提取,成绩需要从第二个表中提取,这叫表的连接

因为学号是共同的列,所以根据学号连接,以上的这种连接方式是获取两个表中学号相同的记录,叫作内连接

具体的sql语句为:

select sname,score fromtb1 inner join tb2 on tb1.sid=tb2.sid;

查询结果:

1MySQL에서 자주 사용되는 쿼리 절 15개를 요약하고 공유합니다(오셔서 수집하세요)

需要注意的是,连接条件用on。

(2)左连接:left join

左连接是以左表为基准,去匹配右表中的记录,如果右表中没有对应匹配记录则为空。

左连接用集合中的文氏图表示如下。

1MySQL에서 자주 사용되는 쿼리 절 15개를 요약하고 공유합니다(오셔서 수집하세요)

还是用以上提到的学员信息表和成绩表,左连接的示意图如下。

1MySQL에서 자주 사용되는 쿼리 절 15개를 요약하고 공유합니다(오셔서 수집하세요)

左连接的sql语句为:

select sname,score fromtb1 left join tb2 on tb1.sid=tb2.sid;

查询结果:

MySQL에서 자주 사용되는 쿼리 절 15개를 요약하고 공유합니다(오셔서 수집하세요)

(3)右连接:right join

右连接是以右表为基准,去匹配左表中的记录,如果左表中没有对应匹配记录则为空。

右连接用集合中的文氏图表示如下。

2MySQL에서 자주 사용되는 쿼리 절 15개를 요약하고 공유합니다(오셔서 수집하세요)

还是用以上提到的学员信息表和成绩表,右连接的示意图如下。

2MySQL에서 자주 사용되는 쿼리 절 15개를 요약하고 공유합니다(오셔서 수집하세요)

右连接的sql语句为:

select sname,score fromtb1 right join tb2 on tb1.sid=tb2.sid;

查询结果:

2MySQL에서 자주 사용되는 쿼리 절 15개를 요약하고 공유합니다(오셔서 수집하세요)

*8、 *字符串匹配:like

有时候在字符串查找时,需要查找符合某个匹配模式的字符串。

例如,在表stuinfo中,查找城市中含有字符串‘an’的记录,sql语句为:

select * from stuinfo where city like '%an%';

注意:匹配模式中的%表示匹配任意长度的任意字符串。

*9、 *集合:in

查找属于某个集合的记录用in。

例如,查找城市为北京或者天津的记录,sql语句为:

select * from stuinfo where city in('Beijing','Tianjin');

查询结果:

2MySQL에서 자주 사용되는 쿼리 절 15개를 요약하고 공유합니다(오셔서 수집하세요)

*10、 *条件语句:having

这里说的条件语句是having,跟where类似,但是一般和统计函数连用。

比如,查找平均年龄小于25岁的城市,sql语句为:

select city from stuinfo group by city having avg(age)<25;

查询结果:

2MySQL에서 자주 사용되는 쿼리 절 15개를 요약하고 공유합니다(오셔서 수집하세요)

以上sql语句先按照城市分组,再跟条件语句having。

*11、 *区间查找:between and

between and用于查找符合某个区间(包含两个边界的值)的记录。

例如,查找年龄介于20到30岁之间的记录,sql语句为:

select * from stuinfo having age between 20 and 30;

查询结果:

2MySQL에서 자주 사용되는 쿼리 절 15개를 요약하고 공유합니다(오셔서 수집하세요)

*12、 *联结:union

联结,也叫联合,用于连接两个查询的结果,并且去重。

例如,两个表中都有学号,用sql语句分别从这两个表中查询出学号,然后联结。

select sid from tb1unionselect sid from tb2;

查询结果:

2MySQL에서 자주 사용되는 쿼리 절 15개를 요약하고 공유합니다(오셔서 수집하세요)

以上sql语句相当于将两个select语句的查询结果用union合并,并且是去重合并。

如果不想去重,用union all即可,sql如下。

select sid from tb1union allselect sid from tb2;

查询结果:

2MySQL에서 자주 사용되는 쿼리 절 15개를 요약하고 공유합니다(오셔서 수집하세요)

*13、 *日期格式化:date_format

在SQL中,对于日期时间的处理也是很常见的问题。

例如,按照年份、月份或者日期等对数据进行分组汇总,就需要从日期时间中提取年份、月份及日期等。

举个例子,获取每个学员的出生年份,sql语句为:

select date_format(birthdate,&#39;%Y&#39;) as birth_year from stuinfo;

查询结果:

2MySQL에서 자주 사용되는 쿼리 절 15개를 요약하고 공유합니다(오셔서 수집하세요)

获取出生月份也是如此,只是参数用'%m',sql语句为:

select date_format(birthdate,&#39;%m&#39;) as birth_year from stuinfo;

查询结果:

MySQL에서 자주 사용되는 쿼리 절 15개를 요약하고 공유합니다(오셔서 수집하세요)

获取到年份、月份后,就可以按照年份、月份进行分组查询统计了。

*14、 *条件分支:case语句

条件分支是数据统计中的一个很重要的应用,在MySQL中用case语句表达条件分支,case语句有以下两种用法。

用法一:

例如,根据学员所处的城市,将记录标记为一线城市及其他,sql语句为:

select distinct city,
  case city
    when &#39;Beijing&#39; then &#39;一线城市&#39;
    when &#39;Shanghai&#39; then &#39;一线城市&#39;
    else &#39;其他&#39; end as city_level
from stuinfo;

查询结果:

3MySQL에서 자주 사용되는 쿼리 절 15개를 요약하고 공유합니다(오셔서 수집하세요)

从上面看到,case后面跟的是要判断的字段,when后跟的是不同的情况,then则是不同情况对应的类别,最后的else表示其他情况。

整个case语句相当于给原来的表增加一个字段:city_level,然后我们可以根据这个字段进行分组查询。

用法二:

例如,根据学员的年龄进行分层,青年、中年及其他,sql语句为:

select stuname,age,
  case when age<30 then &#39;青年&#39;
      when age>=30 and age<35 then &#39;中年&#39;
      else &#39;其他&#39; end as age_level
from stuinfo;

查询结果:

3MySQL에서 자주 사용되는 쿼리 절 15개를 요약하고 공유합니다(오셔서 수집하세요)

从上面可以看到,case后面跟的是条件when,即年龄满足什么条件时,将其划分到对应的类别,最后的else表示其他情况。

整个case语句相当于给原来的表增加一个字段:age_level,然后我们可以根据这个字段进行分组查询。

*15、 *变量

最后,谈谈MySQL中的变量,当然,MySQL中的变量有好几种类型,这里只说用户变量,像@var这种。

例如,我们希望根据学员的年龄计算出每个人到35岁还有几年,这里可以定义一个变量并赋值为35,然后利用这个变量减去年龄就得到结果。

首先,定义变量var,sql语句为:

set @var:=35;

接着,使用这个变量,sql语句为:

select @var-age as age_gap from stuinfo;

查询结果:

3MySQL에서 자주 사용되는 쿼리 절 15개를 요약하고 공유합니다(오셔서 수집하세요)

当然,关于变量还有很多更复杂的用法,多用于计算连续登陆天数这种问题或者存储过程中。

更多编程相关知识,请访问:编程视频!!

위 내용은 MySQL에서 자주 사용되는 쿼리 절 15개를 요약하고 공유합니다(오셔서 수집하세요)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 juejin.cn에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제