마케터의 SQL 학습기 : 데이터 전처리용 기본구문 익히기 (1)

2022. 5. 11. 23:49Work, 일/SQL

요약
- SQL 작성 참고사항

- 데이터 정리를 위한 SQL 기본 구문
- select 구문
- from 구문
- select와 from 연결해 테이블 구성 확인하기
- where 구문
- where 구문 비교연산자
- where 구문 논리연산자
- where 구문 SQL연산자

 

 

SQL 작성 참고사항

1. 각 구문의 순서를 정확하게 지켜서 작성하기

2. 여러 문장이 겹쳐있을 경우 원하는 구문만 드래그하여 실행하기 (단축키 : Ctrl+Enter)

3. ;(세미콜론)으로 문장 마무리하기

4. 각 단어의 사이는 띄어쓰기(공백), 줄바꿈, 탭, 쉼표로 구분 가능 : 적절한 공백, 줄바꿈은 SQL의 가독성을 높임
5. 여러 단어를 연결하여 한 개의 단어로 표현하려면 _(언더바) 사용
6. SQL 구조화 연습 : 한글과 구문을 매칭시키면서 문장을 작성한 후 한글 지우고 실행하기

   ㄴ한글 문장 앞에는 '--'을 넣으면 빨간색으로 처리되며 명령어로 인식되지 않음 : 주석처리 한다고 함

7. 같은 결과값이라도 구문은 다를 수 있다. 다양한 구문을 사용해보고 어떤 구문이 효과적인지 판단해보는 습관은 내 SQL을 빠르게 완성시켜준다

8. 오류메세지를 보고 역으로 수정해가는 편이 오히려 효율적일 수 있다
9. 데이터 테이블 파일을 열지 않고도 테이블 구성을 확인하는 방법 : 테이블의 5행까지 불러온다 (select * from 테이블명 limit 5)

 

 

데이터 정리를 위한 SQL 기본 구문

- 필수 구문 2가지 : select(무엇을), from(어디서)

- 선택 구문 4가지 : where, group by, having, order by

 

 

select 구문

- 데이터를 선택(산출)하는 의미로 화면 상으로 결과 데이터를 불러오는 역할 (~를 선택해라)
- 반드시 입력해야 하는 명령어 (필수구문)
- 이 다음에는 선택할/가지고 올 컬럼명 작성
- (1) 모든 컬럼을 동시에 가져오기는 '*' : select * from 테이블명
- (2) 필요한 컬럼들만 가져오기는 '쉼표' : select col1, col2, col3 from 테이블명
         ㄴ각 컬럼을 입력할 때는 쉼표로 구분하고 마지막 컬럼 뒤에는 쉼표 생략

- (3) 컬럼명을 별칭으로 변경해 산출하기는 'as(에일리어스)' : select col1 as AA from 테이블명 -> 결과는 col1 대신 AA로 산출

         ㄴ컬럼명이 너무 길거나 복잡한 경우 간소화하기 위해 혹은 중복 컬럼명이 있을 경우 사용 (중복 컬럼명 산출 불가)

 

 

from 구문

- 데이터를 검색해오는 데이터베이스와 테이블을 지정하는 구문

- 정확하게 어느 데이터베이스에서 어떤 테이블명을 검색할지, 혹은 어떤 테이블에서 어떤 컬럼명을 검색할지 명확하게 작성해야 함 (중복명이 있을 수 있음)
- 테이블명도 as 활용 가능 (as는 생략하고 한칸 띄어쓰기 후 별칭 입력 가능)

 

 

select와 from 연결해 테이블 구성 확인하기

1. 테이블 구성 컬럼을 확인하는 방법 (컬럼명 및 필드형태 확인 시 활용)
- limit로 행 제한하기 : select * from 테이블명 limit N (N줄까지만 제한해서 데이터 뽑기 - 컬럼명 및 필드형태 확인 시 활용) 

2. 컬럼 내 필드값 확인하는 방법
- distinct로 중복 필드값 필터링하기 : select distinct 컬럼명 from 테이블명 (어떤 필드로 데이터를 적재하고 있는지 확인 시 활용)

 

 

where 구문

- 테이블에 '검색 조건'을 적용하는 구문 : 테이블을 축소하는 개념이라 볼 수 있음

- from 다음에 작성

- 검색 조건은 연산자(비교/SQL/논리 연산자)를 사용해 적용 가능

- '데이터형' 이해가 필요 : 데이터형에 따라 연산자 작성방법이 다를 수 있음(date 데이터형은 날짜형식(2015-07-14)로 작성하는 등)

   ㄴ다 외우기 어려우므로 실무에서는 차라리 쿼리 실행 후 오류문구를 보고 고쳐나가는 게 효율적이다

클래스101 크리에이터 윤혜님의 SQL 강의화면 캡처 이미지

 

 

where 구문 비교연산자
1. =, >, <, >=, <= 등 (날짜도 비교연산자를 사용할 수 있다)

2. !=, <> : 같지 않다 (select * from 테이블명 where 컬럼명 <> 테이블값 = 테이블값을 가진 행만 살린 뒤 모든 컬럼을 가져와줘)

 

 

where 구문 논리연산자

- 두 가지 조건을 조합하기 위한 연산자
- 쓰기에 앞서서 어떤 연산자를 걸어야 하는지 고민 필요(헷갈리기 쉽다)

1. and : and 앞뒤에 있는 조건을 모두 충족하는 경우에

2. or : 앞뒤 조건 중 한 가지라도 충족하는 경우에

3. not : 뒤의 조건과 반대인 경우에

 

 

where 구문 SQL연산자

1. between [a] and [b]
: a 이상 b 이하인 경우
: [a] <= 컬럼 and 컬럼 <= [b]와 같이 비교연산자로 표현 가능

2. [컬럼명] in (리스트)
: 리스트 안에서의 컬럼을 가져오는 경우
: 리스트가 a, b, c라고 할 때 [컬럼명] = 'a' or [컬럼명] = 'b'와 같이 표현 가능

3. [컬럼명] like '비교문자'
: 일치여부를 정확하게 확인 불가해 =(등호연산자)를 사용할 수 없는 경우 사용 (~같은/~처럼으로 해석하여 사용)
: '%', '_' 기호연산자(wild card)와 함께 사용

3-1. '%'
: 검색하고자 하는 문자의 위치만 반영함. 즉, 검색 문자의 위치만 동일하다면 해당 문자 앞 혹은 뒤에 붙는 문자는 형태나 수의 제한 없이 모두 검색됨. 아무것도 붙지 않고 해당 단어만 있는 값 또한 검색됨.
: like '%치킨%' >> 양쪽 어디에 어떠한 문자가 얼마나 붙든 관계없이 '치킨'이 포함된 모든 값을 검색함
  ㄴ실무에서 가장 많이 사용함

: 단, 테이블값이 숫자일 때 like로 검색할 경우 cast 함수로 테이블값을 int(숫자)에서 string(문자)로 변환인식시켜야 함. cast ('컬럼명' as string)  

3-2. '_'
: 검색하는 문자 수를 반영함. 
: like '___치킨' >> '치킨' 단어가 맨 마지막에 위치하며, '치킨' 앞에 3개의 문자만 있어야 하는 경우
4. [컬럼명] is null
: 컬럼에 데이터가 없는 경우 (공백인 경우)
: null과 0(숫자)의 의미는 다름. 0(숫자)는 0이라는 데이터가 있는 것
: '=null'이라고 표기 불가능. null은 데이터가 없기 때문에 비교연산자로 비교가 불가
: 'null 외의 값 불러오는 경우 is not null 사용