본문 바로가기

DB

Oracle DB SQL DML 기초(INSERT, SELECT, UPDATE, DELETE)

DML (Data Manipulation Language) : 데이터 조작어

[2] DML : (1)INSERT (2)SELECT (3)UPDATE (4)DELETE

INSERT

 (1) INSERT : 데이터 삽입

    1.모든 COLUMN 데이터를 삽입할 때

     INSERT INTO [TABLE_NAME] VALUES (COLUMN_DATA1, COLUMN_DATA2, .... COLUMN_DATA);           

     2.특정 COLUMN 데이터를 삽입할 때

     INSERT INTO [TABLE_NAME] (COLUMN_NAME1, COLUMN_NAME2, COLUMN_NAME3)
     VALUES (COLUMN_NAME1_DATA, COLUMN_NAME2_DATA, COLUMN_NAME3_DATA);

 

 --1.STUDENT 테이블에 모든 COLUMN 데이터를 삽입할 때
 INSERT INTO STUDENT VALUES (1, '학생1', '2022-03-04', '010-1234-1234', '대한민국', '학생1@학교.com', '독서');
 
 --2.STUDENT 테이블에 특정 COLUMN 데이터를 삽입할 때
 INSERT INTO STUDENT (번호, 이름, 생년월일, 전화번호) VALUES(2, '학생2', '2022-03-04' ,'010-5678-5678');

 

STUDENT 테이블

 

SELECT

(2) SELECT : 데이터 조회

1. 모든 컬럼값 조회

    SELECT * FROM [TABLE_NAME];

 

SELECT * FROM STUDENT; -- 학생의 모든 정보를 출력할 때

 

 

STUDENT 테이블

 

2. 특정 컬럼값 조회 

   SELECT [COLUMN_NAME1], [COLUMN_NAME2] ... [COLUMN_NAME(N)] FROM [TABLE_NAME];

 

SELECT 번호, 이름, 생년월일 FROM STUDENT; -- (번호, 이름, 생년월일) 검색

 

 

 

3. 특정 컬럼값 조회2

   SELECT * FROM [TABLE_NAME] WHERE [COLUMN_NAME] = 검색할값;

 

SELECT * FROM STUDENT WHERE 취미 = '영화감상'; --(취미가 영화감상인 학생 검색)

 

 

4. 중복 데이터 제거 DISTINCT 

    SELECT DISTINCT [COLUMN_NAME] FORM [TABLE_NAME];

 

SELECT DISTINCT 주소 FROM STUDENT; -- 중복된 주소(데이터) 제거

 

 

5. 정렬하기 ORDER BY

        -오름차순 ASC -오름차순은 기본값 생략가능-
        SELECT [COLUMN_NAME] FROM [TABLE_NAME] ORDER BY [COLUMN_NAME] ASC; --ASC생략가능
        
        -내림차순 DESC
        SELECT [COLUMN_NAME] FROM [TABLE_NAME] ORDER BY [COLUMN_NAME] DESC;

 

SELECT * FROM STUDENT ORDER BY 번호;-- 번호는 원래 데이터가 오름차순이라 출력결과 생략
SELECT * FROM STUDENT ORDER BY 번호 DESC; -- 번호를 내림차순으로 정렬

 

 

 6. 두가지 이상 조건 검색

        1) AND :모든 조건식이 만족할 때 true,  하나라도 거짓이면 false
        SELECT [COLUMN_NAME] FROM [TABLE_NAME] WHERE 조건 AND 조건

 

SELECT * FROM STUDENT WHERE 생년월일 = '22/03/04' AND 취미 = '독서';
--생년월일이 '22/03/04'이면서 취미가 '독서'인 학생 출력

 

 

     2) OR : 조건식중에 하나라도 만족할 때 true 전부 거짓이면 false
     SELECT [COLUMN_NAME] FROM [TABLE_NAME] WHERE 조건 OR 조건;

 

SELECT * FROM STUDENT WHERE 생년월일 = '22/03/04' OR 취미 = '독서';
--생년월일이 '22/03/04' 이거나 취미가 '독서'인 학생 출력

 

 

7. IN연산자 : 같은 컬럼에서 여러가지 조건 검색

    SELECT * FROM [TABLE_NAME] WHERE [COLUMN_NAME] IN(DATA1, DATA2, DATA3....DATA(N));

 

SELECT * FROM STUDENT WHERE 번호 IN (1,2,3); --번호가 1,2,3인 학생 조회

 

 

8. 산술연산자, 문자연산자


   SELECT * FROM [TABLE_NAME] WHERE [COLUMN_NAME] > 조건;

 

SELECT * FROM STUDENT WHERE 번호 > 2; --번호가 2보다 큰 학생 조회

 

 

9. BETWEEN A AND B : A부터 B사이의 값의 데이터 검색


     SELECT * FROM [TABLE_NAME] WHERE [COLUMN_NAME] BETWEEN 조건 AND 조건;
     -- 조건과 조건사이의 데이터 검색

 

SELECT * FROM STUDENT WHERE 번호 BETWEEN 1 AND 3; --번호가 1에서 3사이의 학생 출력

 

 

9-1.NOT BETWEEN : A부터 B사이의 값이 아닌 데이터검색


        SELECT * FROM [TABLE_NAME] WHERE [COLUMN_NAME] NOT BETWEEN 조건 AND 조건;
        

SELECT * FROM STUDENT WHERE 번호 NOT BETWEEN 1 AND 3; -- 번호가 1에서 3사이가 아닌 학생 출력

 

 

 

10.LIKE, WILDCARD

        LIKE : [ % , * ] 0개이상의 문자와 대응된다. 즉 내용, 글자수 상관없이 전부 검색 
                % : 표준 SQL에서 사용 * : Access에서 사용
               [ _ , ? ] 1개이상의 문자와 대응된다. 즉 _ 하나당 문자하나로 처리
                _ : 표준 SQL에서 사용?  : Access에서 사용


        SELECT * FROM [TABLE_NAME] WHERE [COLUMN_NAME] LIKE '시%';
        해당 컬럼의 첫번째 글자가 '시'로 시작하는 데이터를 전부 찾아온다.
        
        SELECT * FROM [TABLE_NAME] WHERE [COLUMN_NAME] LIKE '_그%';
        해당 컬럼의 두번째 글자가 '그'인 모든 데이터를 전부 찾아온다.

 

SELECT * FROM STUDENT WHERE 취미 LIKE '%감상'; -- 취미가 감상으로 끝나는 학생 출력

 

 

SELECT * FROM STUDENT WHERE 생년월일 LIKE '___01___'; --생년월일이 1월인 사람 출력

 

UPDATE

(3) UPDATE : 데이터 수정
   1.데이터 수정

   UPDATE [TABLE_NAME] SET [COLUMN_NAME] = [COLUMN_DATA];

 

UPDATE STUDENT SET 취미 = '독서';
--학생의 모든 사람의 취미가 독서로 변한다.

 

 

 2. 특정 데이터 수정

   UPDATE [TABLE_NAME] SET [COLUMN_NAME] = [COLUMN_DATA]
   WHERE [변경할 데이터 선별조건];

 

UPDATE STUDENT SET 취미 = '게임' WHERE 이름 = '학생2';
--학생2의 취미만 게임으로 변경

 

 

UPDATE STUDENT SET 주소 = '대한민국', 이메일 = '학생2@학생.com' WHERE 이름 = '학생2';
--학생2의 주소와, 이메일을 업데이트

 

DELETE

(4) DELETE : 데이터 삭제
    1.모든 데이터를 삭제하는 경우

    DELETE FROM [TABLE_NAME];
        
    2.특정 데이터를 삭제하는 경우
    DELETE FROM [TABLE_NAME] WHERE [삭제할 데이터 조건];

 

DELETE FROM STUDENT WHERE 이름 = '학생8'; --학생8의 데이터 삭제