l 데이터베이스 개념
한 조직의 여러 응용 시스템에서 공용 할 수 있도록 중복되는 데이터를 최소화하여 통합 / 저장한 운영 데이터 집합을 의미
l 데이터베이스에 저장된 데이터
공용 데이터
통합 데이터
저장 데이터
운영 데이터
l DBMS ( Database Management System )
데이터베이스에서 데이터를 저장/검색/수정하는 데이터베이스 전용 관리프로그램
대표적인 제품으로 Oracle, Microsoft SQL Server, IBM DB2, MySQL
l 데이터베이스 변천 과정
파일
계층형 DB (HDB)
네트워크형 DB (NDB)
관계형 DB (RDB)
객체지향형 DB (OODB)
객체관계형 DB (ORDB)
l 관계형 데이터베이스 (RDB)
모든 데이터를 2차원 테이블 형대토 표현하고, 테이블 사이의 비즈니스적 관계를 도출하는 구조를 가진 데이터베이스 유형
데이터의 중복을 최소화 할 수 있으며, 업무 변화에 대한 적응력이 우수
l 관계형 데이터베이스와 ERD (Entity Relationship Diagram)
비즈니스 수행을 위해 다루어야 할 데이터를 파악하고 그 관계를 표현한것.
구성요소 : Entity, Attribute, Relationship
- 기본키, 외래키가 존재
- 부서가 직원의 부모클래스인 것이고
- 직원에는 기본키가 존재
- 부서에는 직원의 기본키를 참조할 외래키가 존재
l SQL (Structured Query Language)
관계형 데이터베이스에서 데이터를 조회하거나 조작하기 위해 사용하는 표준 검색 언어
원하는 데이터를 찾는 방법(절차)이 아닌 조건을 기술하는 방식 → 어떤 방법으로 데이터를 찾을 것인지는 DBMS가 결정
1. DQL ( Data Query Language ) - SELECT
2. DML ( Data Multipulation Language ) - INSERT, UPDATE, DELETE
3. TCL ( Transaction Control Language ) - COMMIT, ROLLBACK
4. DDL ( Data Definition Language ) - TABLE, SEQUENCE
l 테이블 만들기
CREATE TABLE member(num NUMBER PRIMARY KEY, name VARCHAR2(10), addr VARCHAR2(20));
l row 만들기
INSERT INTO member (num,name,addr) VALUES(1,’김구라’,’노량진’);
INSERT INTO member (num,addr,name) VALUES(2,’행신동’,’해골’);
INSERT INTO member (num,name,addr) VALUES(3,’원숭이’,’상도동’);
INSERT INTO member (num,name) VALUES(4,’주뎅이’);
INSERT INTO member VALUES(5,’덩어리’,’상도동’);
l 테이블 보기
SELECT num,name,addr FROM member;
SELECT * FROM member;
l 테이블 구조 보기
DESC member;
l SELECT 문
SELECT 궁금한 내용 FROM 궁금한내용이 있는 무언가(거의 테이블명) WHERE 조건
l 특정 row 보기
SELECT num,name,addr FROM member WHERE num=1;
SELECT num,name,addr FROM member WHERE num=1;
SELECT num,name,addr FROM member WHERE name=’원숭이’;
l SELECT 문의 전체 구조
5 SELECT 궁금한 내용
1 FROM 테이블명(테이블명 말고 다른게 올수도 있어)
2 WHERE 조건절 (테이블명으로 부터 이 조건이 TRUE 인 조건만 SELECT 됌)
FROM 절에서 특정 ROW 만 추리는 역할
3 GROUP BY 어떤 ROW들로 그룹을 묶고 싶을때
그룹을 묶으면 ROW가 줄어
4 HAVING 그룹으로 묶은 다음에 그룹에 대한 조건을 주고 싶을 때
줄어든 ROW 중에 특정 그룹만 남기고 싶을 때
6 ORDER BY 정렬을 하고 싶을 때
실행 순서
l row 삭제하기
DELETE FROM member WHERE num=5;
l 테이블 삭제하기
DROP TABLE member;
l 업데이트하기
UPDATE member SET addr = ‘아현동’ WHERE num=1;
ex)
Create table member
(
Num numver primarykey,
Name varchar12 not null,
Addr varchar12 not null,
);
Insert into member ( Num, Name, Addr) Values ( 1, ‘이름’, ‘주소’ );
Delete form member where num=1;
Update member set addr=’주소2’ where num=1;
- JOIN
- 하나의 테이블로 원하는 칼럼정보를 참조할수 없는 경우 관련된 테이블을 논리적으로
결합하여 원하는 칼럼 정보를 참조하는 방법을 JOIN 이라고 한다.
[형식]
SELECT 칼럼명1,칼럼명2...
FROM 테이블명1, 테이블명2...
WHERE JOIN 조건 AND 다른 조건 …
JOIN
WHERE emp.deptno = dept.deptno
이게 바로 JOIN 조건
셀렉트 하고 싶은게 여러 개에 나눠져 있을때 사용하는게 JOIN
ANSI JOIN 표현식
조인을 하기 위한 조건을 WHERE 절에 적는 것이 아니라 FROM 다음에 따로 적는 것이
ANSI JOIN
ANSI JOIN
l SELF 조인
참조해야할 칼럼이 자신의 테이블에 있는 경우에 사용하는
JOIN 방법
mgr은 매니저(직속상관)의 사원번호
SMITH의 직속 상관의 이름은 FORD(7902)
BLAKE의 직속 상관의 이름은 KING(7839)
TURNER의 직속 상관의 이름은 BLAKE(7698)
JOIN 조건
→ emp.mgr = emp.empno; OR
→ e1.mgr = e2.empno;
- 각 사원의 이름과 매니져 이름을 출력하세요.
→ JOIN
KING은 대표라서
KING은 매니저의 사번이 없으니 11EA ROW 출력
→ ANSI JOIN
l OUTER JOIN 조인
한쪽 테이블에는 해당하는 데이터가 존재하는데 다른 테이블에는
데니터가 존재하지 않을때에도 모든 데이터를 추출하도록 하는
JOIN 방법
사원번호,부서번호,부서명을 출력하세요
단, 사원이 근무하지 않는 부서명도 같이 출력해보세요.
부족한 곳에다가 +를 붙여
1. DQL ( Data Query Language ) - SELECT
2. DML ( Data Multipulation Language ) - INSERT, UPDATE, DELETE
3. TCL ( Transaction Control Language ) - COMMIT, ROLLBACK
4. DCL ( Data Control Language ) - GRANT, REVOKE
5. DDL ( Data Definition Language ) - TABLE, SEQUENCE
l TCL ( Transaction Control Language )
- DML 문이 실행되어 DBMS 에 저장되거나 되돌리기 위해 실행되는 SQL 문
1 ) 트랜잭션
- 분리되어서는 안되는 논리적 작업단위
ex) 자신의 통장에서 타인에게 송금한다고 가정을 한다면
<-- 트랜잭션의 시작 -->
- 내통장에서 금액이 빠져 나간다.
- 수취인 통장에 돈이 입금된다.
<-- 트랜잭션의 끝-->
(1) 트랜잭션의 시작
- DBMS 에 처음 접속 하였을때
- DML 작업을 한후 COMMIT 혹은 ROLLBACK 을 실행했을때
(2) 끝
-COMMIT 이나 ROLLBACK 이 실행되는 순간
-DB 가 정상/ 비정상 종료될 때
-작업 (세션을 종료할때)
(3) TCL 의 종류
-COMMIT : SQL 문의 결과를 영구적으로 DB 에 반영
-ROLLBACK : SQL 문의 실행결과를 취소할 때
-SAVEPOINT : 트랜젝션의 한지점에 표시하는 임시 저장점
예)
SQL> INSERT INTO member VALUES( 4, 'AAA','BBB');
SQL> SAVEPOINT myPoint;
SQL> INSERT INTO member VALUES( 5, 'bbb','BBB');
SQL> INSERT INTO member VALUES( 6, 'ccc','BBB');
SQL> ROLLBACK TO
l DCL ( Data Control Language )
- 데이터 베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령어
(1) GRANT : 사용자에게 권한을 부여할 때
ex)
SQL> GRANT RESOURCE,CONNECT TO 사용자 아이디;
(2) REVOKE : 사용자에게 권한 부여한 것 취소
ex)
SQL> REVOKE all on 디비명.테이블명 from 사용자;
l DDL (Data Definition Language)
-데이터 베이스 내의 객체( 테이블, 시퀀스 , ...) 등을 생성
하고 변경하고 삭제하기 위해서 사용되는 SQL 문
(1)CREATE : 객체를 생성할때
ex) 일반적인 테이블 생성
SQL> CREATE TABLE test(num NUMBER, name VARCHAR2(20)); --테이블 생성
-참고-
SQL> DESC test ; - - 테이블 구조 보기
(2)ALTER : 객체를 변경할때
ex)
SQL> ALTER TABLE test_board RENAME TO example_board; -- 테이블 이름변경
(3)DROP : 객체를 삭제 할때
SQL> DROP TABLE dept2;
SQL> DROP TABLE dept3;
SQL> DROP TABLE dept4;
SQL> DROP TABLE simple;
l 제약조건 (Constraint)
- 테이블의 해당 칼럼에 원하지 않는 데이터를 입력/수정/삭제 되는 것을 방지 하기
위해 테이블 생성 또는 변경시 설정하는 조건이다.(저장된 데이터의 신뢰성을 높이기 위해)
1 ) 종류
(1)NOT NULL : NULL 로 입력이 되어서는 안되는 칼럼에 부여하는 조건으로
칼럼 레벨에서 만 부여할수 있는 제약조건이다.
(2)UNIQUE KEY (유일키) : 저장된 값이 중복되지 않고 오직 유일하게 유지되어야
할때 사용하는 제약조건이다. (NULL 은 허용된다)
(3)PRIMARY KEY (대표키) : NOT NULL 조건과 UNIQUE KEY 를 합친 조건이다.
(4)CHECK : 조건에 맞는 데이터만 입력되도록 조건을 부여하는 제약 조건
(5)FOREIGN KEY (외래키) : 부모 테이블의 PRIMARY KEY 를 참조하는 칼럼에
붙이는 제약조건 이다(예 emp 테이블의 deptno 칼럼)
2) 제약조건 (예제)
SQL> CREATE TABLE dept2
(deptno NUMBER(2) CONSTRAINT dept2_deptno_pk PRIMARY KEY,
dname VARCHAR2(15) DEFAULT '영업부',
loc CHAR(1) CONSTRAINT dept2_loc_ck CHECK( loc IN( '1' , '2') ) );
*** CONSTRAINT 와 제약 조건명은 생략이 가능하다(칼럼 레벨일때)
SQL> CREATE TABLE dept3
(deptno NUMBER(2) PRIMARY KEY,
dname VARCHAR2(15) DEFAULT '영업부',
loc CHAR(1) CHECK( loc IN( '1' , '2') ) );
*** 외래키를 만들기 위해서는 부모 테이블을 먼저 만들어야한다.
SQL> CREATE TABLE dept2(
deptno NUMBER(2) PRIMARY KEY,
dname VARCHAR2(15) NOT NULL);
SQL> CREATE TABLE emp2(
empno NUMBER(4) PRIMARY KEY,
ename VARCHAR2(15) NOT NULL,
deptno NUMBER(2) REFERENCES dept2(deptno) );
'Back-End > PostgreSQL' 카테고리의 다른 글
[ PostgreSQL ] tsv 파일 DB에 copy 하는 방법 (로컬) (0) | 2020.11.10 |
---|---|
[ PostgreSQL ] tsv 파일 DB에 copy 하는 방법 (리눅스 서버) (0) | 2020.11.06 |
Postgresql 현재 접속해 있는 IP 및 DB 명 확인 쿼리 (0) | 2020.04.11 |
Postgresql 테이블 컬럼 수정 (2) | 2019.04.10 |
테이블 3개 LEFT OUTER JOIN (0) | 2018.11.06 |