오라클 SQL DML 데이터조작어
데이터 조작어(DML. Data Manipulation Language)
INSERT: 데이터 입력
UPDATE: 데이터 수정
DELETE: 데이터 삭제
SELECT: 데이터 조회
● 추가
INSERT INTO 테이블명(컬럼명) VALUES(추가값);
-- 제약조건: 기본키, 성별
INSERT INTO MEMBER3(ID, PW, AGE, PHONE, GENDER, REGDATE, REGDATE1)
VALUES('D', 'D', 16, '010-0000-0004', 'M', CURRENT_DATE, CURRENT_DATE);
<< 이 부분만 계속 수정하고 컨트럴 엔터치면 INSERT 작동
COMMIT; -- 적용
ROLLBACK; -- 되돌리기
일괄추가
INSERT ALL
INTO MEMBER3(ID, PW, AGE, PHONE, GENDER, REGDATE, REGDATE1)
VALUES('E', 'D', 16, '010-0000-0004', 'M', CURRENT_DATE, CURRENT_DATE)
INTO MEMBER3(ID, PW, AGE, PHONE, GENDER, REGDATE, REGDATE1)
VALUES('F', 'D', 16, '010-0000-0004', 'F', CURRENT_DATE, CURRENT_DATE)
INTO MEMBER3(ID, PW, AGE, PHONE, GENDER, REGDATE, REGDATE1)
VALUES('G', 'D', 16, '010-0000-0004', 'M', CURRENT_DATE, CURRENT_DATE)
SELECT * FROM DUAL;
※ 외래키가 있는 테이블에 자료를 넣으려면, 부모 테이블에 외래키의 항목이 있어야 그 항목과 일치하는 값을 자녀 키에 넣을 수 있음
예를 들면 A테이블의 NO값을 B테이블에서 외래키로 사용한다면
A테이블의 NO값이 존재해야 B테이블 외래키로 A테이블의 NO값을 입력할 수 있음
● 조회
SELECT * FROM MEMBER3;
SELECT * FROM MEMBER3 WHERE ID IN('A', 'B', 'C') ORDER BY ID DESC;
검색. 제목에 B가 포함된 것
SELECT NO, TITLE, WRITER, HIT, REGDATE FROM BOARD3
WHERE TITLE LIKE '%' || 'B' || '%'
ORDER BY NO DESC;
페이지네이션.
SELECT * FROM (
SELECT
NO, TITLE, WRITER, HIT, REGDATE DT, ROW_NUMBER() OVER (ORDER BY NO DESC) ROWN
FROM
BOARD3
) WHERE ROWN BETWEEN 1 AND 3;
※ 컬럼명 변경 - 항목 뒤 한칸 띄우고 적기
VIEW. 원본 데이터를 뷰로 만들어서 결국 뷰로 보여주는 것임.
CREATE OR REPLACE VIEW BOARD33 AS
SELECT
NO, TITLE, WRITER, HIT, REGDATE DT,
ROW_NUMBER() OVER (ORDER BY NO DESC) ROWN
FROM
BOARD3;
SELECT * FROM BOARD33;
수정
UPDATE MEMBER3 SET AGE=22, PHONE='010-2242-5678' WHERE ID='C';
CASE END문
UPDATE MEMBER3 SET AGE =
CASE
WHEN (AGE >= 0 AND AGE <=300) THEN 200
ELSE 300
END;
● 삭제
DELETE FROM 테이블명 WHERE 조건;
DELETE FROM BOARD3 WHERE NO=2;
외래키로 빠져나가있는 값은 삭제가 안됨. 그래서 외래키로 나간 값을 제외하고 UPDATE 해야함.
ROLLBACK;
COMMIT;
시퀀스 생성
CREATE SEQUENCE SEQ_BOARD3_NO START WITH 1 INCREMENT BY 1 NOMAXVALUE;
INSERT INTO BOARD3(NO, TITLE, CONTENT, WRITER, HIT, REGDATE)
VALUES(SEQ_BOARD3_NO.NEXTVAL, 'A', 'A', 'A', '1', CURRENT_DATE);
시퀀스 조회
SELECT SEQ_BOARD3_NO.CURRVAL FROM DUAL;
COMMIT, ROLLBACK
COMMIT; -- 적용
ROLLBACK; -- 되돌리기
COMMIT하면 DB에 영구저장.
COMMIT하고 ROLLBACK하면 ROLLBACK 안됨
COMMIT안하고 ROLLBACK하면 ROLLBACK 작동(이전 COMMIT 직전 상태로 ROLLBACK)
-- 실습
-- 시퀀스 생성(SEQ_ITEM1_ITEMNO). 시작숫자 1001, 증가값 1, NOMAXVALUE
CREATE SEQUENCE SEQ_ITEM1_ITEMNO START WITH 1001 INCREMENT BY 1 NOMAXVALUE;
-- ITEM1 테이블에 시퀀스를 이용해서 5개 추가
INSERT INTO ITEM1(ITEMNO, ITEMNAME, ITEMPRICE, ITEMQTY, ITEMDATE)
VALUES(SEQ_ITEM1_ITEMNO.NEXTVAL, 'E', 100, 50, CURRENT_DATE);
-- 재고수량 100 미만은 100으로 변경
UPDATE ITEM1 SET ITEMQTY =100 WHERE ITEMQTY < 100;
-- ITEM1에 "검색어" 가 포함된것 조회 ex)검색어 문자 '1'
SELECT * FROM ITEM1 WHERE ITEMNAME LIKE '%' ||'1'||'%';
-- MEMBER1에 회원 5명 추가
INSERT INTO MEMBER1(USERID, USERPW, USERNAME, USERAGE, USERDATE, USERADDR)
VALUES('B', 'B', 'B', 65, CURRENT_DATE, 'B시');
-- 회원이름 순으로 오름차순 정렬 조회
SELECT * FROM MEMBER1 ORDER BY USERNAME ASC;
-- 나이가 30 이상인 사람만 조회
SELECT * FROM MEMBER1 WHERE USERAGE >= 30;
-- 시퀀스 생성(SEQ_ORDER_ORDNO). 시작숫자 10001, 1, NOMAXVALUE
CREATE SEQUENCE SEQ_ORDER1_ORDNO START WITH 10001 INCREMENT BY 1 NOMAXVALUE;
-- 주문(ORDER1) 3건 추가하기(외래키 ITEM1, MEMBER1)
INSERT INTO ORDER1(ORDNO, ORDCNT, ORDDATE, ORDITEM, ORDID)
VALUES(SEQ_ORDER1_ORDNO.NEXTVAL, 5000, CURRENT_DATE, 1005, 'E');
-- 주문내역을 주문일자 기준으로 내림차순 정렬 조회
SELECT * FROM ORDER1 ORDER BY ORDDATE DESC;
-- 주문수량이 1000 이상인 것만 조회
SELECT * FROM ORDER1 WHERE ORDCNT >= 1000;
Author And Source
이 문제에 관하여(오라클 SQL DML 데이터조작어), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@gegus1220/DML-데이터조작어저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)