포도가게의 개발일지

SQL query 구문 연습 본문

DB

SQL query 구문 연습

grape.store 2021. 12. 23. 20:36
반응형

1. select 문법 순서

  1. select
  2. from
  3. where
  4. group by
  5. having
  6. order by

*쿼리의 실행 순서는 from -> where **-> group by ->having ->select -> order by**

2. Order by

  • 특정 칼럼 기준으로 정렬
  • ASC : 오름차순 1 2 3 4 5
  • DESC : 내림차순 5 4 3 2 1
    select * from student order by age desc;

3 .Where

  • 컬럼 조회의 조건
    select * from student where id = 1;
  • and, or 조건
    select * from student where sex='남자' and(or) address='서울';
  • like 조건
    % 로 표현
    select * from student where name = '김%';

정렬 여러 조건으로

4. 연산자

  • 산술 연산자 : + - / *
  • 비교 연산자 : > < >= <= = != ^= <>
  • 논리 연산자 : and, or, not
  • 비교 연산자2 : between and, in, is null, like

5. Limit

  • 조회 결과 행의 수 제한
    select * from student limit 1;

문제 : 동물 보호소에 가장 먼저 들어온 동물의 이름을 조회하는 SQL 문을 작성해주세요.

6. Alias

  • 칼럼에 별칭을 주고 조회
    select age '나이' from student where id = 3;

문제 : 가장 최근에 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성해주세요.

7. 계산 함수

  • max
  • min
  • count
  • avg
  • sum

select 계산함수(칼럼) from 테이블; 로 사용

문제 : 동물 보호소에 가장 먼저 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성해주세요.

동물 몇마리인지 카운트

8. Distinct

  • 중복 행을 제거
    select distinct name from student;

문제 : 동물 보호소에 들어온 동물의 이름은 몇 개인지 조회하는 SQL 문을 작성해주세요. 이때 이름이 NULL인 경우는 집계하지 않으며 중복되는 이름은 하나로 칩니다.

그럼 null count 는 어떻게 하지?

https://ggmouse.tistory.com/527

Group By

  • 특정 칼럼 기준의 데이터 그룹핑
    select 컬럼 from 테이블 group '그룹화할 컬럼';

컬럼 그룹화

SELECT 컬럼 FROM 테이블 GROUP BY 그룹화할 컬럼;

조건 처리 후에 컬럼 그룹화

SELECT 컬럼 FROM 테이블 WHERE 조건식 GROUP BY 그룹화할 컬럼;

컬럼 그룹화 후에 조건 처리

SELECT 컬럼 FROM 테이블 GROUP BY 그룹화할 컬럼 HAVING 조건식;

조건 처리 후에 컬럼 그룹화 후에 조건 처리

SELECT 컬럼 FROM 테이블 WHERE 조건식 GROUP BY 그룹화할 컬럼 HAVING 조건식;

문제 : 고양이와 개는 몇 마리 있을까

Having vs Where

먼저 having절과 where절의 유사점은

  • 둘 다 데이터 세트검색을 필터링할때 사용할 수 있다는 점입니다.

having 절과 where절의 차이

having은 group by, where은 group by 이외

Having절은 WHERE절과 비슷하지만 그룹 전체 즉, 그룹을 나타내는 결과 집합의 행에만 적용된다

반면 WHERE절은 개별 행에 적용이 된다.

having은 SQL select문이 집계 값이 지정된 조건을 충족하는 행만 반환하도록 지정하는 SQL절이다.

where은 단일 테이블에서 데이터를 가져 오거나 여러 테이블과 결합하여 조건을 지정하는데 사용되는 SQL절이다.

having절은 그룹을 필터링하는 데 사용된다.

where절을 행을 필터링 하는데 사용된다.

having 절은 Group By 절 뒤에 사용합니다.

Where 절은 Group By 절 앞에 사용합니다.

 

문제 : 입양 시각 구하기(1)

  • TYPE이 DATETIME 인 데이터에서 시간만 추출하려면 HOUR을 사용합니다.

 

문제 : 2. 입양 시각 구하기(2)

 

  • SET 옆에 변수명과 초기값을 설정할 수 있습니다.
    • @가 붙은 변수는 프로시저가 종료되어도 유지된다고 생각하면 됩니다.
    • 이를 통해 값을 누적하여 0부터 23까지 표현할 수 있습니다.
  • @hour은 초기값을 -1로 설정합니다. PL/-SQL 문법에서 :=은 비교 연산자 =과 혼동을 피하기 위한의 대입 연산입니다.
  • SELECT (@hour := @hour +1) 은 @hour의 값에 1씩 증가시키면서 SELECT 문 전체를 실행하게 됩니다.
  • 이 때 처음에 @hour 값이 -1 인데, 이 식에 의해 +1 이 되어 0이 저장됩니다.
    • HOUR 값이 0부터 시작할 수 있습니다.
    • WHERE @hour < 23일 때까지, @hour 값이 계속 + 1씩 증가합니다.

 

NULL 찾기

1. WHERE 컬럼 is NULL

2. WHERE 컬럼 is not NULL

 

문제 : NULL 처리하기

 
 

JOIN

1. LEFT JOIN

  • A, B 테이블 중에
  • A값의 전체와, A의 KEY 값과 B KEY 값이 같은 결과를 리턴

9996, 9276은 있어서 합쳐졌으나 나머지3개는 없어서 null값으로 출력됨

 

문제 : 있었는데요 없었습니다

IN (여러스트링 찾기)

문제 : 중성화 여부 파악하기 (CASE ~ WHEN ~ THEN ~ ELSE END)

문제 : 오랜 기간 보호한 동물

 

형변환!

문제 : DATETIME -> DATE로 형변환

 

 

문법 사이트

http://tcpschool.com/mysql/mysql_datatype_dateTime

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

 

'DB' 카테고리의 다른 글

DB Index?(업데이트 필요)  (0) 2022.02.07
SQL vs. NoSQL  (0) 2022.02.07
Mongoose DB value 값 구조  (0) 2021.12.18
Mysql query 작성  (0) 2021.11.07
NestJS: TypeOrm 메소드  (0) 2021.11.06
Comments