<<<127쪽 6번>>>
자격증을 2개이상 가진 사원의 '이름'을 검색하는 SQL
SELECT 이름 FROM 자격증 GROUPBY 이름 HAVING COUNT(*)>=2;
인건 알겠습니다 여기서
SELECT COUNT(*)이름 FROM 자격증 GROUPBY 이름 HAVING COUNT(*)>=2;
이렇게 해버리면 COUNT된 값까지나오는건가요 ?그럼 속성값을 따로 정해줘야하나요 ????????
자격증 갯수 까지 파악하고싶다면 어떻게 해야하는거죠 ?
<<<127쪽 7번 >>>
학생 테이블에서 3학년 학생에 대한 모든 속성을 추출한 <3학년학생>뷰를 정의하는 SQL
( 단, <3학년학생>뷰는 갱신이나 삽입 연산이 수행될때 뷰 정의 조건을 따라야한다)
학생(학번,주민등록번호,이름,학년,전화번호,주소)
저는
CREATE VIEW 3학년학생 AS
SELECT *FROM 학생 ;
이렇게만 했습니다
하지만 답안에는
CREATE VIEW 3학년학생 AS
SELECT *FROM WHERE 학년=3 WITH CHECK OPTION;
이렇게 나와있습니다. WHERE 조건절을 어디서 보고 파악할 수 있는것인가요 ????
( 단, <3학년학생>뷰는 갱신이나 삽입 연산이 수행될때 뷰 정의 조건을 따라야한다) <-이 부분에서 조건을 찾는건가요 ? 찾는다면 어디서 찾을 수 있죠 ?
<<<127쪽 8번 >>>
학과 테이블에 존재하지 않는 학교 테이블의 학교명 과 지역을 검색 하는 SQL 작성
저는 우선
SELECT 학교.학교명,지역 FROM 학교 LEFT OUTER JOIN 학과 ON 학교.학교명=학과=학교명
WHERE 학과명 IS NULL
여기서 이렇게 조건을 주지않고 끝냈습니다. LEFT OUTER JOIN을 하면 왼쪽을 기준으로 왼쪽에만 있는값을 추출하는것이아닌가여 ??
답안에는
SELECT 학교.학교명,지역
FROM 학교 LEFT OUTER JOIN 학과
ON 학교.학교명=학과=학교명
WHERE 학과명 IS NULL;
이렇게 나와있습니다 학과명 IS NULL 이라는말이 지금 여기에서 조건을 오른쪽 테이블에 있는 학과명에 NULL 즉 기입되지 않은 값만을 추출하라고 조건을 붙인건가요 ??
<<<129 10번>>>
강좌 테이블과 교수테이블에서 교수번호가 같은 튜플을 조인하여 강화명,강의실,수강제한인원,교수이름 속성을 갖는 강좌교수 뷰를 정의하는 SQL문 작성
강좌(강좌번호,강좌명,학점,수강인원,강의실,학기,연도,교수번호)
교수(교수번호,주민등록번호,이름,직위,재직년도)
저는
CREATE VIEW 강좌교수 (강좌명,강의실,수강제한인원,교수이름) AS
SELECT 강좌.강좌명, 강좌.강의실, 강좌.수강인원 AS 수강제한인원, 교수.이름 AS 교수이름
FROM 강좌 JOIN 교수
ON 강좌.교수번호=교수.교수번호;
이렇게 했습니다
저렇게 SELECT 할떄 뒤에 AS 별칭을 붙이는것이틀린것인가요?
문제에서 속성명을 줬는데 그 속성명이 각 테이블 속성에는 존재하지않아 이름을 바꿨습니다
하지만 답안에는
CREATE VIEW 강좌교수(강좌명,강의실,수강제한인원,교수이름)AS
SELECT 강좌명,강의실,수강인원,이름
FROM 강좌,교수
WHERE 강좌.교수번호=교수.교수번호;
이렇게나와있습니다
문제에서 JOIN을 하라고했는데 하지않고
문제에서 주어진 속성명이 각테이블에는 존재하지않는데 그냥 저렇게 비슷하다고 SELECT 해서 검색
해도되는것인가요 ????
ㅜㅜㅜㅜㅜㅜㅜ
질문이 너무많고 복잡하지만
설명부탁드리겠습니다
안녕하세요.
1)
SELECT 이름, count(*) as 개수
FROM 자격증
GROUP BY 이름
HAVING COUNT(*) >= 2;
와 같이 작성하면
이름 개수
김선달 2
와 같이 추출됩니다.
2)
3학년 학생에 대한 모든 속성이므로
학년이 3이라는 단서를 유추할 수 있으며
제시된 스키마에서 학년이란 필드를 확인하여
조건으로 Where 학년 = 3으로 지정한 것입니다.
또한 뷰는 갱신이나 삽입 연산이 수행될 때 뷰의 정의 조건을 따라야 한다는 조건 때문에
With Check Option도 기술한 것입니다.1
3)
학교명이 같은 것끼리 서로 연결한 것으로
학교명이 같지 않은 학과 테이블의 필드는 공백으로 표시됩니다.
그러므로 <학과> 테이블의
학과명 is null
정원 is null
학교명 is null
과 같이 어느 필드를 대상으로 is null을 해도 동일한 결과가 산출됩니다.
4)
View 문에 기술한 속성명으로 속성명이 만들어집니다.
CREATE VIEW 강좌교수(강좌명, 강의실, 수강제한인원, 교수이름)
과 같이 기술하면 필드명이 적은데로 생성됩니다.
이에 대응되는 실제 테이블의 필드는 AS 문 이후 SELECT 뒤에 기술합니다.
뷰 생성 시 조인(연결)은 SELECT의 WHERE 문을 이용해
WHERE 강좌.교수번호 = 교수.교수번호;
와 같이 수행할 수 있습니다.
오늘도 즐거운 하루 되세요.
-
*2018-03-26 10:35:59
안녕하세요.
1)
SELECT 이름, count(*) as 개수
FROM 자격증
GROUP BY 이름
HAVING COUNT(*) >= 2;와 같이 작성하면
이름 개수
김선달 2와 같이 추출됩니다.
2)
3학년 학생에 대한 모든 속성이므로
학년이 3이라는 단서를 유추할 수 있으며
제시된 스키마에서 학년이란 필드를 확인하여
조건으로 Where 학년 = 3으로 지정한 것입니다.또한 뷰는 갱신이나 삽입 연산이 수행될 때 뷰의 정의 조건을 따라야 한다는 조건 때문에
With Check Option도 기술한 것입니다.13)
학교명이 같은 것끼리 서로 연결한 것으로
학교명이 같지 않은 학과 테이블의 필드는 공백으로 표시됩니다.그러므로 <학과> 테이블의
학과명 is null
정원 is null
학교명 is null
과 같이 어느 필드를 대상으로 is null을 해도 동일한 결과가 산출됩니다.4)
View 문에 기술한 속성명으로 속성명이 만들어집니다.
CREATE VIEW 강좌교수(강좌명, 강의실, 수강제한인원, 교수이름)
과 같이 기술하면 필드명이 적은데로 생성됩니다.
이에 대응되는 실제 테이블의 필드는 AS 문 이후 SELECT 뒤에 기술합니다.뷰 생성 시 조인(연결)은 SELECT의 WHERE 문을 이용해
WHERE 강좌.교수번호 = 교수.교수번호;
와 같이 수행할 수 있습니다.오늘도 즐거운 하루 되세요.