책 내용 질문하기
in 연산자와 like 연산자, SQL명령문에서 *의 의미
도서
[2014] SUMMARY 컴퓨터활용능력 1급 필기
페이지
189
조회수
124
작성일
2014-08-20
작성자
첨부파일

189페이지 6번문제

사원(사번, 성명, 거주지, 기본급, 부서명) 테이블에서 거주지가 '서울'이나 '인천'이 아닌 사원중에 기본급의 최대값을 구하는 SQL 명령을 구하세요.

정답은 select max(기본급) as [최대값] from 사원 where 거주지 not in ("서울","인천") 이였는데요

where절을 where 거주지 not like "서울" or 거주지 not like "인천" 으로 바꾸면 안되나요?

like는 대표문자를 이용할때만 사용하는 연산자인가요?

그리고 189페이지 8번문제

학생 테이블의 '학번'필드에 중복된 값이 있어 기본키로 설정할 수 없다는 메시지가 나타났다. group by절을 이용하여 학번이 중복된 학생의 정보를 찾는 하위 질의문을 완성하시오.

정답이 select * from 학생 where 학번 in (select 학번 from 학생 group by 학번 having count(*)>1) 인데

*의 의미가 전체 필드를 의미한다고 강의에서 설명하신것같은데 그럼 위 명령문에서 두개의 *가 의미하는 필드가 같은필드인가요?

그리고 위에 명령문이 정확히 이해가 안되는데 다시 한번 제대로 설명해주시면 감사하겠습니다! (하위질의 명령문이요ㅠㅠ)

답변
2014-08-22 09:43:43

안녕하세요.

1. where절을 where 거주지 not like "서울" AND 거주지 not like "인천"으로 작성해야 합니다. 거주지가 서울이 아닌 것에 인천이 포함되고, 인천이 아닌 것에 서울이 포함되므로 두 조건은 OR가 아니라 AND로 연결해야 합니다.

2. select * from 학생 : 여기에서 *는 모든 필드, 즉 학생 테이블에 있는 모든 필드를 의미합니다.

count(*) : 여기서는 모든 레코드를 의미합니다. 즉 전체 레코드의 개수를 구합니다.

교재에 있는 설명은 저희는 최대한 이해하기 쉽도록 설명한다고 한 것입니다. 그런데 단순히 이해가 안된다고 설명을 해달라고 하시면 교재에 있는 설명을 다시 쓰는 것밖에는 되지 않습니다. 교재에 있는 설명을 여러번 다시 읽어보시고, 이해가 안되는 부분을 콕 찍어서 질문해 주세요. 그 부분 집중적으로 설명해 드리도록 하겠습니다.

즐거운 하루 되세요.

"
  • *
    2014-08-22 09:43:43

    안녕하세요.

    1. where절을 where 거주지 not like "서울" AND 거주지 not like "인천"으로 작성해야 합니다. 거주지가 서울이 아닌 것에 인천이 포함되고, 인천이 아닌 것에 서울이 포함되므로 두 조건은 OR가 아니라 AND로 연결해야 합니다.

    2. select * from 학생 : 여기에서 *는 모든 필드, 즉 학생 테이블에 있는 모든 필드를 의미합니다.

    count(*) : 여기서는 모든 레코드를 의미합니다. 즉 전체 레코드의 개수를 구합니다.

    교재에 있는 설명은 저희는 최대한 이해하기 쉽도록 설명한다고 한 것입니다. 그런데 단순히 이해가 안된다고 설명을 해달라고 하시면 교재에 있는 설명을 다시 쓰는 것밖에는 되지 않습니다. 교재에 있는 설명을 여러번 다시 읽어보시고, 이해가 안되는 부분을 콕 찍어서 질문해 주세요. 그 부분 집중적으로 설명해 드리도록 하겠습니다.

    즐거운 하루 되세요.

    "
· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.