본문 바로가기

엥엥이의 유용한정보

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

안녕하세요~ 벌써 목요일이네요 ㅎㅎ

조금만 있으면 또 주말..ㅎ 주말이 좋긴한데 시간이 왜이렇게 빨리가는지 ㅠ

벌써 11월도 막바지를 향해 달려가고 있군요 ㅎ

2016년 한해 다들 잘 보내셨길 바라며 다가올 2017년도 행복한 한해가 될거라고 믿습니다 ㅎ


자!! 오늘은 전시간에 이어서~ 계속해서 공부해보도록 할께요 ㅎ

예를 들어서 축구선수 테이블에서 슈팅능력이 90인 모든 튜플을 검색하라는게 있다고 하면!!


SELECT * FROM 축구선수 WHERE 슈팅능력='90' 이라고 쓸수 있겠죠!!


위에 명령어를 하나하나 살펴보면 SELECT (가져와라) * (모든속성을) FROM 축구선수 (축구선수 테이블에서) WHERE (어떤조건으로?) 슈팅능력='90' (슈팅능력이 90인것만) 라는 뜻이 되는것이죠 ㅎ

이때 중복된 값이 있어도 그대로 다 가져오는데 그이유는 앞서도 설명했듯이 기본으로 ALL이 적용되어있기 때문이에요 ㅎ

중복된 데이터값은 제거하고 가져오고 싶으면 DISTINCT 옵션을 주면 되는것이죠 ㅎㅎ


다른 예를 한번 살펴볼까요~? 축구선수 테이블에서 슈팅능력이 90이고 국적이 대한민국인 모든 튜플을 검색하라는게 있다면 어떻게 해야 할까요~?


SELECT * FROM 축구선수 WHERE 슈팅능력='90' AND 국적='대한민국' 이렇게 쓰면 되겠지요~?ㅎ

그럼 만약 국적이 대한민국이고 국적이 아르헨티나인 모든 튜플을 검색하라고 하면 어떻게 해야 할까요?


많은 분들이 SELECT * FROM 축구선수 WHERE 국적='대한민국' AND 국적='아르헨티나' 라고 하겠지요?ㅎ

하지만 몇몇분들은 조금이라도 더 편하게 하고 싶다고 SELECT * FROM 축구선수 WHERE 국적='대한민국' AND '아르헨티나' 라고 쓰시는 분들이 계시는데!! 이러면 안되는거 꼭 기억하시구요 ㅎ


무조건 속성='값' AND 속성='값' 의 형태가 되어야 한다는점!! 잊지마세요 ㅎ


자~ 다음은 축구선수 테이블에서 이름이 '손'으로 시작하는 모든 튜플을 검색하라는게 나오면 어떻게 해야할까요ㅎ


SELECT * FROM 축구선수 WHERE 이름 까지는 알겠는데 ㅎㅎ 이름='손' 이라고 하면 손이라고 하는 축구선수를 가지고 오겠죠~?

하지만 손이라는 축구선수는 없기때문에 아무리 검색을 해봐도 0명이나올거에요 ㅎ


이때 사용하는것이 %가 있는데요~ 이것은 LIKE라는 놈과 같이 쓰게 되요 ㅎ 손% 라고 쓰면 뒤에 어떤글자가 오든 손으로 시작하는 모든것을 가지고 오는것이에요!!

뒤에 1자리가 오든 10자리가 오든 100자리가 오든 상관없는것이지요 ㅎ


더 간단히 살펴보면 손, 손가, 손가나다라마바사아자차카타파하 라는 3선수가 있을때

이름='손' 이라고 하면 손!! 1명의 선수가 보여지게되구요 ㅎ

손%라고 하면 손, 손가, 손가나다라마바사아자차카타파하 라는 3명의 선수 모두가 보이게 되는것이지요 ㅎ


가끔 손_ 를 사용하기도 하는데~ 이것은 손뒤에 한자리문자만을 나타내는것이에요 ㅎ

그러니깐 손__ 했을경우 손으로 시작하고 3자를 넘을수 없다라는걸 말하는것이에요 ㅎ


결국 이 예제에서 원하는 답을 추출해내기 위해서는 SELECT * FROM 축구선수 WHERE 이름 LIKE '손%' 라고 쓰면 되는것이지요 ㅎ

잘기억하시구요!!ㅎ


오늘은 하나의 예만 더보고 마무리 할수 있도록 할게요 ㅎ


축구선수 테이블에서 패스능력이 50이상 80이하인 모든 튜플을 검색하라는게 있을수도 있겠지요?ㅎ

이때 사용하는것이 바로 BETWEEN이라는 것인데요 ㅎ

BETWEEN이라는게 뭐뭐 사이 라는 뜻이잖아요~?ㅎ 50과 80사이에 있는것을 찾기 위함이니깐 이걸 사용하면 되는것이지요 ㅎ


따라서 SELECT * FROM 축구선수 WHERE 패스능력 BETWEEN 50 AND 80 이라고 쓰시면 되는것이지요 ㅎ

근데 갑자기 BETWEEN이라는 단어가 생각이 안난다~? 그럼 어떻게 해야할까요?!ㅎ

그럴땐 당황하지 마시고 앞에서 배웠던것을 응용해서


SELECT * FROM 축구선수 WHERE 패스능력>=50 AND 패스능력<=80 이렇게 써도 똑같은 결과값을 가지고 올수 있겠죠~?ㅎ

이렇게 쓸때는 앞서도 강조했듯이 꼭 속성명='값' AND 속성명='값'의 형태가 되어야 한다는점 잊지마세요 ㅎ


오늘은 여기까지 해서 포스팅을 마무리할수 있도록 하고~^^ 저녁이나 내일 다시 보는걸로 해요~

안뇽 ㅎㅎ