SQL - DML(Data Manipulation Language)와 INSET, UPDATE, DELECT

songmin jeon·2023년 11월 22일
0

1. DML(Data Manipulation Language)


1.1. INSERT (시험예상)

• 테이블에 새로운 데이터를 튜플(행) 단위로 입력

--INSERT 문법 
INSERT INTO 테이블명 ( 컬럼명(COLUMN_LIST) ) 
VALUES ( 컬럼값(COLUMN_LIST에 입력할 값 리스트) );

--예시)
INSERT INTO 수강생정보 (
	학생ID
    , 학생이름
    , 소속반 
) VALUES ( 
	'S0088'
    , '김민수'
    , 'H' 
);


1.2. UPDATE

테이블에 있는 기존 데이터를 새로운 내용(SET)으로 수정

-- UPDATE 문법 
UPDATE 테이블명 SET 변경컬럼 = 변경 값 WHERE 변경할 행 조건 ; 

-- (예시)
UPDATE 수강생정보
SET 학생ID = ‘S0089’ 
  , 학생이름 = ‘김민수’ 
  , 소속반 = ‘G’
WHERE 학생ID = ‘S0088’ ;


1.3. DELETE (시험예상)

• 테이블에 있는 기존 데이터를 튜플(행) 단위로 삭제.

-- DELETE 문법
DELETE FROM 테이블명 
WHERE 삭제하고 싶은 행조건 ; 

-- (예시)
DELETE FROM 성적표
WHERE 학생ID = ‘S0089’ ;


1.3.1 테이블 데이터 삭제 유형 비교!


1.3.2 DML 실습문제

( INSERT , UPDATE , DELETE )

/*1.오늘 새로운 직원이 입사하였습니다. 아래 데이터를 확인하여 
직원 테이블에 정보를 입력해주세요. 자바에서 넘어온 데이터
(입력되지 않은 성별 컬럼의 경우 NULL 값이 들어가도록 해주세요.)
	직원ID : 'A1000'
    패스워드 : 'hello1000'
    이름 : '신캐릭'
    나이 : 29
    입사일시 : 현재시점을 넣을 수 있게 SYSDATE 로 값 대입
    주민등록번호 : '950120-1566221'
    연봉 : 3500
    부서id : 'D006' 
*/
INSERT INTO 직원(
    직원ID
    , 패스워드
    , 이름
    , 나이
    , 입사일시
    , 주민등록번호
    , 연봉
    , 부서ID
) VALUES (
    'A1000'
    , 'hello1000'
    , '신캐릭'
    , 29
    , SYSDATE
    , '950120-1566221'
    , 3500
    , 'D006'
) ;


/*2.위에서 입력한 'A1000' 직원의 정보를 수정해주세요.
(수정 정보)
성별 : '남'
부서ID : 'D005'
패스워드 : 'hello1000!!!' 
*/
  UPDATE 직원 
  SET 성별 = '남'
      , 부서ID = 'D005'
      , 패스워드 = 'hello1000!!!'
  WHERE 직원ID = 'A1000' ;


/*3.위에서 입력한 'A1000' 직원이 오늘 퇴사를 하였습니다.
해당 직원정보를 직원 테이블에서 삭제(DELETE) 해주세요.*/
  DELETE FROM 직원
  WHERE 직원ID = 'A1000' ;


/*4.퇴사한 A1000 대신에 새로운 직원이 입사를 하였습니다.
이번에는 직원정보와 함께 연락처 정보와 주소 정보가 함께 들어왔습니다. 반드시 아래의 순서로 데이터를 INSERT 해주세요.

(1)직원 테이블 -> (2)직원연락처 테이블 -> (3)직원주소 테이블
    직원ID : 'A2000'
    패스워드 : 'hello222'
    이름 : '이홍시'
    나이 : 40
    입사일시 : 현재시점을 넣을 수 있게 SYSDATE 로 값을 넣어주세요.
    주민등록번호 : '830220-1566221'
    연봉 : 5600
    부서id : 'D006'
    핸드폰번호 : '010-5959-1111'
    집주소 : '운천로 123' 
*/
  INSERT INTO 직원(
      직원ID
      , 패스워드
      , 이름
      , 나이
      , 입사일시
      , 주민등록번호
      , 연봉
      , 부서ID
  ) VALUES (
      'A2000'
      , 'hello222'
      , '이홍시'
      , 40
      , SYSDATE
      , '830220-1566221'
      , 5600
      , 'D006'
  ) ;

  INSERT INTO 직원연락처(
      직원ID
      , 구분코드
      , 연락처
  ) VALUES (
      'A2000'
      , '휴대폰'
      , '010-5959-1111'
  ) ;

  INSERT INTO 직원주소(
      직원ID
      , 구분코드
      , 주소
  ) VALUES (
      'A2000'
      , '집'
      , '운천로 123'
  ) ;


/*5.2023년을 맞이해 성적표 테이블의 모든 데이터를 초기화하려고 합니다. 성적표 테이블의 모든 데이터를 삭제해주세요. */
	DELETE FROM 성적표;


/*6.직원ID가 'A2000' 인 직원의 집전화 번호는 '062-123-1111' 입니다. 이 데이터를 직원연락처 테이블에 입력해주세요. */
  INSERT INTO 직원연락처 (
      직원ID
      , 구분코드
      , 연락처
  ) VALUES (
      'A2000'
      , '집전화'
      , '062-123-1111'
  ) ;


/*7.직원 'A2000' 이 가지고 있는 휴대폰 연락처는 '010-5959-1111' 입니다. 그런데 이번에 휴대폰을 바꿔서 번호가 '010-3333-5959' 로 변경이 되었습니다. 변경된 핸드폰 번호가 반영되도록 휴대폰 연락처를 수정해주세요. */
  UPDATE 직원연락처
  SET 연락처 = '010-3333-5959'
  WHERE 구분코드 = '휴대폰'
  AND 직원ID = 'A2000';


/*8.직원주소 테이블에서 직원ID 가 'A0011' , 'A0012' , 'A0013' , 'A2000' 인 대상을 삭제해주세요.
[ 힌트 : IN 연산자 활용 ]
DELETE 의 경우 조건에 맞는 행이 없으면 0행이 삭제되었습니다 라고 출력되고 오류를 발생시키지는 않습니다. (즉, 정상 케이스입니다) */
  DELETE FROM 직원주소
  WHERE 직원ID IN('A0011' , 'A0012' , 'A0013' , 'A2000');


/*9.직원연락처 테이블에서 직원ID 가 'A0011' , 'A0012' , 'A0013' , 'A2000' 인 대상을 삭제해주세요
[ 힌트 : IN 연산자 활용 ]*/
  DELETE FROM 직원연락처
  WHERE 직원ID IN ('A0011' , 'A0012' , 'A0013' , 'A2000');


/*10.직원 테이블에서 직원ID 가 'A0011' , 'A0012' , 'A0013' , 'A2000' 인 대상을
삭제해주세요
[ 힌트 : IN 연산자 활용 ]*/
  DELETE FROM 직원
  WHERE 직원ID IN ('A0011' , 'A0012' , 'A0013' , 'A2000');


/*11.수강생 S0001 이 최근 시험에서 국어 , 수학 , 영어 점수를 각각 90 , 85 , 70 점 맞았습니다. 이 정보를 성적표 테이블에 INSERT 해주세요.

예) 학생ID는 문자형 , 과목은 문자형 , 성적은 숫자형 컬럼입니다.
  S0001 국어 90
  S0001 수학 85
  S0001 영어 70
*/
  INSERT INTO 성적표(
      학생ID
      , 과목
      , 성적
  )VALUES(
      'S0001'
      , '국어'
      , 90
  );

  INSERT INTO 성적표(
      학생ID
      , 과목
      , 성적
  )VALUES(
      'S0001'
      , '수학'
      , 85
  );

  INSERT INTO 성적표(
      학생ID
      , 과목
      , 성적
  )VALUES(
      'S0001'
      , '영어'
      , 70
  );



/*12.수강생 S0001 이 본 시험에서 영어 과목에 문제가 생겨 처리 결과, 70 점에서 80 점으로 점수가 상승했습니다. 이를 반영하기 위해 S0001 학생의 영어 성적을 80으로 변경해주세요. */
  UPDATE 성적표
  SET 성적 = 80
  WHERE 학생ID = 'S0001'
  AND 과목 = '영어';


profile
제가 한 번 해보겠습니다.

0개의 댓글