데이터베이스를 효율적으로 다루기 위해서는 SQL문의 이해와 활용이 필수입니다! 그 중에서도 SELECT 문은 데이터를 조회하고 원하는 정보를 가져오는 데에 사용되며, 데이터베이스의 가장 기본적인 기능 중 하나입니다. 이번 포스팅에서는 프로그래머스 SQL 고득점 Kit
문제와 함께 SELECT 문에 대해 자세히 알아보고자 합니다.
진행에 앞서 SELECT 문의 가장 기본이 되는 형식입니다. 잘 기억 해주세요 :)
SELECT [열] FROM [테이블] WHERE [조건]
FOOD_FACTORY
테이블에서 강원도에 위치한 식품공장의 공장 ID, 공장 이름, 주소를 조회하는 SQL문을 작성해주세요. 이때 결과는 공장 ID를 기준으로 오름차순 정렬해주세요.*
우선 가장 기본이 되는 명령어 부터 입력 해볼까요?
SELECT * FROM FOOD_FACTORY
참고로 *은 모든 것 을 의미합니다. 여기서는 [열] 에 해당하는 위치에 *이 있으니 모든 열을 다 출력하라는 의미가 되겠네요! 다시 말해 위 명령문은 “FOOD_FACTORY
테이블에 있는 모든 열을 선택해줘~” 라는 의미가 됩니다.
FACTORY_ID FACTORY_NAME ADDRESS TLNO
FT19980001 (주)맛있는라면 경기도 동두천시 강변로850번길 120 031-231-1032
FT19980002 (주)맛있는기름 충청북도 음성군 생극면 음성로 1506-275 043-641-9900
FT19980003 (주)맛있는라면 강원도 정선군 남면 칠현로 679 033-431-3122
FT19980004 (주)맛있는기름 경기도 평택시 포승읍 포승공단순환로 245 031-651-2410
FT20000001 (주)맛있는소스 경기도 안양시 동안구 흥안대로 405 031-221-7211
FT20000002 (주)맛있는통조림 경기도 파주시 파주읍 파발로 65 031-641-1900
FT20010001 (주)맛있는소스 경상북도 구미시 1공단로7길 58-11 054-231-2121
FT20010002 (주)맛있는통조림 전라남도 영암군 미암면 곤미현로 1336 061-341-5210
FT20020001 (주)맛있는차 충청남도 논산시 은진면 관촉로58번길 138 041-241-1420
FT20020002 (주)맛있는김치 경기도 평택시 포승읍 포승공단로 2 031-541-5400
FT20040001 (주)맛있는음료 경기도 평택시 안중읍 서해로 1427 031-722-2430
FT20040002 (주)맛있는국 경상남도 거제시 사등면 거제대로 5382 055-351-1240
FT20070001 (주)맛있는라면 경상북도 경산시 하양읍 대경로 541 054-423-3122
FT20070002 (주)맛있는기름 대전광역시 대덕구 신일서로67번길 57 042-121-2410
FT20070009 (주)맛있는소스 부산광역시 영도구 봉래길 113 051-551-7721
FT20080002 (주)맛있는통조림 부산광역시 사하구 다대로170번길 051-841-5810
FT20080003 (주)맛있는차 전라남도 무안군 삼향읍 왕산로 91 061-221-9920
FT20090001 (주)맛있는밥 경기도 안성시 공단2로 29 031-761-1359
FT20090002 (주)맛있는과자 부산광역시 강서구 녹산산단261로73번길 48 051-821-4259
FT20100001 (주)맛있는차 전라남도 장성군 서삼면 장산리 233-1번지 061-661-1420
FT20100002 (주)맛있는김치 충청남도 아산시 탕정면 탕정면로 485 041-241-5421
FT20100003 (주)맛있는음료 강원도 원주시 문막읍 문막공단길 154 033-232-7630
FT20100004 (주)맛있는국 강원도 평창군 봉평면 진조길 227-35 033-323-6640
FT20110001 (주)맛있는밥 경기도 화성시 팔탄면 가재리 34번지 031-661-1532
FT20110002 (주)맛있는과자 광주광역시 북구 하서로 222 062-211-7759
FT20150004 (주)맛있는김치 전라북도 익산시 석암로7길 31-17 063-981-5421
FT20150005 (주)맛있는음료 전라북도 익산시 석암로11길 99 063-932-1672
FT20160005 (주)맛있는국 전라남도 광양시 옥곡면 신금산단1길 4 061-923-6940
FT20180005 (주)맛있는밥 충청남도 천안시 서북구 성거읍 천흥8길 67 041-861-1432
FT20200005 (주)맛있는과자 충청북도 청주시 흥덕구 공단로 48 043-911-5759
그렇다면 강원도에 위치한 식품공장은 어떻게 출력할까요? 바로 WHERE 뒤 [조건]을 이용해야 합니다.
SELECT * from FOOD_FACTORY WHERE ADDRESS LIKE '%강원도%’
LIKE
연산자는 문자열의 패턴을 검색하는데 사용됩니다. 또한 여기서 사용한 %
는 모든 문자를 의미하는데요 예를 들어 %강원도
라면 어떤 문자가 오던지 끝이 강원도로 끝나야 하고, 강원도%
라면 어떤 문자가 오던지 시작이 강원도여야 합니다.
따라서 %강원도%
는 문자열에 강원도라는 단어가 포함되어 있다면 다 조건에 부합하다고 생각하면 됩니다.
다음 명령어를 사용하면 출력결과는 다음과 같습니다.
FT19980003 (주)맛있는라면 강원도 정선군 남면 칠현로 679 033-431-3122
FT20100003 (주)맛있는음료 강원도 원주시 문막읍 문막공단길 154 033-232-7630
FT20100004 (주)맛있는국 강원도 평창군 봉평면 진조길 227-35 033-323-6640
문제에서는 강원도 말고도 다른 조건이 있는데요, 바로 공장 ID, 공장 이름, 주소만 조회하며, ID를 기준으로 오름차순 정렬을 해야합니다.
이제는 * 을 건드려줄 차례인데요, SELECT [열] 에 해당하는 자리에 * (모든 것) 을 넣는게 아니라 조회하고 싶은 열만 추가해주어야 합니다. 추가적으로 정렬은 ORDER BY [열][ASC|DESC] 로 해결할 수 있습니다.
최종 명령어는 다음과 같습니다.
SELECT FACTORY_ID, FACTORY_NAME, ADDRESS FROM FOOD_FACTORY WHERE ADDRESS LIKE '%강원도%' ORDER BY FACTORY_ID ASC;
그러면 다음과 같은 출력 결과가 생성됩니다.
많은 도움이 되었습니다, 감사합니다.