[국비학원 기록/DB] SELECT문, WHERE, NULL, ORDER BY, GROUP BY
my code archive
article thumbnail
반응형
SELECT

1. SELECT

1)테이블에서 원하는 데이터를 검색

 

2)Syntax

SELECT [DISTINCT]{*|<column_name>,...}
FROM 테이블 이름(들)
[WHERE 검색조건(들)]
[GROUP BY 속성이름]
[HAVING 검색조건(들)]
[ORDER BY 속성이름[ASC|DESC]]

3) DISTINCT : 결과 테이블에서 중복된 레코드를 제거하는 키워드

 

4) select 절에 산술식 포함 가능

-[+,,-,*,/]

 

2. WHERE

1)테이블에서 조건에 맞는 데이터만 검색할 때 WHERE 절 이용

 

2)Syntax

SELECT [DISTINCT]{*|<column_name>,...}
FROM <table list>
[WHERE condition]

3)Condition : 비교 연산자(=,<>,<,>,<=,=>), 논리 연산자(AND, OR, NOT)

 

4)LIKE 키워드(패턴)

-문자열 컬럼인 경우 부분적인 매칭으로 조건 검색 가능

% : 0개 이상의 문자
_  : 1개의 문자

<EX>
SELECT * FROM employee WHERE name LIKE '이%';
SELECT * FROM employee WHERE name LIKE '이순_';

 

5)BETWEEN(범위), IN,NOT IN(집합)

price BETWEEN 10000 AND 20000
=price in(10000,20000,30000)
=같은 의미

 

6)IS NULL, IS NOT NULL

 

3. NULL value

1)NULL은 empty가 아닌 unknown

 

2)NULL값의 산술 연산 및 비교 연산 결과는 NULL!!

-5 + null =========> null
-null>5 =========> null
-null=null =========> null

 

3)null과 논리 연산 결과

 

 -OR
  -(null OR true) = true
  -(null OR false) = null 
  -(null OR null) = null


 -AND
  -(true AND null) = null
  -(false AND null) = null
  -(null AND null) = null


 -NOT
  -(NOT null) = null

 

4)null값을 가진 row를 찾기 위한 조건식 -- IS NULL

<EX>
SELECT id,name FROM customer WHERE age is NULL;
EX) 

지난번 수업 시간에 만들었던

BOOK, CUSTOMER, ORDERS 테이블 활용

 

 

SELECT, FROM, WHERE ... 순서 기억!!!!

 

4. Aggregation Function

1)특정 컬럼의 값을 통계적으로 계산한 결과를 보여주는 SQL 함수

 

-COUNT : 컬럼 값의 개수
-MAX : 컬럼 값의 최대값
-MIN : 컬럼 값의 최소값
-SUM : 컬럼 값의 합계    ==>   숫자 데이터만 가능
-AVG : 컬럼 값의 평균     ==>   숫자 데이터만 가능

 

5. 별명(Alias)

1)SQL 쿼리 결과 생성 시 컬럼 명에 대한 별명을 사용해 표시하는 기능

 

2)AS -> 생략 가능

 

3)띄어쓰기, 숫자로 시작하는 단어, 특수문자가 포함된 단어는 올 수 없다. -> 큰따옴표("")로 감싸주면 가능함.

 

6. NULL value in Aggregation Function

1)만약 컬럼 값이 null이면 합을 계산할 때 무시,

  컬럼 값이 모두 null이면 null이 출력됨.

 

2)MAX, MIN, SUM, AVG의 경우 NULL이 아닌 값으로만 계산

 -모두 null인 경우 null을 리턴.

 

3)count : null이 아닌 값의 개수를 출력

-모두 null인 경우 0 리턴 (개수가 없으니까)

 

4)테이블에 레코드가 없는 경우

-SUM, AVG, MAX, MIN : return NULL;

-count : return 0;

 

ORDER BY

1)SELECT의 검색 결과를 정렬하기 위해 ORDER BY 키워드 사용

2)Syntax

SELECT[DISTINCT]{*|<column_name>,...}
FROM <table list
[WHERE condition]

[ORDER BY <column_name>,...[ASC|DESC]];

3) ASC : 오름차순 정렬 (따로 설정 안하면 오름차순이 default)

   DESC : 내림차순 정렬

4)결과값을 특정 컬럼을 기준으로 오름차순(ASC), 내림차순(DESC) 정렬해서 표현.

   여러 개의 경우 컬럼 나열된 순서로 적용(1차 정렬, 2차 정렬)

 

GROUP BY

1)테이블에서 특정 컬럼의 값이 같은 ROW를 모아 그룹을 만들고

  그룹별로 검색하기 위해 사용되는 KEWORD.

 

2)그룹에 대한 조건을 추가하려면 HAVING 키워드를 이용.

-WHERE 조건 : 레코드를 grouping 하기 전에 조건을 검색
-HAVING 조건 : 레코드들을 grouping 후에 그룹에 대한 조건을 검색

 

3)Syntax

SELECT [DISTINCT]{*|<column_name>,...}
FROM <table list>
[WHERE condition]
[GROUP BY <column_name list>
[HAVING condition]]
[ORDER BY <column_name list>,...[ASC|DESC]];

 

4) GROUP BY 절에서 가장 많이 하는 실수

-SELECT절에 등장한 컬럼이 GROUP BY에 모두 명시되지 않은 경우 (집계 함수 제외)

<ex>

-SELECT CATEGORY, YYYY, SUM(GMV)AS GMV
  FROM GMV_TREND
  GROUP BY CATEGORY,YYYY;

-집계함수 빼고는 모두 GROUP BY에 명시할 것! -> CATEGORY, YYYY 둘중에 한 개만 쓰면 에러난다.


-집계함수 앞의 컬럼을 추가하거나 뺄 때 GROUP BY절도 같이 수정해줘야 함!

 

반응형
profile

my code archive

@얼레벌레 개발자👩‍💻

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

반응형