본문 바로가기

엥엥이의 유용한정보

엥엥이와 함께하는 정보처리기사 #26 [데이터베이스1-25]

안녕하세요~ 오늘은 화요일이네요 ㅎ

아침부터 병원에서 피검사를 받느라 피를 좀 빼서 그런지 정신이 몽롱하네요 ㅎㅎ

이번 포스팅만 빨리 하고 한숨 자던지 해야겠네요 ㅎ


저번시간에 이어서 다양한 예제를 살펴보도록 할께요~!!ㅎ


음~ 만약 올해의선수로 선정된 선수의 이름과 팀명, 평균평점을 검색하라는것이 있으면 어떻게 해야할까요~?


SELECT 이름, 팀, 평균평점

FROM 축구선수

WHERE 이름 IN (SELECT 이름 FROM 올해의선수)


라고 나타내면 되는것이죠 ㅎ

하지만 여기서 알아야할것은 이 문제는 테이블이 하나인 문제는 아니고!! 2개의 테이블을 연결시킨것이에요 ㅎ


무슨말이냐~?

축구선수라는 테이블이 있고~ 올해의선수 테이블이 따로 있는것이죠!!


SELECT 이름 FROM 올해의선수는 올해의선수 테이블에서 이름을 추려서 그 이름이 축구선수 테이블에 있으면 그선수의 이름, 팀, 평균평점을 가져오라는 말이에요 ㅎ


따라서 이 문제는 두개의 테이블에서 연산이 수행되는것이에요 ㅎ


자!! 다음 예제는


책명이 운영체제인 책의 가격을 검색하시오 라는게 있으면 어떻게 해야 할까요~?


SELECT 가격

FROM 도서가격

WHERE 책번호=

(SELECT 책번호 FROM 도서 WHERE 책명='운영체제') 라고 쓸수 있겠지요?ㅎ


여기서 테이블은 도서가격과 도서 두테이블이라고 볼수 있는데요 ㅎ

먼저 도서라는 테이블로 가서 책명이라고 하는 속성에서 운영체제인놈들만 찾아서 그놈들의 책번호를 가져오는것이에요 ㅎ

그 책번호를 가지고 도서가격테이블에서 그번호해당하는 놈의 가격을 출력하는것이에요 ㅎ


다음으로는 축구선수 테이블과 국가대표 테이블의모든 튜플을 중복 없이 하나의 결과로 검색하시오 라는게 있으면


SELECT * FROM 축구선수

UNION

SELECT * FROM 국가대표 라고 하면 되겠지요 ㅎ


여기서 UNION이라는 것은 중복을 허용하지 않는다라는 의미로 두테이블에서 중복된 결과값이 있을때 한번만 보여준다는것이에요 ㅎ

그럼 중복을 허용하는 명령어는 뭐일까요~? 바로 UNION ALL 이라고 쓰면 중복된 데이터를 여러번 가지고 온다는 소리가 되는것이에요 ㅎ


이렇게 SELECT문에 대한걸 마무리 할텐데요 ㅎ


정리를 해보자면 


SELECT 이후에 속성명이 쫘악~ 나오는데 이속성명을 다보여 달라고 할때 * 를 쓰면 되는것이구요 ㅎ

중복된 데이터결과를 다보여달라고 하는것은 생략가능한 ALL 이있고~ 이 반대로 중복을 제거해서 가지고 오라는것이 DISTINCT옵션이에요~

그다음 FROM 테이블명이 나오구요!!

WHERE 이라고 하는 조건이 나오게 되구요~ 이 조건에는 AND, OR, BETWEEN A AND B, LIKE 라는걸 쓸수 있지요 ㅎ

뭔가를 묶어서 가지고 올때 GROUP BY라는걸 쓰게 되구요 ㅎ

GROUP BY의 조건을 쓸때 HAVING이라는걸 쓰면 되는것이에요 ㅎ

HAVING 뒤에 오는 조건에는 COUNT, SUM, AVG, MAX, MIN 이 있구요 ㅎ

그다음으로 정렬해서 보여달라는 ORDER BY라는게 있지요 ㅎ

오름차순은 ASC, 내림차순은 DESC 이라고 말했지요!!ㅎ


SELECT에서는 이정도만 알고 있으면 될것같아요 ㅎ

오늘은 여기까지만 하고~ 내일 또 여러분과 함께 공부해보도록 할께요^^

즐거운 화요일 보내세요 ㅎ