상세 컨텐츠

본문 제목

#2. 에러(Error)에 대응하는 자세, 문제 풀이

내일배움캠프 학습/SQL

by 남민우_ 2024. 10. 11. 16:46

본문

1. 에러(Error)에 대처하는 자세

1. 당황하지 말 것

숙련된 개발자도 에러 메세지는 항상 볼 수 있다.

에러가 난 상황에 과도하게 집착해 원인파악을 미루지 말 것.

2. 왜 에러가 났는가에 집중

에러 문구는 에러 타입과, 에러 원인을 둘 다 보여준다.

에러 타입에 집중하지 말고, 에러가 난 이유를 먼저 확인하자

에러 타입 : SQL Error [1054] [42S22]

에러 원인 : Unknown column 'restaurant_namee' in 'field list'

= "컬럼 리스트 중 restaurant_namee 라는 컬럼이 없다"

= 컬럼을 작성하면서 오타/없는 컬럼을 타이핑한 것.

 

이처럼 차분히 에러 메세지를 들여다보면 문제 원인을 알려주기 때문에 쉽게 헤쳐나갈 수 있다.

 

자주 만날 수 있는 에러 메세지 경우

1. 테이블 명을 다르게 적었을 때

SELECT * FROM payment

 

2. 컬럼 명을 다르게 적었을 때

SELECT * FROM payments WHERE agee > 30

여기서 'where clause' 는 WHERE 절에 문제가 있다는 의미

 

3. 필터링 조건 준 문자에 '  ~  ' (작은 따옴표)  를 빠뜨렸을 때

SELECT * FROM payments WHERE pay_type = card

 

 

모든 문제의 해결 방법은 에러 메세지를 온전히 해독하는 것에서부터 시작한다.

 

 

2. 문제 풀이 1

상품 준비시간이 20~30분 사이인, 한국음식점의 식당명과 고객번호 조회하기

문제 조건

1. 조회해야 할 컬럼 특정
2. '사이' 조건 : BETWEEN
3. 특정 조건 지정 : =
4. 복수의 조건 지정 : AND

 

풀이 단계

1. 테이블 : food_orders 의 전체 컬럼 먼저 조회
2. 조회해야 할 컬럼 특정
-1. 상품 준비시간 : food_preparation_time
-2. 한국 음식점 : cuisine_type
-3. 식당명 : restaurant_name
-4. 고객번호 : customer_id

조회 후 출력해야 하는 컬럼은 '식당명', '고객번호'
select 뒤에 작성,
검색 조건은 상품 준비시간이 20~30분, 한국 음식점

 

답안 코드

SELECT restaurant_name as "식당 이름", customer_id as "고객번호"
FROM food_orders fo 
WHERE food_preparation_time BETWEEN 20 AND 30
AND cuisine_type = 'Korean'

 

출력 결과물을 더 보기 편하게 하기 위해
'as' 를 사용 해 컬럼명을 별명으로 출력함

 

 

3. 문제풀이 2

1. sparta_employees 테이블에서 모든 직원의 이름(name)과 직급(position)을 선택하는 쿼리를 작성해주세요.

SELECT name, position
FROM sparta_employees

 

2. sparta_employees 테이블에서 중복 없이 모든 직급(position)을 선택하는 쿼리를 작성해주세요.

SELECT DISTINCT position
FROM sparta_employees

 

3. sparta_employees 테이블에서 연봉(salary)이 40000과 60000 사이인 직원들을 선택하는 쿼리를 작성해주세요.

SELECT *
FROM sparta_employees
WHERE salay BETWEEN 40000 AND 60000

 

4. sparta_employees 테이블에서 입사일(hire_date)이 2023년 1월 1일 이전인 모든 직원들을 선택하는 쿼리를 작성해주세요.

SELECT *
FROM sparta_employees
WHERE hire_date < 2023-1-1

관련글 더보기