데이터 조작어(Data Manipulation Language)

이태규·2022년 3월 21일
0

SQL

목록 보기
7/26

데이터 조작어(Data Manipulation Language) : 데이터 추가, 조회, 수정 및 삭제를 위한 명령어.

  • INSERT : 데이터 입력
  • UPDATE : 데이터 수정
  • DELETE : 데이터 삭제
  • SELECT : 데이터 조회

전체 조회

SELECT * FROM 테이블명;
SELECT * FROM MEMBER3;

추가하기

INSERT INTO 테이블명(컬럼명) VALUE(추가값);
INSERT INTO MEMBER3(ID, PW, AGE, PHONE, GENDER, REGDATE, REGDATE1) 
VALUES ('a', 'a', 11, '010-2553-4586', 'M', CURRENT_DATE, CURRENT_DATE);

다시 조회

DATE와 TIMESTAMP의 차이가 자세하게 나옴.
TIMESTAMP가 자세하게 나옴.

제약조건에 위배되었을 때

DCL은 COMMIT, ROLLBACK을 마지막에 해줘야 DB에 적용이 됨.

시퀀스 쓰기

오라클에서는 시퀀스를 지원해줌.


시퀀스가 있는 걸 확인할 수 있음

시퀀스 생성하기

CREATE SEQUENCE SEQ_BOARD3_NO
	START WITH 1 INCREMENT BY 1 NOMAXVALUE;

생성한 시퀀스 사용하기

INSERT INTO BOARD3(NO, TITLE, WRITER, HIT, REGDATE, CONTENT) 
VALUES (SEQ_BOARD3_NO.NEXTVAL, 'A', 'a',1,CURRENT_DATE, 'A');

수정하기

UPDATE 테이블명 SET 컬럼명=변경값, 컬럼명=변경값  WHERE 조건;
UPDATE MEMBER3 SET AGE=22, PHONE='010-2554-4545' WHERE ID='C';

조건부 수정

나이가 0 ~20이면 나이를 200으로
나이가 21~40이면 나이를 300
나머지는 300으로 변경

UPDATE MEMBER3 SET AGE = 
    CASE
        WHEN(age >=0 AND age <=20) THEN 200
        WHEN(age >=21 AND age <=40) THEN 300
        ELSE 400
    END    

삭제하기



DELETE FROM BOARD3 WHERE NO=5;
DELETE FROM MEMBER3 WHERE ID='a';

외래키로 사용중이어서 오류가 발생함.

회원삭제, 중요정보를 UPDATE를 함.

조회하기

a,b,c가 포함된걸 가져오세요

SELECT * FROM MEMBER3 WHERE ID IN ('a', 'b', 'c');

조건 + 정렬

SELECT * FROM MEMBER3 WHERE ID IN('a', 'b', 'c') ORDER BY ID DESC;

게시판 조회수가 20이상인 것을 글번호 기준 내림차순으로 조회

SELECT * FROM BOARD3 WHERE HIT <= 20 ORDER BY NO DESC;

필터를 하고 정렬을 하는 게 좋음.
반대로 하면 성능이 떨어짐.

쿼리문이 성능을 좌우함. 최적화해서 주기.

조건부 컬럼 형성 만들어서 조회

SELECT NO 번호, NAME 이름, PAY 급여,
    CASE 
        WHEN( PAY >= 0 AND PAY <=200) THEN PAY * 0.05
        WHEN( PAY >= 201 AND PAY <=300) THEN PAY * 0.05
        ELSE PAY * 0.15
END 세금
FROM EMPLOYEE;

제목에 "A"가 포함된 것 검색

SELECT 컬럼 FROM 테이블 WHERE 컬럼 LIKE 검색어
ORDER BY 컬럼 ASC | DESC

SELECT NO, TITLE, WRITER, HIT, REGDATE FROM BOARD3
    WHERE TITLE LIKE '%' || 'A' || '%'
    ORDER BY NO DESC;

컬럼명 변경시키기

SELECT
    NO, TITLE, WRITER, HIT,
    REGDATE DT, ROW_NUMBER() OVER(ORDER BY NO DESC)
FROM
    BOARD3;

원래 컬럼 변경할 컬럼 순.

페이지네이션

SELECT * FROM (
SELECT
    NO, TITLE, WRITER, HIT,
    REGDATE DT, ROW_NUMBER() OVER(ORDER BY NO DESC) ROWN
FROM
    BOARD3) 
BOARD33 WHERE ROWN BETWEEN 1 AND 3;

SELECT * FROM 테이블명 이렇게 조회했었음
SELECT 조회할 내용,
조회할 내용 > 원래 컬럼명 변경할 컬럼명.
페이지네이션을 위한 컬럼을 새로 만든다.

ROW_NUMBER() OVER(ORDER BY NO DESC) ROWN

ROWN의 이름을 가진 컬럼을 만듦.
그리고 만들어진 테이블을 SELECT FROM()안에 넣어서 BOARD33의 이름을 가진 테이블로 만든다. 거기서 WHERE조건문을 써서 원하는 만큼의 페이지를 가지고 온다.

profile
한 걸음씩 나아가자

0개의 댓글