P35 하위질의에서
1) SELECT * FROM 사원 WHERE 이름 NOT IN(SELECT 이름 FROM 여가활동);을
SELECT * FROM 사원 WHERE 이름 <>(SELECT 이름 FROM 여가활동);이렇게 바꿔도 되나요??
P36복수 테이블 검색에서
2) SELECT 사원.이름, 사원.부서,여가활동.취미, 여가활동.경력 FROM 여가활동, 취미 WHERE 이름=(SELECT 이름 FROM 여가활동 WHERE 경력>=10);이렇게 바꿔도 되나요?
그리고 교재에서는
3) SELECT 사원.이름, 사원.부서,여가활동.취미, 여가활동.경력 FROM 여가활동, 취미 WHERE 여가활동.경력>=10AND사원.이름=여가활동.이름 ;이렇게 나와있던데
여가활동 이름은 사원 이름을 참조하고 있으니까
사원.이름=여가활동.이름 -->이부분은 없어도 되는 거 아닌가요??
p40 8번문제
4) 정답에서 FROM절의 신청정보는 빠져도 되지 않나요??
P47
5) 예제 3번문제에서
GROUP BY 부서 HAVING COUNT(*)>=2AND 상여금>=100;
으로는 못 바꾸나요??
P52
6) 정답에서
-HAVING 전공='컴퓨터공학'AND 신청과목='JAVA'and 학생정보.학번=신청정보.학번이나
-where 전공='컴퓨터공학'AND 신청과목='JAVA'and 학생정보.학번=신청정보.학번이나
이렇게 바꾸면 안되나요??
한마디로 having 절에 그룹함수를 쓰지 않는 다면 where절에서도 사용할 수 있고 where절꺼도 having절에서 사용할수 있나요??
7) P35 예제 1번
SELECT 이름,주소
FROM 사원
WHERE 여가활동.이름=사원.이름 AND 여가활동.취미=나이트 덴스;
이렇게 바꿔도 되나요??
8)P59
예제 2번을 보면
학생.성적 성적등급.최저 이런식으로 되어있는 데
중복되는 속성이 아니니까
WHERE 성적 BETWEEN 최저 AND 최고
이렇게 해도 되는 건가요??
9) create domain 테이블 명 데이터 타입
constraint 제약조건 명 check(value>=30);
이런식으로 교재에는 되어있던 데
도메인 만들 때는 꼭 values라는 말을 써야 하나요??
아니면 그냥 check(age>=30)이런식으로는 안되나요??
안녕하세요 길벗수험서 운영팀입니다.
[1]
하위 질의의 결과가 단일값이므로 사용 가능합니다.
[2] [3]
먼저, 하위 질의의 결과가 2개 이상이므로 = 대신 IN을 사용해야 합니다.
from으로 2개 이상의 테이블을 호출하게 되면 JOIN을 수행해줘야 합니다.
123섹션에서 학습하신 것과 같이 두 테이블을 연결시켜주지 않으면 카티션곱을 수행한 것에서 조건만 적용된 결과가 출력되므로 정답과 완전히 달라집니다.
때문에 반드시 사원.이름=여가활동.이름 이 AND로 연결되어야 합니다.
[4]
문제를 확인해보시면 3개의 테이블인 조인된 상태에서 조건을 적용한 결과를 출력하기를 요구하고 있습니다.
만약 하나의 조인이 빠지는 경우 필요 이상의 결과가 나타날 수 있습니다.
또한 결과가 같더라도 문제에서 제시한 조건을 모두 SQL문으로 작성하지 않으면 점수를 받지 못하는 경우도 있으니 주의하세요.
[5] [6]
having은 그룹함수와 함께 그룹에 조건을
where는 모든 튜플에 조건을 건다고 기억해두세요.
조건 적용 순서도 where -> having 이기 때문에 결과가 달라집니다.
[7]
조인으로 만드시려면 다음과 같이 작성하셔야 합니다.
select 사원.이름, 주소
from 사원, 여가활동
where 사원.이름=여가활동.이름 and 취미='나이트댄스';
조인되는 테이블은 모두 from으로 호출되어야 하며, 이 때 중복되는 속성은 반드시 테이블명을 적어줘야 합니다.
[8]
예, 그와 같이 적어도 아무 문제 없습니다.
말씀처럼 중복되는 경우에만 테이블명이 필수이고, 그 외에는 적어도 안적어도 무관합니다.
[9]
도메인 생성문은 이후에 속성에 적용될 일종의 제약조건입니다.
즉 도메인 자체는 속성이 아니기 때문에 일반적인 check 문법인 'check(속성명 in( ...'이나 'check (속성='값')' 과 같은 방식에서 [속성]이 value로 대체되는 것입니다.
행복한 하루되세요 :)
-
관리자2022-04-20 23:43:06
안녕하세요 길벗수험서 운영팀입니다.
[1]
하위 질의의 결과가 단일값이므로 사용 가능합니다.
[2] [3]
먼저, 하위 질의의 결과가 2개 이상이므로 = 대신 IN을 사용해야 합니다.
from으로 2개 이상의 테이블을 호출하게 되면 JOIN을 수행해줘야 합니다.
123섹션에서 학습하신 것과 같이 두 테이블을 연결시켜주지 않으면 카티션곱을 수행한 것에서 조건만 적용된 결과가 출력되므로 정답과 완전히 달라집니다.
때문에 반드시 사원.이름=여가활동.이름 이 AND로 연결되어야 합니다.
[4]
문제를 확인해보시면 3개의 테이블인 조인된 상태에서 조건을 적용한 결과를 출력하기를 요구하고 있습니다.
만약 하나의 조인이 빠지는 경우 필요 이상의 결과가 나타날 수 있습니다.
또한 결과가 같더라도 문제에서 제시한 조건을 모두 SQL문으로 작성하지 않으면 점수를 받지 못하는 경우도 있으니 주의하세요.
[5] [6]
having은 그룹함수와 함께 그룹에 조건을
where는 모든 튜플에 조건을 건다고 기억해두세요.
조건 적용 순서도 where -> having 이기 때문에 결과가 달라집니다.
[7]
조인으로 만드시려면 다음과 같이 작성하셔야 합니다.
select 사원.이름, 주소
from 사원, 여가활동
where 사원.이름=여가활동.이름 and 취미='나이트댄스';
조인되는 테이블은 모두 from으로 호출되어야 하며, 이 때 중복되는 속성은 반드시 테이블명을 적어줘야 합니다.
[8]
예, 그와 같이 적어도 아무 문제 없습니다.
말씀처럼 중복되는 경우에만 테이블명이 필수이고, 그 외에는 적어도 안적어도 무관합니다.
[9]
도메인 생성문은 이후에 속성에 적용될 일종의 제약조건입니다.
즉 도메인 자체는 속성이 아니기 때문에 일반적인 check 문법인 'check(속성명 in( ...'이나 'check (속성='값')' 과 같은 방식에서 [속성]이 value로 대체되는 것입니다.
행복한 하루되세요 :)
-
관리자2022-04-28 09:39:20
-
*2022-04-27 11:00:12