728x90
반응형
2021-0610-01)
사업장 테이블과 근무테이블을 생성하시오
** 사업장테이블
테이블명 : SITE
------------------------------------------------------
컬럼명 데이터타입 크기 NULLABLE PK or FK
------------------------------------------------------
SITE_ID CHAR 10 N.N PK
SITE_NAME VARCHAR2 30
SITE_ADDR VARCHAR2 100
SITE_TEL VARCHAR2 20
REMARKS VARCHAR2 100
------------------------------------------------------
CREATE TABLE SITE( -- SITE 테이블 생성
-- 컬럼 생성 및 데이터타입(크기) 지정
SITE_ID CHAR(10), -- PK : 중복X, NULL값이 있으면 안됨 NOT NULL 안적어도 자동으로 생성 CHAR : 고정길이
SITE_NAME VARCHAR2(30), -- VARCHAR2 : 사용자가 사용한 만큼만 사용, 나머지는 자원 활용 4000byte까지 가능
SITE_ADDR VARCHAR2(100),
SITE_TEL VARCHAR2(20), -- DATA가 크기보다 클경우 저장X
REMARKS VARCHAR2(100),
-- 기본키(PRIMARY KEY), 외래키(FOREIGN KEY) 사용
CONSTRAINT pk_site PRIMARY KEY(SITE_ID)
);
테이블명 : WORK
------------------------------------------------------
컬럼명 데이터타입 크기 NULLABLE PK or FK
------------------------------------------------------
SITE_ID CHAR 10 N.N PK / FK
EMP_ID CHAR 4 N.N PK / FK
IN_DATE DATE
------------------------------------------------------
CREATE TABLE WORK( -- WORK 테이블 생성
-- 컬럼 생성 및 데이터타입(크기) 지정
SITE_ID CHAR(10),
EMP_ID CHAR(4),
IN_DATE DATE,
-- 제약사항 : 기본키(PRIMARY KEY), 외래키(FOREIGN KEY) 설정
CONSTRAINT pk_work PRIMARY KEY(SITE_ID, EMP_ID), -- 기본키 설정
CONSTRAINT fk_work_site FOREIGN KEY(SITE_ID) -- 외래키 설정
REFERENCES SITE(SITE_ID), -- SITE 테이블에 있는 SITE_ID
CONSTRAINT fk_work_emp FOREIGN KEY(EMP_ID) -- 외래키 설정
REFERENCES EMP(EMP_ID) -- EMP 테이블에 있는 EMP_ID
);
2021-0610-02)
1) INSERT 문 -- UPDATE, DELETE 사용 시 데이터가 있어야함
- 테이블에 자료를 추가 저장하는 명령
- MERGE
(사용형식)
INSERT INTO 테이블명[(컬럼명1, [컬럼명2, ..., 컬럼명n])] -- 컬럼 리스트 생략 가능 사용자가 기술하지 않을 시 NULL 값이 들어감
VALUES(값1[, 값2, ..., 값n]) -- 컬럼의 순서, 개수, 타입에 맞춰야 함(컬럼명을 안 쓸 때 규칙)
- 테이블명 : 데이터를 저장하는 테이블명
- '(컬럼명1, [컬럼명2, ..., 컬럼명n])' : 생략 가능, 생략하면 테이블 생성시 기술한 순서대로 모든 값을 VALUES절에 기술
- '컬럼명1' 등을 기술하는 경우 : 필요한 자료만 입력, 단 컬럼제약사항이 NOT NULL인 경우 컬럼명을 생략할 수 없음
사용예시) 부서테이블(DEPT)에 다음 자료를 입력하시오.
---------------------------------
부서번호 부서명
---------------------------------
10 총무부
20 회계부
30 영업부
40 배송부
50 자재부
---------------------------------
INSERT INTO DEPT
VALUES(10, '총무부');
INSERT INTO DEPT
VALUES(20, '회계부');
INSERT INTO DEPT
VALUES(30, '영업부');
INSERT INTO DEPT
VALUES(40, '배송부');
INSERT INTO DEPT
VALUES(50, '자재부');
SELECT * -- 모든 행 조회
FROM DEPT;
사용예시) 사원테이블(EMP)에 다음 자료를 입력하시오.
--------------------------------------------
사원번호 사원명 직무명 부서코드
--------------------------------------------
E001 홍길동 40
E002 강감찬 구매 10
E003 이성계 인사 70
--------------------------------------------
INSERT INTO EMP(EMP_ID, EMP_NAME, DEPT_ID) -- 값 삽입
VALUES('E001', '홍길동', 40);
INSERT INTO EMP(EMP_ID, EMP_NAME, EMP_JOB, DEPT_ID) -- 값 삽입
VALUES('E002', '강감찬', '구매', 40);
UPDATE EMP -- 값 내용 수정
SET DEPT_ID = 10
WHERE EMP_ID = 'E002';
INSERT INTO EMP -- 값 삽입
VALUES('E003', '', '구매', 10);
DELETE EMP -- 값 삭제
WHERE EMP_ID = 'E003';
INSERT INTO EMP -- 값 삽입
VALUES('E003', '이성계', '인사', 10);
SELECT * -- 모든 행 조회
FROM EMP;
사용예시) 다음과 같이 사업장 정보를 입력하시오.
---------------------------------------------------------------------------
사업장번호 이름 주소 전화번호 비고
---------------------------------------------------------------------------
A020201201 나라초등학교 신축 대전시 중구 대흥동
C120210607 S-CITY 신축 대구시 달성구 052-999-0001
---------------------------------------------------------------------------
INSERT INTO SITE
VALUES ('A020201201','나라초등학교 신축','대전시 중구 대흥동','',NULL);
INSERT INTO SITE(SITE_ID, SITE_NAME, SITE_ADDR, SITE_TEL)
VALUES ('C120210607','S-CITY 신축','대구시 달성구 ','052-999-0001');
SELECT * -- 모든 행 조회
FROM SITE;
사용예시) 근무테이블에 다음 자료를 입력하시오.
---------------------------------------------
사업장번호 사원번호 투입일
---------------------------------------------
C120210607 E002 2020-12-10
C120210607 E001 오늘
A020201201 E003 2001-02-29
---------------------------------------------
INSERT INTO WORK
VALUES('C120210607','E002','20201210'); -- 날짜 자동 변환(AUTO CASTING)
INSERT INTO WORK
VALUES('C120210607','E001',SYSDATE); -- SYSDATE : 오늘 날짜
INSERT INTO WORK
VALUES('A020201201','E003','20010228');
SELECT * FROM WORK;
예시) S-CITY에 근무하는 사원정보 조회(사원번호, 사원명, 투입일) : JOIN
SELECT A.EMP_ID AS 사원번호,
A.EMP_NAME AS 사원명,
TO_CHAR(B.IN_DATE,'YYYY-MM-DD') AS 투입일
FROM EMP A, WORK B, SITE C
WHERE A.EMP_ID = B.EMP_ID
AND B.SITE_ID = C.SITE_ID
AND C.SITE_NAME LIKE 'S-CITY%'
ORDER BY 1;
-- DROP : TABLE 지우기
DROP TABLE DEPT; -- 오류 보고 - ORA-02449: unique/primary keys in table referenced by foreign keys : 참조되어있는 외래키가 있어 어쩌구 웅앵
DROP TABLE WORK;
ALTER TABLE EMP
DROP CONSTRAINT FK_EMP_DEPT; -- 오류 보고 - ORA-00950: invalid DROP option : ALTER문 써야됨~!!!!!!!!!!
DROP TABLE EMP; -- DROP는 복구 불가능.
DROP TABLE SITE;
DROP TABLE DEPT;
2021-0610-03) 데이터 타입
- 오라클에서 사용하는 자료형
└ 문자, 숫자, 날짜, 2진자료형(binary)이 있음 -- ~ : 틸드, @ : at, & : 앤퍼센드 , * : 아스틱스, ^ : 거듭제곱시 사용
1. 문자열 자료형
가. ' '로 묶인 자료
나. CHAR, VARCHAR, VARCHAR2, NVARCHAR2, NCHAR, LONG, RAW, CLOB
1) CHAR : 고정길이 문자열을 저장 -- 고정적인 문자에 사용, 자주 사용
가) : 2000BYTE 까지 저장가능(한글 한 글자는 3BYTE)
나) 기억공간이 남으면 왼쪽에 공백이 삽입
다) 주로 기본키 정의에 사용
(사용형식)
컬럼명 CHAR(n [BYTE|CHAR])
- n : 기억공간의 크기
- BYTE|CHAR : n이 BYTE인지 문자의 갯수를 나타내는지 설정. 기본값은 BYTE
ex) ABC CHAR(2000 CHAR) -- 영어 기준 2000byte 들어가며, 한글로 입력 시 666글자까지 가능 초과 시 오류
사용예)
CREATE TABLE TEMP01(
COL1 CHAR(20), -- 20글자 중 12칸 남음
COL2 CHAR(20 BYTE), -- 20BYTE 중 10칸 남음
COL3 CHAR(20 CHAR) -- 20CHAR 중 33BYTE 사용 7BYTE 남음 CHAR : 2BYTE
);
INSERT INTO TEMP01
VALUES('IL POSTI', 'IL POSTINO', '무궁화 꽃이 피었습니다.');
SELECT * FROM TEMP01;
- VARCHAR2 : 가변길이 문자 자료형(=VARCHAR) !!! -- 주로 사용
- NVARCHAR2, NCHAR : 다국어 지원가능 하도록 변환하여 유니코드 형식으로 사용 가능 EX) UTF-8
- LONG : 2GB 자료를 저장할 수 있는 데이터 자료형
- RAW : 대용량 컬럼을 정리함, 성능 개선X
- CLOB : 대용량 문자 자료형 4GB까지 사용 가능 !!! -- 주로 사용
728x90
반응형
댓글