Day21

2020. 10. 26. 09:55교육과정/KOSMO

키워드 : SQL / ON DELETE CASCADE / ON DELETE  SET NULL / 정렬 (ORDER BY) / 숫자형 함수 / 문자형 함수 / 날짜형 함수 / dual 테이블

 

****

 

1. SQL 키워드 복습

    (1) DDL - 구조에 대한 작업시
     - CREATE TABLE 테이블명 ([컬럼명 데이터타입]) ... [ ] 는 여러개를 다룰 때
     - DROP TABLE 테이블명;
     - ALTER TABLE 테이블명 ADD ([컬럼명 데이터타입]);
                                     MODIFY ([컬럼명 데이터타입)];
                                     DROP ([컬럼명 데이터타입]);
    (2) DML (CRUD)
     - INSERT INTO VALUES
     - SELECT FROM WHERE
     - UPDATE SET WHERE
     - DELETE FROM WHERE
    (3) DCL - 셀프
     - GRANT : 권한 부여
     - REVOKE : 권한 제거

 

 

2. SQL 기본문법 복습 연습문제

※ 타 계정의 테이블을 복사해올 수 있다. 

    >> 이 때, 제약조건은 포함되지 않기에, 제약조건이 필요할 경우 다시 추가해야 한다. 

 

 

3. 데이터 삭제 작업 중 자식레코드가 있을 경우의 처리 방법 (정책)

    - ON DELETE CASCADE

    - ON DELETE  SET NULL

    (1) 특별한 처리 X 기본 케이스

    (2) on delete cascade 속성

    (3) on delete set null 속성

 

 

4. SELECT 정렬 (ORDER BY)

SELECT * FROM 테이블명 ORDER BY 컬럼이름 DESC(or)ASC, 컬럼이름 DESC(or)ASC;

DESC : ABC 오름차순

ASC  : ABC 내림차순

nulls last : null값을 제일 나중에 출력

 

 

5. 숫자형 함수

ABS (n)

절대값

SIGN (n)

양수(→1), 음수(→-1), 0(→0)을 구분

ROUND (n, i )

숫자 n을 소숫점 i자리에서 반올림

TRUNC (n, i )

숫자 n을 소숫점 i자리에서 자름

CEIL (n)

가장 큰 정수

FLOOR (n)

가장 작은 정수

MOD (n2, n1)

n2에서 n1을 나눈 나머지 연산

POWER (n2, n1)

n2의 n1 제곱값

SQRT (n)

n의 제곱근의 값

 

 

 

 

 

6. 문자형 함수

LOWER (str)

알파벳을 소문자로 변환

UPPER (str)

알파벳을 대문자로 변환

INITCAP (str)

첫번째 글자만 대문자로 변환

CONCAT (str1, str2)

두 문자열을 연결 ( || 도 같은 결과)

SUBSTR (str, i, n)

문자열 중 i번째에서 n개의 일부 문자를 선택 **

INSTR (str, ch, n, i )

문자열 중에서 ch 문자열이 n번째부터 i번째있는 위치

LENGTH (str)

문자열의 길이

LPAD / RPAD (str, n, ch)

n 자리수 만큼 확보 후 빈 공백에 특정 문자로 채움

TRIM / LTRIM / RTRIM

문자를 제거 (*)양쪽 공백 제거에 사용

TRANSLATE ( column, str1, str2 )

문자열에서 str1을 str2로 대체

REPLACE ( column, str1, str2 )

문자열에서 str1을 str2로 대신

**

 (+) JAVA에서는 substring(3,6)일 경우 0부터 시작하여 3번째 문자열부터 6번째 전까지를 선택
 (+) 오라클에서는 SUBSTR(str, 3,6)일 경우 1부터 시작하여 3번째부터 8번째까지 총 6개의 문자를 선택

 

※ dummy 테이블인 dual

 

 

7. 날짜형 함수

- 시스템의 날짜를 가져오는 함수 :

SYSDATE, CURRENT_DATE, SYSTIMESTAMP, CURRENT_TIMESTAMP

(*) 이 함수들은 사용시 () 필요없음

(*) sysdate와 current_date의 차이는 current_date는 세션 시간을 따름.

만일 한 명은 한국에서 한 명은 미국에서 본사 시스템에 접속시

각각 세션에 따른 시간을 확인하게 됨.

 

- 날짜 연산

연산

결과

설 명

Date + number

Date

일수에 날짜를 더함

Date - number

Date

일수에 날짜를 뺌

Date - Date

일수

일수에 다른 일수를 뺌

Date + number / 24

Date

시간을 날짜에 더함

- 날짜 함수

MONTHS_BETWEEN

두 날짜 사이의 월수를 계산

ADD_MONTHS

월을 날짜에 더함

NEXT_DAY

다음 요일에 대한 날짜

LAST_DAY

월의 마지막 날을 계산

ROUND

날짜를 반올림

TRUNC

날짜를 절삭

 

 

8. HR 계정의 employees 테이블을 이용한 연습문제

 

 

9. SQL 문법 마무리 연습문제

 

 

 

※ 기존에 레코드가 있는 상태에서 null 값을 변경하고자 할 때는 UPDATE를 해야 한다. (INSERT가 아님)

※ 특정월 이후부터의 정보를 검색하고자 할 때

EXTRACT(MONTH FROM jumunil) >= 11

jumunil >= EXTRACT(MONTH FROM jumunil)

jumunil >= to_date('161101')

jumunil > '16/10/31'

※ 중복배제 DISTINCT

 

 

 

 

(+) 객체지향의 장점 관련 추가사항

C : 절차적 언어

C++, java : 객체 지향 언어

python, scala : 함수형 언어

 

(1) C의 형식

      int 부서번호;
      부서명;
      int 사원번호;
      사원명;
      업무;
      월급;

 

      void main() {

 

      }

      void method() {

      )


>> 쭉 나열했을 때 하나의 선처럼 보임
>> 정보 수정이 필요할 경우 전체를 스캔해서 찾아야 함

(2) java의 형식
      class 부서{
            int 부서번호;
            String 부서명;
            int 사원번호;
            String 사원명;
            String 업무;
            String 월급;
            void main() {

 

            }
      }

 

>> 부서에 대한 정보 수정이 필요할 경우 해당 클래스를 찾아서 수정하면 된다. 

** 객체가 달라도 함수명 동일하게 사용하기 위해 오버라이딩 사용

** 같은 클래스 내에서 인자 갯수는 다르면서 함수명 동일하게 사용하기 위해 오버로딩 사용

 

 

 

 

 

반응형

'교육과정 > KOSMO' 카테고리의 다른 글

Day23  (0) 2020.10.28
Day22  (0) 2020.10.27
Day20  (0) 2020.10.23
Day19  (0) 2020.10.22
Day18  (0) 2020.10.21