성장일기 : 문과생의 개발 여정 (งᐖ)ว ( ᐛ )و

테이블 데이터 추가,수정,삭제 Database / Oracle SQL Developer 본문

백엔드개발/DATABASE

테이블 데이터 추가,수정,삭제 Database / Oracle SQL Developer

hyemi_flora 2023. 11. 7. 10:11

1101 수업내용

--15_테이블 추가,수정,삭제.sql

 


CREATE TABLE fruits(
    fruit_name VARCHAR2(30),
    fruit_price NUMBER(6),
    fruit_grade VARCHAR2(2),
    country_id CHAR(2) NOT NULL
);

 

/*

    #테이블에 데이터 추가하기

    - INSERT INTO 테이블명(컬럼1,컬럼2...) VALUES(1,2...);

*/

 

INSERT INTO fruits (
    fruit_name,
    fruit_price,
    fruit_grade,
    country_id
) VALUES (
    'Apple',
    1300,
    'A+',
    'KR'
);

 

-- INSERT시에 컬럼 순서를 꼭 지킬 필요는 없다

-->  컬럼 순서를 바꾸었다면, 값의 순서도 바꿔줘야한다.

INSERT INTO fruits(country_id, fruit_grade, fruit_price, fruit_name)

VALUES('AU', 'SS',3300, 'Banana');

 

/*

    # INSERT시에 컬럼을 모두 적지 않을 수 있다.

    적지 않은 컬럼에는 자동으로 NULL이 들어간다.

    적지 않은 컬럼이 null을 허용하지 않는 컬럼인 경우 에러가 발생한다

    (만들때 예외처리 not null)

    cannot insert NULL into ("HR"."FRUITS"."COUNTRY_ID")

*/

 

INSERT INTO fruits(fruit_name, fruit_price) VALUES('Grape', 3000);

-- 생략한 컬럼중 하나인 country_id에서 NULL을 허용하지 않아서 INSERT가 거부되었다.

-- 생략한 컬럼인 fruit_price fruit_grade에는 null이 들어갔다.

 

INSERT INTO fruits(fruit_name, country_id) VALUES('Grape', 'FR');

 

-- 컬럼명을 생략하면 모든 컬럼의 값을 순서대로 적어야한다.

INSERT INTO fruits VALUES ('Peach', 1800, 'A', 'KR');

 

-- 서브쿼리로 INSERT하기 (테이블 구조가 동일한 경우 가능)

INSERT INTO fruits (SELECT * FROM fruits);

 

SELECT * FROM fruits WHERE country_id = 'KR';

 

 

 

 

/*

    #테이블 데이터 수정하기

    - UPDATE 테이블명 SET 컬럼1=1, 컬럼2=2 ... WHERE 조건절;

    - 만약 조건을 지정하지 않으면 모든 행이 수정된다

    - 하나의 행만 수정하기 위해서 기본키(또는 후보키)와 함께 자주 활용된다

*/

 

COMMIT; -- 현재까지의 변경사항을 저장한다.(DCL)

SELECT * FROM fruits;

 

UPDATE fruits SET fruit_name = 'PineApple';

-- 조건절을 입력하지 않아서 모든 과일명이 파인애플로 되었다.

-- 조건을 지정하지 않으면 해당 테이블의 모든 행이 수정됨으로 주의

 

 

 

ROLLBACK; -- 변경사항을 모두 취소하고 가장 최근의 COMMIT 상태로 돌아간다 (DCL)

 

 

-- 조건을 지정해야 원하는 행만 수정할 수 있다.

UPDATE fruits

SET

    fruit_name = 'PineApple',

    fruit_price = 5000

WHERE

    fruit_name = 'Apple';

 

 

 

 

  

/*

    # 테이블 데이터 삭제하기

    - DELETE FROM 테이블명 WHERE 조건절;

    - 조건을 적지 않으면 해당 테이블의 모든 데이터가 삭제된다 (※주의※)

*/

 

COMMIT;

DELETE FROM fruits; -- 조건을 적지 않으면 모든 행이 삭제된다

ROLLBACK;

 

-- 조건을 적어야 원하는 행만 삭제할 수 있다.

DELETE FROM fruits WHERE fruit_grade IS NULl;