Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- Java
- Linux
- Hook
- Android
- stylesheet
- GoogleMaps
- 리액트
- npm
- 랜덤넘버
- RecyclerView
- 오버라이딩
- TextView
- React
- 스프링부트
- Javscript
- 자바스크립트
- array
- TypeScript
- SpringBoot
- 구글맵스
- scrollview
- button
- JavaScript
- 코틀린
- 랜덤번호
- Kotlin
- JS
- nodejs
- fragment
- 안드로이드
Archives
- Today
- Total
타닥타닥 개발자의 일상
오라클 테이블 작성과 내용 삽입, 삭제, 조회, 수정하기 insert, delete, select, update / 다른 테이블 참조할수 있도록 기본키, 외래키 이용해 테이블 작성하기 Foreign Key , Unique Key, Primary Key 본문
코딩 기록/Oracle(SQL develpoer)
오라클 테이블 작성과 내용 삽입, 삭제, 조회, 수정하기 insert, delete, select, update / 다른 테이블 참조할수 있도록 기본키, 외래키 이용해 테이블 작성하기 Foreign Key , Unique Key, Primary Key
NomadHaven 2021. 12. 24. 22:05
Table : 기본적인 저장 단위
Row(행), Column(열)
Table - TableSpace - Data File
table - object
테이블 생성(create) / 테이블 삭제 (drop) / 테이블 수정 (alter)
data -
데이터 삽입(insert) / 데이터 삭제 (delete) / 데이터 조회 (select) / 데이터 수정 (update)
테이블 생성하기
CREATE TABLE TB_TEST01(
COL1 VARCHAR2(10),
COL2 VARCHAR2(10),
COL3 VARCHAR2(10)
);
CREATE TABLE TB_TEST02(
COL1 VARCHAR2(10),
COL2 VARCHAR2(10),
COL3 VARCHAR2(10)
)
TABLESPACE TABLESPACE1;
테이블 복제의 두가지 방법
1: 복제한 테이블의 데이터를 포함해서 복제
2: 복제한 테이블의 데이터는 제외하고 복제
1) Table 복제 : 데이터 포함
CREATE TABLE TB_TEST03
AS
SELECT employee_id, first_name, salary
FROM employees;
2) Table 복제 : 데이터 미포함
CREATE TABLE TB_TEST04
AS
SELECT *
FROM employees
WHERE 1 = 2; -- 성립되지 않는 조건을 작성
2-1) Table 복제 : 데이터 미포함
CREATE TABLE TB_TEST04( empno, name, money )
AS
SELECT employee_id, first_name, salary
FROM employees
WHERE 1 = 2;
테이블 삭제하기
DROP TABLE TB_TEST03;
DROP TABLE TB_TEST04;
PURGE RECYCLEBIN; <-삭제된 테이블이 담긴 휴지통 비우기
테이블 수정하기 RENAME, ADD, MODIFY, DROP
테이블 수정 : 테이블 명
ALTER TABLE TB_TEST04
RENAME TO TB_TEST99;
테이블 수정 : 컬럼추가
ALTER TABLE TB_TEST99
ADD
DEPTNAME NUMBER(3);
테이블 수정 : 컬럼수정
ALTER TABLE TB_TEST99
MODIFY
DEPTNAME VARCHAR(20);
테이블 수정 : 컬럼삭제
ALTER TABLE TB_TEST99
DROP
COLUMN DEPTNAME;
위의 정리를 활용해서 부서 정보 담은 테이블 만들고 원하는 정보 삽입, 저장해보기
CREATE TABLE DEFT(DEPTNO, DNAME, MGR, LOC)
AS
SELECT department_id, department_name, manager_id, location_id
FROM departments
WHERE 1=2;
-- insert
INSERT INTO deft(deptno, dname, mgr, loc)
VALUES(10, '기획부', 100, 123);
INSERT INTO deft(deptno, dname)
VALUES(20, '관리부');
INSERT INTO deft
VALUES(30, 'IT부', 333, 234);
INSERT INTO deft(dname, deptno, mgr, loc)
VALUES('경리부', 40, 200, 345);
INSERT INTO deft -- not enough values
VALUES(30, 'IT부', 333);
INSERT INTO deft(deptno, dname, mgr, loc)
VALUES('40', '영업부', '400', '678');
INSERT INTO deft(deptno, dname, mgr, loc) -- ok
VALUES(40, 100, 400, 678);
INSERT INTO deft(deptno, dname, mgr, loc) -- column not allowed here
VALUES(40, "영업부", 400, 678);
-- delete
DELETE
FROM deft
WHERE dname = '100';
DELETE
FROM deft
WHERE mgr IS NULL;
-- update
UPDATE deft
SET mgr = 300
WHERE deptno = 30;
UPDATE deft
SET deptno = 50, mgr = 500
WHERE dname = '영업부';
무결성 : Constraint
Column을 지정하는 성질
Primary Key : 기본키. NULL(빈칸)을 허용하지 않는다. 중복을 허용하지 않는다. EX )id, 주민번호
Unique Key : 고유키. NULL(빈칸)을 허용한다. 중복을 허용하지 않는다. EX) email
Foreign Key : 외래키. 테이블과 테이블을 연결하는 목적의 성질이다.
Employees(외래키:department_id) Departments(기본키:department_id)
외래키로 설정된 컬럼은 PK나 UK로 설정되어 있어야 한다.
CHECK : 범위를 지정, 지정된 값외에 NULL을 사용한다.
NOT NULL : NULL을 허용하지 않는다. (빈칸을 허용하지 않음)
테이블 만들고 COLUMN에 NOT NULL 설정하기
CREATE TABLE TB_TEST1(
COL1 VARCHAR2(10) NOT NULL,
COL2 VARCHAR2(20)
);
INSERT INTO tb_test1(col1, col2)
VALUES('AAA', '111');
INSERT INTO tb_test1(col1)
VALUES('BBB');
INSERT INTO tb_test1(col2)
VALUES('111');
INSERT INTO tb_test1(col1, col2) -- COL1에는 NULL값이 들어가면 안되므로 허용안됨
VALUES('', '222');
기본키(Primary Key) = Unique + NOT NULL
기본키 COLUMN에 적용하기
CREATE TABLE tb_test1(
PKCOL VARCHAR2(10) CONSTRAINT PK_TEST_01 PRIMARY KEY,
COL1 VARCHAR2(20),
COL2 VARCHAR2(20)
);
INSERT INTO tb_test1(pkcol, col1, col2)
VALUES('AAA', '111', 'aaa');
INSERT INTO tb_test1(pkcol)
VALUES('BBB');
INSERT INTO tb_test1(pkcol, col1, col2)
VALUES('CCC', '222', 'bbb');
INSERT INTO tb_test1(pkcol, col1, col2)
VALUES('', '222', 'bbb');
INSERT INTO tb_test1(col1, col2)
VALUES('222', 'bbb');
DROP TABLE tb_test1
CASCADE CONSTRAINTS;
*CASCADE CONSTRAINTS;
기본키의 특성마저 삭제하겠다는 말
고유키(UNIQUE KEY): 중복된 값은 입력불가(=PK), NULL을 허용
CHECK: 입력될 값의 형식을 제한하는 명령
CREATE TABLE tb_test1(
UKCOL VARCHAR2(10) CONSTRAINT UK_TEST_01 UNIQUE,
COL1 VARCHAR2(20),
COL2 VARCHAR2(20)
);
INSERT INTO tb_test1(UKCOL, COL1, COL2)
VALUES('AAA', '111', 'aaa');
INSERT INTO tb_test1(COL1, COL2)
VALUES('111', 'aaa');
-- CHECK : 지정된 값만 허용. NULL을 허용.
CREATE TABLE TB_CHECK(
COL1 VARCHAR2(10),
COL2 VARCHAR2(20),
CONSTRAINT CHK_01 CHECK( COL1 IN('사과', '배', '바나나') ),
CONSTRAINT CHK_02 CHECK( COL2 > 0 AND COL2 <= 10 )
);
INSERT INTO TB_CHECK(COL1, COL2)
VALUES('사과', 5);
INSERT INTO TB_CHECK(COL1)
VALUES('배');
INSERT INTO TB_CHECK(COL2)
VALUES(10);
INSERT INTO TB_CHECK(COL1, COL2) -- 오류 발생
VALUES('포도', 5);
INSERT INTO TB_CHECK(COL1, COL2) -- 오류발생
VALUES('사과', 0);
UK, PK 삭제가 필요한 경우
ALTER TABLE tb_test1
DROP
CONSTRAINT UK_TEST_01;
FOREIGN KEY : 외래키
부모테이블, 자식테이블을 연결하는 목적
PK, UK로 설정되어 있어야 한다.
NULL을 허용
기본키와 외래키를 사용한 입력예시
DROP TABLE TB_DEPT
CASCADE CONSTRAINTS;
CREATE TABLE TB_DEPT(
DEPARTMENT_ID VARCHAR2(10),
DEPARTMENT_NAME VARCHAR2(20),
LOCATION_ID NUMBER,
CONSTRAINT PK_DEPT_TEST PRIMARY KEY(DEPARTMENT_ID)
);
INSERT INTO TB_DEPT(DEPARTMENT_ID, DEPARTMENT_NAME, LOCATION_ID)
VALUES('10', '기획부', 100);
INSERT INTO TB_DEPT(DEPARTMENT_ID, DEPARTMENT_NAME, LOCATION_ID)
VALUES('20', '영업부', 200);
INSERT INTO TB_DEPT(DEPARTMENT_ID, DEPARTMENT_NAME, LOCATION_ID)
VALUES('30', '개발부', 300);
DROP TABLE TB_EMP
CASCADE CONSTRAINTS;
CREATE TABLE TB_EMP(
EMPNO VARCHAR2(10),
ENAME VARCHAR2(20),
DEPARTMENT_ID VARCHAR2(10),
CONSTRAINT FK_EMP_TEST FOREIGN KEY(DEPARTMENT_ID) REFERENCES TB_DEPT(DEPARTMENT_ID)
);
INSERT INTO TB_EMP(EMPNO, ENAME, DEPARTMENT_ID)
VALUES(1, '홍길동', '10');
INSERT INTO TB_EMP(EMPNO, ENAME, DEPARTMENT_ID)
VALUES(2, '성춘향', '30');
INSERT INTO TB_EMP(EMPNO, ENAME, DEPARTMENT_ID) -- 부모 테이블에 등록된 값이 없다
VALUES(3, '홍두께', '40');
INSERT INTO TB_EMP(EMPNO, ENAME, DEPARTMENT_ID)
VALUES(3, '일지매', '');
INSERT INTO TB_EMP(EMPNO, ENAME)
VALUES(4, '정수동');
'코딩 기록 > Oracle(SQL develpoer)' 카테고리의 다른 글
오라클로 상품, 고객정보 테이블 작성하고 원하는 자료 출력하는 연습문제 / COLUMN 2개를 외래키(FOREIGN KEY)로 지정하여 문제 풀기 (0) | 2021.12.24 |
---|---|
오라클 / JOIN 과 SUBQUERY를 이용한 원하는 정보 출력 연습문제 (1~11) (0) | 2021.12.24 |
오라클로 팀, 소속선수 테이블 만들고 조인하여 원하는 자료 출력하는 문제 풀기 (0) | 2021.12.24 |
오라클 JOIN을 이용한 연습문제 풀이 1~11번 (0) | 2021.12.23 |
오라클 oracle / round, sum, to_char, to_date min, max, having, group 이용한 연습 문제 풀이 1~19번 (0) | 2021.12.23 |
Comments