-- SAMPLE_USERS 테이블의 모든 행에 대해서 USER_POINT의 값을 2000으로 변경하기
UPDATE SAMPLE_USERS
SET USER_POINT = 2000;
-- SAMPLE_USERS 테이블에서 USER_ID가 hong인 사용자의 USER_POINT값을 100으로 변경하기
UPDATE SAMPLE_USERS
SET USER_POINT = 100
WHERE USER_ID = 'hong'; -- where절의 조건식이 true로 판정되는 행의 USER_POINT값을 변경한다.
-- SAMPLE_USER 테이블에서 USER_ID가 hong인 사용자의 USER_POINT값을 50증가시키기
UPDATE SAMPLE_USERS
SET USER_POINT = USER_POINT + 50
WHERE USER_ID = 'hong';
-- SAMPLE_USER 테이블에서 USER_ID hong인 사용자의 이메일, 비밀번호, 전화번호를 변경하기
UPDATE SAMPLE_USERS
SET USER_EMAIL = 'hong@google.com',
USER_TEL = '010-1234-1234',
USER_PASSWORD = 'zxcv1234'
WHERE USER_ID = 'hong'; -- 맨 마지막 컬럼에는 ,를 생략한다.
------------------------------------------------------------------------------------------------------------------------
-- SAMPLE_USERS 테이블에 행 추가하기
------------------------------------------------------------------------------------------------------------------------
INSERT INTO SAMPLE_USERS
(USER_ID, USER_PASSWORD, USER_EMAIL, USER_NAME, USER_TEL)
VALUES
('hong', '12345678', 'hong@namver.com', '홍길동', '010-1234-1234');
------------------------------------------------------------------------------------------------------------------------
-- SAMPLE_USERS 테이블에 저장된 모든 행을 삭제하기
-- WHERE 절 없이 DELETE FROM 구문을 사용하면 테이블의 모든 행을 삭제한다.
DELETE FROM SAMPLE_USERS;
-- SAMPLE_USER 테이블에서 USER_ID 가 sungmin인 사용자 행을 삭제하기
DELETE FROM SAMPLE_USERS
WHERE USER_ID = 'sungmin';
-- DEPARTMENT 테이블에서 DEPARTMENT_ID가 60번인 행 삭제하기
DELETE FROM DEPARTMENTS
WHERE DEPARTMENT_ID = 60;
SELECT *
FROM SAMPLE_USERS;
------------------------------------------------------------------------------------------------------------------------
-- SQL 오류
------------------------------------------------------------------------------------------------------------------------
-- SQL 오류: ORA-00942: table or view does not exist
-- 테이블이나 뷰의 이름이 올바르지 않을 때 발생한다.
SELECT *
FROM DEPARTMENT; -- DEPARTMENTS가 올바른 테이블 이름이다.
INSERT INTO SAMPLE_USER -- SAMPLE_USER가 올바를 테이블 이름이다.
(USER_ID, USER_PASSWORD, USER_EMAIL, USER_NAME, USER_TEL)
VALUES
('sejong', 'zxcv1234', 'sejong@naver.com', '세종대왕', '010-1234-5678');
-- ORA-00923: FROM keyword not found where expected
-- FROM 키워드가 없습니다.
SELECT *
FORM EMPLOYEES; -- 철자 오류
SELECT EMPLOYEE_ID, FIRST_NAME LAST_NAME SALARY -- SELECT 절에서 컬럼명을 적을 때 ,가 누락되었을 때
FROM EMPLOYEES;
-- SQL 오류: ORA-00926: missing VALUES keyword
-- INSERT 문에 VALUES 키워드가 누락되었다.
INSERT INTO SAMPLE_USERS
(USER_ID, USER_PASSWORD, USER_EMAIL, USER_NAME, USER_TEL)
VALUE -- VALUES라고 적어야 한다.
('sejong', 'zxcv1234', 'sejong@naver.com', '세종대왕', '010-1234-5678');
-- SQL 오류: ORA-00913: too many values
-- INSERT 문에서 컬럼의 갯수보다 값을 갯수가 많다.
INSERT INTO SAMPLE_USERS
(USER_ID, USER_PASSWORD, USER_EMAIL, USER_NAME, USER_TEL)
VALUES
('sejong', 'zxcv1234', 'sejong@naver.com', '세종대왕', '010-1234-5678', 100);
-- SQL 오류: ORA-00947: not enough values
-- INSERT 문에서 컬럼의 갯수보다 값의 갯수가 적다.
INSERT INTO SAMPLE_USERS
(USER_ID, USER_PASSWORD, USER_EMAIL, USER_NAME, USER_TEL)
VALUES
('sejong', 'zxcv1234', 'sejong@naver.com', '세종대왕');
-- ORA-02292: 무결성 제약조건(HR.JHIST_DEPT_FK)이 위배되었습니다- 자식 레코드가 발견되었습니다
-- 행을 삭제하거나 변경할 때 발생하는 오류다.
-- 이 행을 참조하는 자식 레코드가 있기 때문에 이 행을 삭제할 수 없다
DELETE FROM DEPARTMENTS
WHERE DEPARTMENT_ID = 60; -- EMPLOYEES테이블에서 DEPARTMENT_ID가 60번인 행이 존재하기 때문에 60번 부서는 삭제할 수 없다.
UPDATE DEPARTMENTS
SET
DEPARTMENT_ID = 300
WHERE
DEPARTMENT_ID = 60; -- EMPLOYEES테이블에서 DEPARTMENT_ID가 60번인 행이 존재하기 때문에 60번 부서의 아이디를 변경할 수 없다.
-- UPDATE, DELETE 문을 실행하면, 해당 행을 다른 프로세스가 작업하지 못하도록 잠금
commit;
-- SAMPLE_USERS 테이블의 모든 행 삭제
delete from sample_users;
INSERT INTO SAMPLE_USERS (USER_ID, USER_PASSWORD, USER_EMAIL, USER_NAME, USER_TEL)
VALUES ('hong', 'zxcv1234', 'hong@gmail.com', '홍길동', '010-1111-1111');
INSERT INTO SAMPLE_USERS (USER_ID, USER_PASSWORD, USER_EMAIL, USER_NAME, USER_TEL)
VALUES ('kim', 'zxcv1234', 'kim@gmail.com', '김유신', '010-1111-2222');
INSERT INTO SAMPLE_USERS (USER_ID, USER_PASSWORD, USER_EMAIL, USER_NAME, USER_TEL)
VALUES ('lee', 'zxcv1234', 'lee@gmail.com', '이순신', '010-1111-3333');
INSERT INTO SAMPLE_USERS (USER_ID, USER_PASSWORD, USER_EMAIL, USER_NAME, USER_TEL)
VALUES ('kang', 'zxcv1234', 'kang@gmail.com', '강감찬', '010-1111-4444');
INSERT INTO SAMPLE_USERS (USER_ID, USER_PASSWORD, USER_EMAIL, USER_NAME, USER_TEL)
VALUES ('ahn', 'zxcv1234', 'ahn@gmail.com', '안중근', '010-1111-5555');
학원 정리/데이터베이스
댓글