gwooden_코린이
오라클 데이터 베이스 데이터 정의어 본문
728x90
1. 데이터 정의어
- CREATE -> 테이블 생성
- CREATE TABLE 연습
- DROP -> 테이블 삭제
- ALTER -> 테이블 수정
1. CREATE
- VARCHAR -> 문자(가변길이) EX) CHAR(50) -> ABC 입력 -> 50바이트
- VARCHAR -> 최대 2,000바이트
- VARCHAR2 -> 최대 4,000바이
- CHAR -> 문자 (고정길이) EX) VARCHAR(50) -> ABC 입력 -> 3바이트
- NUMBER -> 숫자(가변길이)
- LONG -> 숫자, 문자 (최대 크기가 2GB까지 허용)
- CLOB -> 문자 최대 4GB까지 허용
- BFILE -> 파일 저장
- 테이블 생성 방법은 2가지가 존재
테이블 생성 시 주의사항 (테이블 생성 규칙) -> 컬럼 생성도 동일한 규칙
- 숫자로 시작안함
- 이름은 30바이트 이하
- 예약어로 안됨(SELECT, UPDATE 이런걸로 테이블명 지정 못함)
- $, #, _ 이런거 포함 가능
CREATE TABLE 연습2 (
이름 VARCHAR(50),
수학 NUMBER,
영어 NUMBER(5, 2) -- EX)123.35
);
2. ALTER
- 테이블 수정하고 싶을때
ALTER TABLE
연습2 테이블에 새로운 컬럼 추가 (컬럼명, 데이터 타입)
ALTER TABLE 연습2
ADD 과학 NUMBER;
-- 컬럼추가
기존 컬럼에 데이터가 존재하고 있을 때 새로운 컬럼을 추가하게 되면 빈칸은 NULL로 표기된다.
데이터 조작어 UPDATE를 통해 데이터를 수정해줘야 된다.
ALTER TABLE EX_DEPT
ADD TEL VARCHAR(50);
-- 컬럼명을 변경
ALTER TABLE 테이블명
RENAME COLUMN 변경전컬럼명 TO 변경후컬럼명
ALTER TABLE EX_DEPT
RENAME COLUMN TEL TO PHONE;
--데이터타입을 변경
ALTER TABLE 테이블명
MODIFY 데이터타입을변경할컬럼지정 변경할데이터타입
기존 데이터타입 크기보다 크기를 더 줄이는건 불가능하고 늘리는건 가능하다
ALTER TABLE EX_DEPT
MODIFY DEPTNO NUMBER(5);
DESC EX_DEPT;
--컬럼을 삭제
ALTER TABLE 테이블명
DROP COLUMN 컬럼명
ALTER TABLE EX_DEPT
DROP COLUMN PHONE;
--테이블 이름 변경
RENAME 변경전테이블명 TO 변경후테이블명
RENAME EX_DEPT TO 부서;
--테이블 데이터 삭제 -> 테이블 자체를 지워버린게 아닌 테이블 안에 있는 데이터를 지워버린것
- TRUNCATE TABLE 테이블명
- 롤백, 커밋이 안됨
- DELETE FROM 테이블명
- 롤백 커밋 가능
TRUNCATE TABLE 부서;
DML 데이터 조작어 INSERT, UPDATEM DELETE -> ROLLBACK, COMMIT (가능)
데이터 정의어 CREATE, ALTER, DROP, TRUNCATE -> ROLLBACK, COMMIT(불가능)
3. DROP
-- 테이블 삭제
DROP TABLE 테이블명
DROP TABLE 부서;
4. 복습
--사원 테이블 생성
--<컬럼명 데이터타입 크기>
--사원번호 숫자 4
--사원이름 가변형문자 50
--직책 가변형 문자 50
--상관번호 숫자 4
--입사일 날짜
--급여 숫자 10
--추가수당 숫자 10
--부서번호 숫자 4
CREATE TABLE 사원 (
사원번호 NUMBER(4),
사원이름 VARCHAR(50),
직책 VARCHAR(50),
상관번호 NUMBER(4),
입사일 DATE,
급여 NUMBER(10),
추가수당 NUMBER(10),
부서번호 NUMBER(4)
);
DESC 사원;
SELECT * FROM 사원;
--사원 테이블에 '비고' 컬럼을 추가
--데이터 타입을 가변문자 10바이트
ALTER TABLE 사원
ADD 비고 VARCHAR(10);
--사원 테이블에 있는 '비고' 컬럼을 '등급'으로 수정
ALTER TABLE 사원
RENAME COLUMN 비고 TO 등급;
ALTER TABLE 사원
RENAME COLUMN 등급 TO 호봉;
-- EMP 테이블에 있는 데이터를 사원테이블에 저장
-- 호봉은 NULL로 채움
INSERT INTO 사원
SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, NULL FROM EMP;
--INSERT INTO 사원(사원번호, 사원이름, 직책, 상관번호, 입사일, 급여, 추가수당, 부서번호)
-- SELECT * FROM EMP;
--사원 테이블에 직책컬럼의 크기를 20으로 수정
ALTER TABLE 사원
MODIFY 직책 VARCHAR(20);
DESC 사원;
--사원 테이블에
--직책이 CLERK는 사무원으로 변경
--직책이 SALESMAN 판매원으로 변경
--직책이 MANAGER 매니저
--직책이 PRESIDENT 사장
--직책이 ANALYST 분석가
UPDATE 사원
SET 직책 = '사무원'
WHERE 직책 = 'CLERK';
UPDATE 사원
SET 직책 = '판매원'
WHERE 직책 = 'SALESMAN';
UPDATE 사원
SET 직책 = '매니저'
WHERE 직책 = 'MANAGER';
UPDATE 사원
SET 직책 = '사장'
WHERE 직책 = 'PRESIDENT';
UPDATE 사원
SET 직책 = '분석가'
WHERE 직책 = 'ANALYST';
SELECT * FROM 사원;
--추가수당이 없는 직원들은 급여의 10%만큼 지급
--사장 제외
UPDATE 사원
SET 추가수당 = 급여 * 0.1
WHERE 직책 != '사장'
AND(추가수당 IS NULL OR 추가수당 = 0);
SELECT * FROM 사원;
--신입사원 받음
--사원번호 : 999
--사원이름 : TIMO
--직책 : 인턴
--입사일 : 오늘
--급여 : 500
--추가수당 : NULL
--부서번호 : 40
--호봉 : NULL
INSERT INTO 사원
VALUES(9999, 'TIMO', '인턴', SYSDATE, 500, '', 40, '');
SELECT * FROM 사원;
--30번 부서에서 진행중인 프로젝트가 망함
--그래서 정리해고진행
--급여가 1500 보다 많이 받는 사람은 해고
--다른사람들은 부서를 40번 부서로 이동
DELETE FROM 사원
WHERE 부서번호 = 30 AND 급여 > 1500;
UPDATE 사원
SET 부서번호 = 40
WHERE 부서번호 = 30;
SELECT * FROM 사원;
728x90
'데이터베이스' 카테고리의 다른 글
오라클 데이터 베이스 제약조건02 (3) | 2023.01.16 |
---|---|
오라클 데이터 베이스 제약조건 (0) | 2023.01.13 |
오라클 데이터 베이스 SELECT, INSERT, UPDATE, DELETE 데이터 조작어 (0) | 2023.01.13 |
오라클 데이터 베이스 DELETE 삭제 (0) | 2023.01.13 |
오라클 데이터 베이스 INSERT 삽입문 (0) | 2023.01.13 |
Comments