| 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 | 
| 12 | 13 | 14 | 15 | 16 | 17 | 18 | 
| 19 | 20 | 21 | 22 | 23 | 24 | 25 | 
| 26 | 27 | 28 | 29 | 30 | 31 | 
- 데이터분석시각화
- 주피터노트북판다스
- 파이썬수업
- 파이썬데이터분석
- SQL수업
- 파이썬크롤링
- Python
- python알고리즘
- python수업
- matplotlib
- 파이썬알고리즘
- SQL
- 수업기록
- python데이터분석
- 판다스데이터분석
- 판다스그래프
- 맷플롯립
- 파이썬차트
- 주피터노트북그래프
- SQLSCOTT
- 팀플기록
- 파이썬시각화
- sql따라하기
- 주피터노트북맷플롯립
- sql연습
- 주피터노트북데이터분석
- 파이썬데이터분석주피터노트북
- sql연습하기
- 주피터노트북
- 파이썬
- Today
- Total
IT_developers
SQL - scott(개념 + 실습) DML- insert 본문
DML(데이터 조작어 : 삽입, 삭제, 수정) =>최종 반영을 할껀지 안할껀지 여부
1) DEPT 테이블의 데이터를 복사하여 dept_temp 테이블 생성. 실습용 테이블 생성
CREATE TABLE dept_temp 
    AS 
        SELECT 
            * 
        FROM 
            dept;

Ctrl + C => Ctrl + V 느낌
dept 조회를 해서 dept_temp 테이블을 생성하겠다.
※ insert(삽입) : insert into 테이블 명(열이름...) values(데이터...);
2) dept_temp에 deptno, dname, loc 값 넣기
INSERT INTO dept_temp ( 
    deptno, 
    dname, 
    loc 
) VALUES ( 
    50, 
    'DATABASE', 
    'SEOUL' 
);

문자, 날짜 데이터는 ' 홑따옴표 ' 사용
잘 들어갔는지 확인
SELECT 
    * 
FROM 
    dept_temp;

2-1) 열 이름 생략하고 데이터 값 넣기
INSERT INTO dept_temp VALUES ( 
    60, 
    'NETWORK', 
    'BUSAN' 
);


생략 가능 할 조건 : 칼럼의 개수와 순서에 맞춰서 넣어줘야함.
2-2) 열이름 없이 loc 제외하고 입력 (오류)
INSERT INTO dept_temp VALUES (
    60,
    'NETWORK'
    );

2-3) 열 이름 맞추고 loc 제외하고 입력시
INSERT INTO dept_temp ( 
    deptno, 
    dname 
) VALUES ( 
    70, 
    'NETWORK' 
);

열 이름 맞추고 값 생략시 null 로 자동입력됨
3) 오류 : value larger than specified precision allowed for this column
insert into dept_temp 
values(800, 'NETWORK','BUSAN');
테이블을 만들 때 데이터를 어떻게 받을꺼야라고 명시하게 되어있음 
2자리로 했는데 3자리를 넣을꺼야 라고 하면 오류, 형식과 규칙에 맞춰서 입력
4) null 값을 직접 명시
INSERT INTO dept_temp VALUES ( 
    80, 
    'NETWORK', 
    NULL 
);

5) emp 테이블의 구조만 복사해서 새로운 테이블 생성. 데이터는 가지고 오지 않음.
CREATE TABLE emp_temp 
    AS 
        SELECT 
            * 
        FROM 
            emp 
        WHERE 
            1 <> 1;



6) emp_temp 테이블에 값 넣어주기(홍길동)
INSERT INTO emp_temp ( 
    empno, 
    ename, 
    job, 
    mgr, 
    hiredate, 
    sal, 
    comm, 
    deptno 
) VALUES ( 
    9999, 
    '홍길동', 
    'MANAGER', 
    NULL, 
    '2021-01-05', 
    5000, 
    1000, 
    10 
);

칼럼명을 순서대로 써줄 필요는 없지만 칼럼명 순서와 값의 순서는 동일시 해줘야함.
7-1) emp_temp 테이블에 값 넣어주기(성춘향)
INSERT INTO emp_temp ( 
    empno, 
    ename, 
    job, 
    mgr, 
    hiredate, 
    sal, 
    comm, 
    deptno 
) VALUES ( 
    8888, 
    '성춘향', 
    'MANAGER', 
    9999, 
    sysdate, 
    4000, 
    500, 
    20 
);

날짜데이터에 sysdatd를 사용하면 오늘 날짜가 입력됨.
8) emp테이블의 내용을 사원 중 부서번호가 20번인 사원들만 emp_temp 사입
INSERT INTO emp_temp ( 
    empno, 
    ename, 
    job, 
    mgr, 
    hiredate, 
    sal, 
    comm, 
    deptno 
) 
    SELECT 
        empno, 
        ename, 
        job, 
        mgr, 
        hiredate, 
        sal, 
        comm, 
        deptno 
    FROM 
        emp 
    WHERE 
        deptno = 20;

서브쿼리를 사용 할 수 있음.
9) emp 테이블에서 salgrade 테이블을 참조하여 등급이 1인 사원을 emp_temp 추가
INSERT INTO emp_temp ( 
    empno, 
    ename, 
    job, 
    mgr, 
    hiredate, 
    sal, 
    comm, 
    deptno 
) 
    SELECT 
        empno, 
        ename, 
        job, 
        mgr, 
        hiredate, 
        sal, 
        comm, 
        deptno 
    FROM 
             emp e 
        JOIN salgrade s ON e.sal BETWEEN s.losal AND s.hisal 
    WHERE 
        s.grade = 1;

프로그램 종료시 뜨는 최종 반영 여부 확인
commit(커밋) : 데이터베이스에 최종 반영
rollback(롤백) : 지금 반영된걸 취소

'SQL' 카테고리의 다른 글
| SQL - scott(DML 실습) (0) | 2022.08.18 | 
|---|---|
| SQL - scott(개념 + 실습) DML- update, delete (0) | 2022.08.17 | 
| SQL - scott(개념 + 실습) 서브쿼리 (0) | 2022.08.15 | 
| SQL - scott(개념 + 실습) JOIN (0) | 2022.08.14 | 
| SQL - scott(개념 + 실습)11 (0) | 2022.08.13 | 
 
             
								 
								 
								