클리엘
CLIEL LAB
클리엘
전체 방문자
오늘
어제
  • 분류 전체보기 (515) N
    • Mobile (47)
      • Kotlin (47)
    • Web (84)
      • NestJS (9)
      • HTML5 & CSS3 (38)
      • Javascript (20)
      • TypeScript (6)
      • JQuery (11)
    • .NET (302) N
      • C# (85) N
      • ASP.NET (67)
      • Windows API for .NET (128)
    • Server (53)
      • SQL Server (10)
      • MariaDB (18)
      • Windows Server (6)
      • node.js (19)
    • System (12)
      • 작업LOG (12)
    • Review (11)
    • ETC (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 블로그 정리

인기 글

태그

  • Kotlin
  • LINQ
  • node.js
  • CSS3
  • NestJS
  • android studio
  • 변수
  • JavaScript
  • jQuery
  • asp.net core
  • .NET
  • asp.net core web api
  • Windows API
  • MariaDB
  • android
  • Entity Framework
  • c#
  • ASP.NET
  • HTML5
  • exception

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
클리엘

CLIEL LAB

Server/MariaDB

[MariaBD] select

2021. 5. 31. 12:55
728x90

테이블의 데이터를 조회합니다.

select *
from tb_user tu ;
userSeq userNumber userName userAge userAddress userJoinDate userUse
1 AAA-000001 홍길동 24 서울시 강남구 2021-04-13 09:49:58 1
2 BBB-000002 홍길순 30 부산 광역시 2021-02-23 15:13:21 1

특정 데이터만 조회하려면 where 절을 사용합니다.

select *
from tb_user tu
where tu.userName = '홍길동';

검색 대상이 문자열인 경우 like를 사용하면 문자열 내용 자체를 검색할 수 있습니다.

select *
from tb_user tu
where tu.userName like '홍길%';

% 문자는 모든 문자를 대체하므로 userName이 '홍길'로 시작하는 모든 데이터를 검색하게 됩니다. 반면 _ 문자를 사용할 수 있는데 이런 경우 단 한 글자만 대체합니다.

select *
from tb_user tu
where tu.userName like '_길동';

조건절에는 필요에 따라 조건연산자나 관계 연산자를 활용할 수 있습니다.

select *
from tb_user tu
where tu.userName = '홍길동'
and userAge >= 20;

검색 범위를 제한하려면 between을 사용하며

select *
from tb_user tu
where tu.userAge between 24 and 30;

찾을 값이 여러개라면 in을 사용할 수 있습니다.

select *
from tb_user tu
where tu.userName = '홍길동'
and userAge in (24, 30);

서브 쿼리를 통해 조건을 사용하려면 다음과 같이 쿼리를 작성합니다.

select *
from tb_user tu
where tu.userAge = (select tu2.userAge from tb_user tu2 where tu2.userName = '홍길동');

단 서브쿼리는 단 하나의 결과를 반환해야 하지만 만약 여러 개의 결과를 반환하는 경우라면 any나 all을 사용할 수 있습니다.

 

any는 반환되는 서브쿼리의 결과 중 하나라도 만족하는 결과를 가져오게 되며

select *
from tb_user tu
where tu.userAge >= any (select tu2.userAge from tb_user tu2);

all은 반환되는 서비쿼리의 결과를 모두 만족하는 결과를 가져오게 됩니다.

select *
from tb_user tu
where tu.userAge >= all (select tu2.userAge from tb_user tu2);

데이터의 정렬 순서는 order by를 사용합니다.

select *
from tb_user tu
order by tu.userAge asc ;

order by에서 asc는 오름차순을 의미합니다. asc는 생략할 수 있으며 기본적으로 적용되는 옵션입니다. 반면 내림차순은 desc옵션을 넣어줘야 합니다.

select *
from tb_user tu
order by tu.userAge desc ;

중복되는 데이터를 생략하고 하나만 표시하려면 distinct를 사용합니다.

select distinct userUse
from tb_user tu
order by tu.userAge desc ;

결과를 가져오는 전체 데이터중 몇 개의 row만 필요하다면 limit를 사용할 수 있습니다.

select *
from tb_user tu
limit 1;

이때 ,문자로 숫자 하나를 더 지정해 주면 '시작, 개수'처럼 사용됩니다.

select *
from tb_user tu
limit 0, 2;

select를 테이블을 생성하는 create table과 같이 사용하면 새로운 테이블에 데이터를 복사할 수 있습니다.

create table tb_user2
select *
from tb_user tu;

다만 제약조건등 테이블 고유의 특성까지는 복사되지 않습니다.


칼럼 별로 그룹 지어 표현하려면 group by 절을 사용합니다.

select userName, sum(userAge)
from tb_user tu
group by userName ;

예제에서 사용된 sum()함수는 합계를 표시하는 함수로 집계와 관련해서는 다음과 같은 함수를 사용할 수 있습니다.

agv() 평균
min() 최소값
max() 최대값
count() 갯수
count(distinct) 중복을 제거한 갯수
stdev() 표준편차

count()함수는 *을 사용해 전체 컬럼을 지정할 수 있고 count(userName)처럼 컬럼을 지정해 줄 수도 있습니다. 만약 특정 컬럽이 지정된 경우라면 해당 컬럼에서 null값은 제외됩니다.

 

만약 위 예제에서 sum(userAge)의 값이 25이상인 데이터만 보고 싶다면 having 절을 사용할 수 있습니다.

select userName, sum(userAge)
from tb_user tu
group by userName
having sum(userAge) >= 25;

having은 집계함수의 조건절에 해당합니다. 또한 중간합계가 필요하다면 rollup을 사용합니다.

select userName, userNumber, sum(userAge)
from tb_user tu
group by userName, userNumber
with rollup;

rollup은 group by 절을 기준으로 각 컬럼의 중간합계를 표시합니다.

 

728x90
저작자표시 비영리 변경금지 (새창열림)

'Server > MariaDB' 카테고리의 다른 글

[MariaDB] insert  (0) 2021.06.07
DML, DDL, DCL  (0) 2021.06.07
[MariaDB] 실행 쿼리 모니터링  (0) 2021.05.17
[MariaDB] Show  (0) 2021.04.30
[MariaDB] Data 파일 위치 변경  (0) 2021.03.30
    'Server/MariaDB' 카테고리의 다른 글
    • [MariaDB] insert
    • DML, DDL, DCL
    • [MariaDB] 실행 쿼리 모니터링
    • [MariaDB] Show
    클리엘
    클리엘
    누구냐 넌?

    티스토리툴바