2022/<Programing>

개발일지 (SQL 1주차)

Rosik 2022. 3. 12. 00:01

 

SQL 강의도 한 주가 끝났다. 내가 만들고자 하는 사이트는 데이터베이스 기반이기 때문에 웹과 함께 이 강의를 수강했다. 스파르타 코딩의 SQL 강의는 방대한 양의 데이터에서 내가 필요한 데이터들을 뽑아내는 실전 방법들을 알려준다. 데이터 베이스용 언어는 다른 프로그래밍 언어들과 설계 방향이 조금 달라서 초반에 약간 헤맸었다. 예를 들면 웹 기반의 프로그래밍은 없는 데에서 만들어내야 하기 때문에 설계에 가깝다. 사용자가 여기를 클릭하면 이렇게 만들고, 저기를 클릭하면 링크를 보내고... 이런 식이다. 반면 데이터베이스는 정리에 가까운 것 같다. 이미 방대한 양의 자료가 있기 때문에 마치 조각하듯이 조건의 크기를 줄여나가면서 원하는 바를 얻는다. 이 차이가 바로 백엔드와 프런트엔드의 차이가 아닐까...?

 

잡설은 여기까지 하자. 아무래도 생소한 언어다 보니 배운 내용을 정리해두어야 할 것 같다.

 

데이터베이스는 테이블과 필드로 이루어져 있다. 핵심은 어떤 테이블(파일)에서 어떤 필드(조건, 열)를 가져오느냐

그리고 코드를 실행시킬 때 앤터가 아니라 Control + 앤터를 눌러야 실행이 된다.

 

1. 처음 데이터베이스가 어떻게 이루어져 있는지 확인하기 위해 사용하는 코드.

show tables

 

2. 쿼리문

- select

select * from 테이블 이름 -> 테이블이 열림, 엑셀파일이 열리는 것과 비슷한 동작. 쿼리문 이라고 불린다.

* 표시는 웹에서와 마찬가지로 '전체'의 의미를 가진다. 그래서 위의 코드를 동작시키면 모든 테이블들이 나온다.

 

select 필드1,필드2... from 테이블 -> 이 코드는 선택된 테이블에서 선택된 필드만 가져온다. 필드는 여러개가 올 수 있다.

 

3. 조건문

- where 절 -> 쿼리문(select)에 조건을 걸어줄 수 있음 엑셀의 필터같은 역할

select * from 테이블

where 필드1 = '필드값1' and 필드2 > '필드값2' and 필드3 != '필드값3'... -> and를 통해 여러 조건을 걸어줄 수 있음.

 

where 절과 자주 사용되는 조건

- 범위

where 필드 between '날짜' and '날짜'

- 포함

where 필드 in (조건1, 조건2)

- 패턴

where 필드 like '%.com' -> %는 .com 전의 내용은 무시하고 마지막이 .com으로 끝나는 필드값을 전부 가져옴. 앞, 중간, 뒤 어디든 사용가능

 

limit

데이터가 너무 많을 수 있을 경우 연산속도가 느려지기 때문에 최대한도를 걸어주는 역할

limit 5 -> 이런식으로 사용됨.

 

select 쿼리와 사용되는 조건

 

distinct

중복데이터 제거 후 가져오기

select distinct(필드) from 테이블 -> 성씨나 메일주소등 중복되는 데이터를 지우고 가져온다.

 

count

필드값 숫자세기

select count(*) from 테이블

 

distinct와 count를 같이 사용하는 예시

select count(distinct(필드값)) from 테이블 -> 중복 데이터를 지운 후 데이터 숫자를 센다.