728x90
반응형

<오늘의 학습-데이터 관리>

1. 오라클 데이터베이스 설치

2. CREATE TABLE

3. INSERT

4. SELECT

5. UPDATE

6. DELETE

7. COMMIT과 ROLLBACK

8. 조건 연산자

9. 함수

 

 

9. 함수

 

1) MIN(속성명) : 최솟값을 구하는 함수

 

▶ 성별 가장 작은 학생의 키 값 구하기

SELECT MIN(STU_HEIGHT)
FROM STUDENT;

 

 

 


2) MAX(속성명) : 최댓값을 구하는 함수

 

▶ 성별 별 가장 키가 큰 값을 출력하시오.

SELECT STU_GENDER, MAX(STU_HEIGHT)
FROM STUDENT
GROUP BY STU_GENDER;

 

 


▶ 컴퓨터정보과 학생 중 가장 키가 큰 학생보다 큰 키를 가진 학생들을 구하시오.

▷ 컴퓨터정보과 학생 중 가장 키가 큰 학생 출력

SELECT MAX(STU_HEIGHT)
FROM STUDENT
WHERE STU_DEPT='컴퓨터정보';

 

▷ 컴퓨터정보과 학생 중 가장 키가 큰 학생보다 큰 키를 가진 학생 출력

SELECT STU_NAME, STU_HEIGHT
FROM STUDENT
WHERE STU_HEIGHT>(SELECT MAX(STU_HEIGHT)
                    FROM STUDENT
                    WHERE STU_DEPT='컴퓨터정보');

 

 


▶각 학과의 가장 키가 큰 학생의 학번, 이름, 키 출력

 각 학과에서 가장 키가 큰 학생의 키 출력

SELECT MAX(STU_HEIGHT)
FROM STUDENT
GROUP BY STU_DEPT;

 

 각 학과에서 가장 키가 큰 학생의 키를 가진 학생 출력

SELECT STU_NO, STU_NAME, STU_HEIGHT
FROM STUDENT
WHERE STU_HEIGHT IN
    (SELECT MAX(STU_HEIGHT)
    FROM STUDENT
    GROUP BY STU_DEPT
);

※ 받아온 키의 값이 어떤 학과의 키 값인지 알 수 없기 때문에 반환된 키의 값과 같은 값이 있다면 출력한다.

 

 

 WHERE 절과 두 번째 SELECT 절에서 2개의 값을 매치한다.

SELECT STU_NO, STU_NAME, STU_HEIGHT
FROM STUDENT
WHERE (STU_DEPT, STU_HEIGHT) IN
    (SELECT STU_DEPT, MAX(STU_HEIGHT)
    FROM STUDENT
    GROUP BY STU_DEPT
);
  • IN을 이용해 매치된 반환을 받는다. 한 쌍임을 알리기 위해 속성을 괄호 안에 함께 넣는다.

 

※ 다른과에서 키가 175인 사람이 출력되지 않았다.

 

 

 


3) AVG(속성명) : 그룹별 평균을 구하는 함수

▶ 학과별 평균 몸무게를 구하시오.

SELECT STU_DEPT, AVG(STU_WEIGHT)
FROM STUDENT
GROUP BY STU_DEPT;

 

 


 학과별 평균 키 값을 구하시오.

SELECT STU_GRADE, AVG(STU_HEIGHT)
FROM STUDENT
GROUP BY STU_GRADE;

 

 


 각 성별별 평균 키 값 구하기

SELECT STU_GENDER, AVG(STU_HEIGHT)
FROM STUDENT
GROUP BY STU_GENDER;

 

 


▶ 기계과 학생들의 평균 키보다 큰 학생을 구하시오.

▷ 기계과 학생들의 평균 키 출력

SELECT AVG(STU_HEIGHT)
FROM STUDENT
WHERE STU_DEPT= '기계';

 

 기계과 학생들의 평균 키보다 큰 학생의 이름과 키를 출력

SELECT STU_NAME, STU_HEIGHT
FROM STUDENT
WHERE STU_HEIGHT > (SELECT AVG(STU_HEIGHT)
                    FROM STUDENT
                    WHERE STU_DEPT= '기계');

 

 

 


4) SUM() : 합계

SELECT STU_NO, SUM(ENR_GRADE)
FROM ENROL
GROUP BY STU_NO;

  • 학번별 ENR_GRADE의 합이 출력되었다.

 

 

 


5) ABS() : 절댓값

SELECT -10, ABS(-10)
FROM DUAL;

  • ABS(-10)의 결과로 10의 절댓값인 10이 출력되었다.

 

 

 


6) ROUND() :  반올림해주는 함수

  • ROUND(반올림할 값, 위치 값)

 


▷ 소수점 첫 번째 자리까지 반올림하여 출력

SELECT STU_DEPT, ROUND(AVG(STU_WEIGHT),1) --ROUND 반올림해주는 함수
FROM STUDENT
GROUP BY STU_DEPT;

 


▷ 위치가 0일 때의 출력

SELECT 111.222, ROUND(111.222)
FROM DUAL;

 

▷ 위치 값을 음수로 지정하면 소수점 앞의 자리 값을 반올림한다.

SELECT 111.222, ROUND(118.222, -1)
FROM DUAL;

 

 

 


7) FLOOR() : 내림(버림).: 소수점을 버린다.

SELECT 111.222, FLOOR(118.222)
FROM DUAL;

 

 

 


8) CEIL() : 올림. 소수점을 올린다.

SELECT 111.222, CEIL(118.222)
FROM DUAL;

 

 

 


9) TRUNC() :  소수점 자르기

SELECT TRUNC(111.222, 1), TRUNC(111.222, -1), TRUNC(111.222)
FROM DUAL;

 

 

 


10)  SIGN() : 양수와 음수를 나타낸다.

SELECT SIGN(10), SIGN(-3), SIGN(0), SIGN(NULL), SIGN(100), SIGN(-100)
FROM DUAL;

 

 

 

 

 

다음 학습

 

[SQL] SQL 함수 (2/2) (19일차)

 

deliciouscode.tistory.com

 

728x90
반응형

'HRD_훈련 > ORACLE SQL' 카테고리의 다른 글

[SQL] 시간 함수 (21일차)  (0) 2023.06.14
[SQL] SELF, OUTER JOIN (21일차)  (0) 2023.06.14
[SQL] INNER JOIN (20일차)  (0) 2023.06.13
[SQL] SQL 함수 (2/2) (19일차)  (0) 2023.06.12
[SQL] SQL 응용 (19일차)  (0) 2023.06.12
728x90
반응형

STUDENT 테이블

 

EMP 테이블

 

 

 

 

1. STUDENT 테이블에서 기계과 이면서 키가 170 이상인 학생 조회

▶ 코드

SELECT STU_NAME
FROM STUDENT
WHERE STU_DEPT IN ('기계') AND STU_HEIGHT >= 170;

 

▶ 출력 결과

 

 

 

2. STUDENT 테이블에서 반(STU_CLASS)가 A이거나 B인 학생 구하기

▶ 코드

SELECT STU_NAME
FROM STUDENT
WHERE STU_CLASS IN ('A','B');

 

▶ 출력 결과

 

 

 

3. STUDENT 테이블에서 몸무게가 60~70 사이인 학생 구하기(BETWEEN 사용)

▶ 코드

SELECT STU_NAME
FROM STUDENT
WHERE STU_WEIGHT BETWEEN 60 AND 70;

 

▶ 출력 결과

 

 

 

4. STUDENT 테이블에서 키가 170이상인 학생의 수 구하기

▶ 코드

SELECT COUNT(STU_NAME) AS 학생수
FROM STUDENT
WHERE STU_HEIGHT >= 170;

 

▶ 출력 결과

 

 

 

5. EMP 테이블에서 급여가 4000 이상인 레코드 삭제

▶ 코드

DELETE
FROM EMP
WHERE SAL >= 4000;

 

▶ 출력 결과

SAL이 4000이 넘는 행이 삭제되었다.

 

 

6. EMP 테이블에서 부서번호(DEPTNO)가 20인 레코드 삭제

▶ 코드

DELETE
FROM EMP
WHERE DEPTNO IN (20);

 

▶ 출력 결과

  • DEPTNO가 20인 행이 삭제되었다.

 

 

 

7. STUDENT 테이블에서 키가 180이상인 학생의 몸무게 1씩 증가

▶ 코드

UPDATE STUDENT
SET STU_WEIGHT = STU_WEIGHT+1
WHERE STU_HEIGHT >= 180;

 

▶ 출력 결과

  • 몸무게가 90에서 1이 증가된 91으로 변경되었다.

 

 

 

8. STUDENT 테이블에서 기계과 이면서 3학년인 학생의 반(STU_CLASS)를 B로 변경

▶ 코드

UPDATE STUDENT
SET STU_CLASS = 'B'
WHERE STU_DEPT = '기계' AND STU_GRADE = 3;

 

▶ 출력 결과

  • A 값이 B로 출력되었다.

 

728x90
반응형

'HRD_훈련 > 실습' 카테고리의 다른 글

[SQL] JOIN 실습 1 (20일차)  (0) 2023.06.13
[SQL] SQL 함수 실습 (19일차)  (0) 2023.06.12
[SQL] UPDATE 실습 (19일차)  (0) 2023.06.12
[SQL] DELETE 실습 (19일차)  (0) 2023.06.12
[SQL] SELECT 실습 (19일차)  (0) 2023.06.12
728x90
반응형

1. STUDENT 테이블에서 옥성우의 학과를 기계과로 변경

 

▶ 코드

UPDATE STUDENT
SET STU_DEPT = '기계'
WHERE STU_NAME = '옥성우';

 

▶ 출력 결과

컴퓨터정보에서 기계로 수정되었다.

 

 

 

2. STUDENT 테이블에서 키가 NULL인 레코드의 키 값을 175로 변경

▶ 코드

UPDATE STUDENT
SET STU_HEIGHT = 175
WHERE STU_HEIGHT IS NULL;

 

▶ 출력 결과

(null) 이었던 값이 175로 수정되었다.

 

 

 

3. STUDENT 테이블에서 몸무게가 50이하인 학생들의 몸무게를 1씩 증가

▶ 코드

UPDATE STUDENT
SET STU_WEIGHT = STU_WEIGHT+1
WHERE STU_WEIGHT <= 50;

 

▶ 출력 결과

  • 몸무게 50 → 51 / 47 → 48 / 45 → 46

 

728x90
반응형

'HRD_훈련 > 실습' 카테고리의 다른 글

[SQL] SQL 함수 실습 (19일차)  (0) 2023.06.12
[SQL] 심화 문제 (19일차)  (0) 2023.06.12
[SQL] DELETE 실습 (19일차)  (0) 2023.06.12
[SQL] SELECT 실습 (19일차)  (0) 2023.06.12
[JAVA] 시간 게임  (0) 2023.06.10
728x90
반응형

※ DELETE를 작성할 때 조건을 먼저 작성하고, 마지막에 FROM 테이블을 작성하는 것을 습관화하면 좋다. (사고 방지)

 

1. EMP 테이블에서 이름이 SMITH인 테이블 삭제

 

▶ 코드

DELETE
FROM EMP
WHERE ENAME = 'SMITH';

 

▶ 출력 결과

SMITH 삭제됨

 

 

 

2. EXP 테이블에서 급여가 1500미만인 레코드 삭제

▶ 코드

DELETE
FROM EMP
WHERE SAL < 1500;

 

▶ 출력 결과

 

 

 

3. EXP 테이블에서 커미션이 NULL이 아닌 레코드 삭제

▶ 코드

DELETE
FROM EMP
WHERE COMM IS NOT NULL;

 

▶ 출력 결과

 

728x90
반응형

'HRD_훈련 > 실습' 카테고리의 다른 글

[SQL] 심화 문제 (19일차)  (0) 2023.06.12
[SQL] UPDATE 실습 (19일차)  (0) 2023.06.12
[SQL] SELECT 실습 (19일차)  (0) 2023.06.12
[JAVA] 시간 게임  (0) 2023.06.10
[JAVA] Calendar 문제 (18일차)  (0) 2023.06.09
728x90
반응형

1. STUDENT 테이블 조회

▶ 코드

SELECT *
FROM STUDENT;

 

▶ 출력 결과

 

 

 

2. STUDENT 테이블 레코드 개수 구하기 - 별칭 CNT

▶ 코드

SELECT COUNT(*) AS CNT
FROM STUDENT;

 

▶ 출력 결과

 

 

 

3. STUDENT 테이블에서 학번 이름 학과 컬럼 조회

▶ 코드

SELECT STU_NO, STU_NAME, STU_DEPT
FROM STUDENT;

 

▶ 출력 결과

 

 

 

4. STUDENT 테이블에서 기계과 학생만 조회

▶ 코드

SELECT *
FROM STUDENT
WHERE STU_DEPT = '기계';

 

▶ 위 코드는 IN 을 이용해 표현할 수 있다. 조건이 여러 개일 때 유용하게 쓰인다.

SELECT *
FROM STUDENT
WHERE STU_DEPT IN('기계');

 

▶ 출력 결과

 

 

 

5. STUDENT 테이블에서 남자 학생만 조회

▶ 코드

SELECT *
FROM STUDENT
WHERE STU_GENDER = 'M';

 

▶ 출력 결과

 

 

 

6. STUDENT 테이블에서 남자인 사람과 기계인 사람만 조회

▶ 코드

SELECT *
FROM STUDENT
WHERE STU_GENDER = 'M' AND STU_DEPT = '기계';

 

▶ 출력 결과

 

 

 

7. STUDENT 테이블에서 키가 170 이상인 학생 조회

▶ 코드

SELECT *
FROM STUDENT
WHERE STU_HEIGHT >= 170;

 

▶ 출력 결과

 

 

 

8. STUDENT 테이블에서 키가 175 이상이거나 몸무게가 60 이상인 학생 조회

▶ 코드

SELECT *
FROM STUDENT
WHERE STU_HEIGHT >= 175 OR STR_WEIGHT >= 60;

 

▶ 출력 결과

 

 

 

9. STUDENT 테이블에서 키가 170~180 사이의 학생 조회

▶ 코드

SELECT *
FROM STUDENT
WHERE STU_HEIGHT >= 170 AND STU_HEIGHT <= 180;

 

▶ 위 코드는 BETWEEN 을 이용해 표현할 수 있다. (위 코드보다 더 빠르며, 추천하는 방식이다)

SELECT *
FROM STUDENT
WHERE STU_HEIGHT BETWEEN 170 AND 180;

 

▶ 출력 결과

 

 

 

10. STUDENT 테이블에서 키가 NULL인 학생 조회

▶ 코드

SELECT *
FROM STUDENT
WHERE STU_HEIGHT IS NULL;

 

▶널이 아닌 값 : IS NOT NULL

SELECT *
FROM STUDENT
WHERE STU_HEIGHT IS NOT NULL;

 

▶ 출력 결과

 

 

 

11. STUDENT 테이블에서 기계과이거나 전지전자과인 학생을 조회

▶ 코드

SELECT *
FROM STUDENT
WHERE STU_DEPT IN('기계','전기전자');

 

▶ 위 WHERE문은 AND을 이용해도 나타낼 수 있지만, 코드가 길고 복잡한 특징이 있다.

WHERE STU_DEPT = '기계' OR STU_DEPT = '전기전자';

 

▶ 출력 결과

 

 

 

12. STUDENT 테이블에서 남학생의 숫자 조회

▶ 코드

SELECT COUNT(*) AS 남학생수
FROM STUDENT
WHERE STU_GENDER = 'M';

 

▶ 출력 결과

 

 

728x90
반응형

'HRD_훈련 > 실습' 카테고리의 다른 글

[SQL] UPDATE 실습 (19일차)  (0) 2023.06.12
[SQL] DELETE 실습 (19일차)  (0) 2023.06.12
[JAVA] 시간 게임  (0) 2023.06.10
[JAVA] Calendar 문제 (18일차)  (0) 2023.06.09
[JAVA] Collections 클래스 문제 (18일차)  (0) 2023.06.09

+ Recent posts