오늘은 https://docs.oracle.com/cd/E17781_01/appdev.112/e18147/tdddg_connecting.htm#TDDDG22000 을 참조하여
기본적인 SQL SELECT 문법을 배워봤다.
연습해본 예제의 코드이다 !
--EXERCISE--
--1. 학생테이블의 구조를 검색하시요
DESC STUDENT;
--2. 과목테이블의 구조를 검색하시요
DESC SUBJECT;
--3. 학생테이블의 모든 데이터를 검색하시요
SELECT * FROM STUDENT;
--4. 수강테이블의 모든 데이터를 검색하시요
SELECT * FROM SUBJECT;
--5. 학생들의 학번과 이름을 검색하시요
SELECT STU_NO, STU_NAME FROM STUDENT;
--6. 과목들의 과목번호와 과목이름을 검색하시요
SELECT SUB_NO, SUB_NAME FROM SUBJECT;
--7. 학생들의 학번, 이름, 성별을 검색하시요
SELECT STU_NO, STU_NAME, STU_GENDER FROM STUDENT,SUBJECT;
--8. 학생들의 모든 정보를 검색하시요
SELECT * FROM STUDENT;
--9. 학생들의 학번, 이름, 학년, 반을 검색하시요
SELECT STU_NO, STU_NAME, STU_GRADE, STU_CLASS FROM STUDENT;
--10. 과목들의 과목이름과 교수이름을 검색하시요
SELECT SUB_NAME, SUB_PROF FROM SUBJECT;
--11. 과목번호, 학번, 점수를 검색
SELECT SUB_NO, STU_NO, STU_GRADE FROM STUDENT, SUBJECT;
--12. 학생들의 체중, 신장, 학번, 이름을 검색
SELECT STU_WEIGHT, STU_HEIGHT, STU_NO, STU_NAME FROM STUDENT, SUBJECT;
--13. 학생들의 학과중복을 제거하고 검색 (distinct)
SELECT DISTINCT STU_DEPT FROM STUDENT;
--14. 학생들의 성별중복을 제거하고 검색
SELECT DISTINCT STU_GENDER FROM STUDENT;
--15. 학생들의 학년중복을 제거하고 검색
SELECT DISTINCT STU_GRADE FROM STUDENT;
--16. 학생들의 학과, 학년 중복을 제거하고 검색
SELECT DISTINCT STU_DEPT, STU_GRADE FROM STUDENT;
--17. 학생들의 학과, 반 중복을 제거하고 검색
SELECT DISTINCT STU_DEPT, STU_CLASS FROM STUDENT;
--20. 학생들의 학번, 이름에 별칭 ‘학번’과 ‘이름’을 부여하고 검색
SELECT STU_NO "학번", STU_NAME "이름" FROM STUDENT;
--21. 수강테이블의 모든 정보를 검색. 별칭을 한글로 부여하기
SELECT * FROM ENROL "수강";
--25. 컴퓨터정보학과 학생들을 검색
SELECT STU_NAME, STU_DEPT FROM STUDENT WHERE STU_DEPT LIKE '%정보%';
--26. 기계과 학생들을 검색
SELECT STU_NAME, STU_DEPT FROM STUDENT WHERE STU_DEPT LIKE '%기계%';
--27. 전기전자과 학생들을 검색
SELECT STU_NAME, STU_DEPT FROM STUDENT WHERE STU_DEPT LIKE '%전자%';
--28. 신장이 170이상인 학생들을 검색
SELECT STU_NAME, STU_HEIGHT FROM STUDENT WHERE (STU_HEIGHT >= 170);
--29. 체중이 65이하인 학생들을 검색
SELECT STU_NAME, STU_WEIGHT FROM STUDENT WHERE (STU_WEIGHT <= 65);
--30. 기계과 학생들의 학번, 이름 검색
SELECT STU_NO, STU_NAME, STU_DEPT FROM STUDENT WHERE STU_DEPT LIKE '%기계%';
--31. 컴퓨터정보학과 학생들의 학번, 이름검색
SELECT STU_NO, STU_NAME, STU_DEPT FROM STUDENT WHERE STU_DEPT LIKE '%정보%';
--32. 전기전자과 학생들의 학번, 이름 검색
SELECT STU_NO, STU_NAME, STU_DEPT FROM STUDENT WHERE STU_DEPT LIKE '%전자%';
33. 남학생들의 이름 검색
SELECT STU_NAME FROM STUDENT WHERE STU_GENDER LIKE 'M';
34. 여학생들의 이름 검색
SELECT STU_NAME FROM STUDENT WHERE STU_GENDER LIKE 'F';
35. 전기전자과 이외 학생들의 모든 정보 검색
SELECT * FROM STUDENT WHERE STU_DEPT NOT LIKE '%전자%';
36. 기계과 이외 학생들의 모든 정보 검색
SELECT * FROM STUDENT WHERE STU_DEPT NOT LIKE '%기계%';
37. 점수가 80점 이상인 학생들의 학번 검색
SELECT STU_NO FROM ENROL WHERE (ENR_GRADE >=80);
38. ‘김인중‘ 학생의 모든 정보 검색
SELECT * FROM STUDENT WHERE STU_NAME LIKE '%김인중%';
39. ‘컴퓨터정보’과 학생중 1학년 학생 검색
SELECT STU_GRADE, STU_NAME FROM STUDENT WHERE STU_GRADE LIKE '%1%';
40. ‘기계'과 이면서 2학년 학생들의 모든 정보 검색
SELECT * FROM STUDENT WHERE STU_GRADE LIKE '%2%' and '%기계%';
45. 신장 160이상이며, 170이하인 학생들 학번과 이름검색
SELECT STU_NAME, STU_NO, STU_HEIGHT FROM STUDENT WHERE (STU_HEIGHT >= 160) AND (STU_HEIGHT <=170);
SELECT STU_NAME, STU_NO, STU_HEIGHT FROM STUDENT WHERE (160<=STU_HEIGHT) AND (STU_HEIGHT <=170);
SELECT STU_NAME, STU_NO, STU_HEIGHT FROM STUDENT WHERE STU_HEIGHT BETWEEN '160' AND '170';
46. 2013학번인 학생의 학번, 이름, 학과 검색
SELECT STU_NO, STU_NAME, STU_DEPT FROM STUDENT WHERE STU_NO LIKE '%2013%';
48. 김씨성을 가진 학생들의 학번과 이름 검색
SELECT STU_NO, STU_NAME FROM STUDENT WHERE STU_NAME LIKE '%김%';
49. 학번이 xxxx20xx인 학생들의 모든 정보 검색
SELECT * FROM STUDENT WHERE STU_NO LIKE '____20%';
DESC STUDENT;
51. 이름에 옥'이 들어있는 학생이름 검색
SELECT STU_NAME FROM STUDENT WHERE STU_NAME LIKE '%옥%';
52. 신장이 null인 학생이름 검색
SELECT STU_NAME FROM STUDENT WHERE STU_HEIGHT IS NULL;
53. 신장이 null이 아닌 학생들의 학번, 이름 검색
SELECT STU_NO, STU_NAME FROM STUDENT WHERE STU_HEIGHT IS NOT NULL;
54. 컴퓨터정보 또는 기계과인 학생들의 학번, 이름 검색
SELECT STU_NO ,STU_NAME, STU_DEPT FROM STUDENT WHERE STU_DEPT IN ('컴퓨터정보', '기계');
SELECT STU_NO ,STU_NAME, STU_DEPT FROM STUDENT WHERE (STU_DEPT = '컴퓨터정보') OR (STU_DEPT = '기계');
56. 학번, 이름을 학번순으로 검색
SELECT STU_NO, STU_NAME FROM STUDENT ORDER BY STU_NO;
59. 학과별 학년이 높은 순으로 학생들의 정보를 검색
SELECT * FROM STUDENT ORDER BY STU_DEPT, STU_GRADE DESC;
이렇게 예제풀이를 해봤다!
몇가지만 직접 오라클과 CMD에서 어떤 모습인지 리뷰해 보겠다.
59번. 학과별 학년이 높은 순으로 학생들의 정보를 검색
SELECT * FROM STUDENT ORDER BY STU_DEPT, STU_GRADE DESC;
여기서 핵심은 ORDER BY (정렬) 과 DESC (내림차순) 으로 데이터를 조회하는 부분이다.
오름차순으로 하고싶으면 DESC를 빼면 됨 따로 INCREMENT를 하지 않아도 됨.
54번. 컴퓨터정보 또는 기계과인 학생들의 학번, 이름 검색
SELECT STU_NO ,STU_NAME, STU_DEPT FROM STUDENT WHERE STU_DEPT IN ('컴퓨터정보', '기계');
SELECT STU_NO ,STU_NAME, STU_DEPT FROM STUDENT WHERE (STU_DEPT = '컴퓨터정보') OR (STU_DEPT = '기계');
여기서 핵심은 WHERE 로 제한적인 정보를 집약적으로 조회 할 수 있다는 점과
같은 결과 값을 조금은 다른 모습을 한 쿼리로 조회 가능하다
49번. 학번이 XXXX20XX인 학생들의 모든 정보 검색
SELECT * FROM STUDENT WHERE STU_NO LIKE '____20%';
(여기서 _ 이게 4개임) 뒤에 값은 % 표시로 마무리
SQL 오라클에서는 빈 공백을 나타낼때 _ 로 표시함.
45번. 신장 160이상이며, 170이하인 학생들 학번과 이름검색
SELECT STU_NAME, STU_NO, STU_HEIGHT FROM STUDENT WHERE (STU_HEIGHT >= 160) AND (STU_HEIGHT <=170);
SELECT STU_NAME, STU_NO, STU_HEIGHT FROM STUDENT WHERE (160<=STU_HEIGHT) AND (STU_HEIGHT <=170);
SELECT STU_NAME, STU_NO, STU_HEIGHT FROM STUDENT WHERE STU_HEIGHT BETWEEN '160' AND '170';
비교연산자를 오라클에서 표시할때 이런식으로 표시함
산술연산자와 AND 를 사용하여 표현 가능하고
BETWEEN 문법을 사용해서도 결과값 도출이 가능하다.
이외에도 DISTINCT, LIKE, NOT LIKE, NULL, IS NOT NULL 등 여러가지 표현법을 배워보는 시간이였다.
수고수고!
'Oracle' 카테고리의 다른 글
[Oracle] 테이블에 데이터 Import 후 원하는 정보 추출해보기.(group by) (0) | 2022.10.19 |
---|---|
[Oracle] SELECT문을 이용한 응용연습 해보기 (0) | 2022.10.18 |
[Oracle] 테이블 생성 후 DATA 자료 INSERT 하기 (0) | 2022.10.18 |
[Oracle] 오라클 새로운 계정 만들기/ 만든 후 새로운 데이터베이스 연습 (0) | 2022.10.17 |
[Oracle] 오라클 Hr 기본사용자 언락 후 base query 이용해보기 (0) | 2022.10.17 |
댓글