My SQL에서 select 문 사용 기본

김지혜·2023년 3월 29일
0
  1. 쿼리 요령

1) show tables로 어떤 테이블이 있는지 살펴보기 (Ctrl+엔터 -> 실행 기능)
2) 제일 원하는 정보가 있을 것 같은 테이블에 select from 테이블명 으로 조회
3) 왼쪽에서 DB 선택 후 Table -> 테이블 선택 -> Columns 로 조회하는 것도
방법이나, 실제 데이터가 어떻게 등록돼 있는지를 보는 것이 좋으므로 위 2)를 반복하여
조회하고자 하는 데이터가 있는 테이블을 찾기
4) 테이이블 조건을 걸 필드를 찾기
5) select
from 테이블명 where 조건 이것이 조회하는 가장 기본
일단 select from 테이블명으로 조회 하고
6) select 다음에 조회하고자 하는 필드 또는 조회하고자 하는 형태 (예> count(
) 등) 입력
7) where 다음에 '조건' 입력 - 아래2 참조

  1. select 다음에 쓸 수 있는 것

    1) 필드 - 필드 정보를 그대로 보여주고자 할 때
    2) sum(A) - A 필드 값이 숫자로만 돼 있는 경우 해당 합계
    3) count(A) - A 필드 값의 개수를 구할 때 (NULL 은 포함하지 않음)
    4) avg(A) - A값들의 평균
    5) SUBSTRING_INDEX(A,'x',1) (또는 SUBSTRING_INDEX(A,'x',-1) )

    • 데이터 A의 값이 모두 x 를 포함하고 있을 때 x라는 문자를 기준으로 '1'을 넣으면 앞 문자가
      '-1'을 넣으면 뒷 문자가 조회됨
      6) SUBSTRING(A,a,n) - A필드 값의 a번째 값부터 n만큼의 문자를 조회 (엑셀의 mid 함수와 비슷한 듯)
      7) case 문 (아래 설명 참조)
      8) 기타 엑셀에서 처럼 두 개 이상의 필드의 사칙연산이나 round 로 값 조정 가능

      *** select 사용 시 주의 사항 : 2개 이상을 조회하고자 할 때 반드시 콤마 (,) 가 있어야 함
      조회하도록 선택한 항목 다음에 "as 명칭" 을 넣으면 해당 명칭이 해달 필드 타이틀이 되어 조회됨

  2. 주로 사용하는 선택 조건 (where 다음에 올 수 있는 것)

1) 같지 않음 : != ('!=' 에서 ! (느낌표)는 부정 (not)을 의미합니다. '='는 같음을 의미)
2)'범위' : between (예시 > begin_date between "2022-07-13" and "2022-07-15" )
3)'포함' : in (예시 > where week in (1, 3) )
4) 패턴' (문자열 규칙 / 포함의 의미) : like (예시>
- where email like 'a%': email 필드값이 a로 시작하는 모든 데이터
- where email like '%a' email 필드값이 a로 끝나는 모든 데이터
- where email like '%co%' email 필드값에 co를 포함하는 모든 데이터
- where email like 'a%o' email 필드값이 a로 시작하고 o로 끝나는 모든 데이터 )

5) 일부 데이터만 가져오기: Limit (가져오는 개수의 제한 설정)

  • where family_name = '김'
    limit 5

6) 중복 데이터는 제외하고 가져오기: Distinct

  • select distinct(employee_ID) from employee_master

7) 몇 개인지 숫자 세보기: Count
- select count(*) from employee_master

*** [응용] Distinct와 Count를 같이 쓸 때

  • SELECT count(distinct(name)) from users;
  1. case 문 사용

    • case when 조건 then 결과값
      when 조건 (위에 포함되지 않는 조건) then 결과값
      else 결과값 end
  1. 두 개 이상의 테이블에서 정보를 취득하고자 할 때

    1) 각각의 테이블 정보 전체 보기
    2) 공통적으로 있는 필드 찾기
    3) inner join - 공통 필드로 엮어 두 테이블의 교집합으로 조회되게 함
    구문 : select from table A inner join table B on A테이블 필드 = B테이블 필드
    이 때, 테이블 이름이 복잡하고 긴 것을 피하기 위해 간략한 약어로 테이블 명명
    예> select
    from table A a inner join table B b on a.id = b.id
    4) left join - 엑셀의 VLOOKUP 처럼 하나의 테이블을 기준으로 다른 테이블의 값을 붙임
    방식은 inner join 과 동일
    어느 테이블을 기준으로 가져올 것인지를 잘 정해야 하며, 그 테이블이 from 다음에
    조인할 테이블을 left join 다음에 정의하면 됨

  2. Subquery 활용
    1) 정해진 테이블에서의 조회가 아니라 편집을 통해 생성된 값이 활용되어야 할 때 필요
    2) Subquery 는 보통 단독으로 실행해도 값이 조회되는 완벽한 쿼리 문
    3) 해당 쿼리문을 조회해보고,
    조회하고자 하는 쿼리의 기본틀을 만든 다음, 해당 조건이 들어가야 하는 부분에 괄호를 넣어 삽입

  3. with 의 사용

    1) 위 Subquery를 테이블로 정의하고, 해당 테이블을 황요하여 값이 조회되게 함
    2) with 테이블명 as (쿼리) 형태로 하고, 테이블이 2개 이상인 경우
    with 테이블 A as (쿼리 AA), 테이블 B as (쿼리 BB) 처럼 콤마로 연결
    3) 상단에 with 로 테이블을 정의하고 하단에 select 구문을 넣어 함께 실행해야 함

8 기타 활용 가능한 기능

1) group by
   - '~별' 로 조회하고자 할 때 제일 하단데 group by 컬럼을 넣고,
     select 컬럼, 추가 조회하고자 하는 컬럼.. 을 넣는 식으로 함
   - 주로 통계에 활용

2) order by
    - 값의 정렬 순서
    - order by A 는 A 값이 오름차순으로 정렬되어 조회됨
    - 내림 차순으로 정렬하고 싶으면 order by A desc 처럼 'desc'를 추가로 입력
profile
개발을 잘 하고픈 설계자

0개의 댓글