본문 바로가기
컴퓨터공학/데이터베이스, 파일처리

[데이터베이스] DML 기초

by lody.park 2024. 5. 13.

ROWNUM은 사용자가 아닌 시스템이 관리하는 의사 컬럼으로 채번, 출력 갯수 지정 등에 활용이 가능하다.

oracle 에서만 되는 것 같은데 mysql에서의 사용법은 조금 다른 것 같다.

DESC 는 테이블의 구조를 보기 위해 사용한다.

 

SELECT, INSERT, UPDATE, DELETE

INSERT

테이블에 한 건의 레코드를 추가함

여러개를 추가하고 싶으면? INSERT ALL 구문을 사용한다.

문자 또는 날짜 값의 경우 반드시 작은 따옴표로 묶어야한다.

INSERT INTO 테이블명 (컬럼 리스트)

VALUES (값 리스트)

칼럼 순서는 실제 테이블의 칼럼 순서와 무관함.

정의하지 않은 값은 NULL 값이 입력된다.

컬럼 리스트를 적어주지 않으면 모든 컬럼이라고 간주한다.

INSERT ALL

테이블에 동시에 여러 레코드를 추가하는 경우 사용.

주의해야할 점은 INSERT ALL 은 반드시 SELECT 문을 작성해줘야한다.

  • 테이블 생성 후 초기 데이터를 일괄적으로 업데이트하기 위해
  • INSERT ALL INTO STADIUM( STADIUM_ID, STADIUM_NAME ) VALUES ('TP1', '임시경기장1') INTO STADIUM( STADIUM_ID, STADIUM_NAME ) VALUES ('TP2', '임시경기장2') SELECT * FROM DUAL;
  • 기존 테이블의 레코드를 조회한 후 다른 테이블에 삽입하기 위해
  • INSERT ALL INTO 테이블2(칼럼리스트) VALUES (ID, NAME) INTO 테이블3(칼럼리스트) VALUES (ID, SALARY) SELECT ID, NAME, SALARY FROM 테이블1;
  • DUAL 테이블?
  • 하나의 칼럼(더미)에 하나의 값(더미값)을 저장하고 있음

DELETE

  • 테이블에 존재하는 전체 레코드 삭제
  • DELECT 테이블명 또는 DELETE FROM 테이블명
  • 일반적으로는 WHERE 구문을 사용해 특정 레코드를 삭제한다.
  • DELETE FROM STADIUM WHERE STADIUM_ID = 'TP1';

UPDATE

  • 테이블에 존재하는 전체 레코드의 값 변경예) PLAYER 테이블에서 모든 레코드의 POSITION을 ‘GK’로 변경
  • UPDATE PLAYER SET POSITION = 'GK'
  • UPDATE 테이블명 SET 칼럼명 = 새로운값
  • 일반적으로는 WHERE 구문을 사용해 특정 레코드 값을 변경한다.
    UPDATE STADIUM SET STADIUM_NAME = '우리경기장'
    WHERE STADIUM_ID ='TP2'
    
  • 예) (’TP2’, ‘임시경기장2’) → ( ‘TP2’, ‘우리경기장’ )

 

 

  • UPDATE 와 ROWNUM 을 이용한 채번예) PLAYER 테이블에 ROW_ID 라는 빈 열을 추가하고, ROWNUM의 값을 ROW_ID 로 복사하시오
  • 테이블 내의 유니크한 일련번호를 생성하는 경우
    set SQL_SAFE_UPDATES = 0;
    select * from player;
    alter table player add column ROW_ID INT(3) null;
    set @rownum := 0;
    update player set ROW_ID = @rownum := @rownum + 1;
    
    select ROW_ID, player_name
    from player
    where ROW_ID = 3;