select문 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
안녕하세요.
아주 기초적인 질문이 있습니다.
-- 고객명 Antonio Moreno이 1997년에 주문한 주문 정보를 주문 아이디, 주문일자, 배송일자, 배송 주소를 고객 주소와 함께 구할것.
SELECT contact_name, address, order_id, order_date, shipped_date, ship_address
FROM nw.customers a
JOIN nw.orders b ON a.customer_id = b.customer_id
WHERE a.contact_name = 'Antonio Moreno'
AND b.order_date BETWEEN to_date('19970101', 'yyyymmdd') AND to_date('19971231', 'yyyymmdd');
위 코드처럼 select문에서 alias를 빼고 작성해도 문제가 없이 나오는데 큰 의미는 없는건가요?
어떤 테이블에서 가져온 컬럼값인지 명확히 해주기위해서 필요한 것인가요?
alias를 반드시 붙혀야만 실행되는 코드들도 있던데, 차이점이 궁금합니다.
SQL을 배운 지 얼마되지 않아 이렇게 질문을 남깁니다.
답변 1
0
안녕하십니까,
alias는 테이블의 원래 컬럼명을 select 절에서 치환하여 사용하기 위함입니다. 원래 컬럼명이 길다면 좀 짧게 하거나, 좀 더 명확하게 컬럼명을 부여하기 위해서 사용합니다.
예를 들어
EMP 테이블에 EMPNO 라는 컬럼명이 원래 존재하는데 아래와 같이
SELECT EMPNO AS ENO FROM EMP;
를 사용하게 되면 Select 절의 결과 컬럼명으로 EMPNO가 아니라 ENO으로 출력이 됩니다.
Alias를 반드시 붙여야만 수행되는 코드는 없을 겁니다. alias를 붙여도 되고, 안붙여도 됩니다. 다만 앞에서 질문하셨던 with 절 내에서 alias로 컬럼명을 치환했으면, 이 with절을 사용하는 select는 해당 alias 컬럼명을 이용해줘야 합니다.
감사합니다.
0
앗 제가 잘 이해를 못해서 다시 한번 질문을 드립니다 ㅠㅠ
-- 고객명 Antonio Moreno이 1997년에 주문한 주문 상품정보를 고객 주소, 주문 아이디, 주문일자, 배송일자, 배송 주소 및
-- 주문 상품아이디, 주문 상품명, 주문 상품별 금액, 주문 상품이 속한 카테고리명, supplier명을 구할 것.
SELECT a.contact_name, a.address, b.order_id, order_date, shipped_date, ship_address, c.product_id, d.product_name, c.amount, e.category_name, f.contact_name as supplier_name
FROM nw.customers a
JOIN nw.orders b ON a.customer_id = b.customer_id
JOIN nw.order_items c ON b.order_id = c.order_id
JOIN nw.products d ON c.product_id = d.product_id
JOIN nw.categories e ON d.category_id = e.category_id
JOIN nw.suppliers f ON d.supplier_id = f.supplier_id
WHERE a.contact_name = 'Antonio Moreno'
AND b.order_date BETWEEN to_date('19970101', 'yyyymmdd') AND to_date('19971231', 'yyyymmdd');
위 코드 중
SELECT a.contact_name, a.address, b.order_id, order_date, shipped_date, ship_address
위 부분에서 order_date, shipped_date, ship_address 부분은 alias를 안 붙혀여도 실행이 되서요.. 이유가 궁금합니다!!
그리고 한 가지 더 질문 드려도 될까요?
위 코드에서
SELECT contact_name, ...
이렇게 ailas를 붙이지 않으면
SQL Error [42702]: 오류: 칼럼 참조 "contact_name" 가 모호합니다.
Position: 155
이러한 오류가 뜹니다. 붙이고 안 붙이고의 차이점이 궁금합니다..
긴 질문 읽어주셔서 감사합니다!
1
select 절에 동일한 컬럼명을 가진 컬럼들이 여러개 있으면 이중 하나의 컬럼명을 자동으로 변경하는 DB가 있고, 오류를 발생 시키는 DB들이 있습니다. PostgreSQL은 오류를 발생 시킵니다.
따라서 alias 등으로 컬럼명을 변경 시켜줘야 합니다.
'레벨 유지'의 의미에 대한 질문
0
54
2
date_part
0
56
2
lag/lead offset 관련 질문
0
58
2
join 관련 질문 (inner join, left join)
1
101
2
배치에서 full outer join을 쓴다고 하셨는데 예시를 알 수 있을까요?
0
90
2
Madrid에 살고 있는 고객이 주문한 주문 정보를 구할것. 실습 질문드립니다
0
54
2
rollup시 null값 매출 라벨링
0
56
2
10. 조인 실습 - 02 관련 질문
0
61
1
조인실습03 - join의 pk-fk join
0
109
2
조인실습03 - join의 pk-fk join
0
69
2
(공유)맥, 스키마 import
0
82
2
sql 입문자인데, 이 강의와 sql 코딩테스트와 연관이 있을까요?
0
138
2
1인지 M인지는 결국엔 테이블을 직접 확인을 해야 하는걸까요?
0
132
2
안녕하세요. 튜닝핵심가이드강의 관련해서 여쭤보고 싶어서 남깁니다.
0
92
1
섹션5 Group by 실습-01 강의 예제 질문
0
120
2
섹션2 조인 기반 메커니즘에서 조인 실습 - 04 강의 예제 질문
0
125
2
섹션2 조인 실습 01 강의 질문
0
134
2
lead lag 이해 강의에서 윈도우 절은 사용되지 않습니다.
0
128
1
Dbeaver오류
0
632
2
직원 별 가장 높은 매출
0
119
1
강의순서대로 실습코드순알려주세요.
0
134
1
m:n inner join일 경우 cross조인과 동일하게 동작되는건가요?
0
132
1
rollup
0
91
2
Dbeaver에 접속해도 postgressql이 네비게이터에 안보입니다.
0
356
2





