본문 바로가기

SQL

(60)
테이블 분해/ 조립 - 조립 실행하기(JOIN) TOPIC 테이블의 데이터의 끝에 AUTHOR_ID라 해서 AUTHOR 테이블의 ID column, 즉. Primary Key값을 AUTHOR_ID에 적어 놓은 것을 알 수 있다. 저렇게 연관된 다른 테이블의 Primary Key 값을 적어놓은 저런 column을 외국인 할때 foreign. Foriegn Key 라고 부른다. 물론 Foriegn Key라는 기능이 있기도 했지만 개념적으로 봤을 때 Foriegn Key라고 부르는 것이다. 그럼 이걸 가지고 어떻게 할 것 인가? TOPIC 테이블을 왼쪽으로 놓고, TOPIC을 기준으로 해서 오른쪽에다가 AUTHOR 테이블을 붙여보려고 하는것이다. 무슨 말일까? 이해가 안간다면 다시 이미지도 그릴 겸 다시 한번 보고 오자 fakegrowthup.tistory..
테이블 분해/조립 - 분해 실행하기 TOPIC 테이블의 AUTHOR_ID의 첫번째 글은 ID가 1인 사용자가 썼고, 두번째도 1이 썼다라고 해주고 commit 버튼을 클릭해야지만 실제로 저장이 된다. ▼ ▼ 그럼 다시 TOPIC 테이블로 돌아가 AHTHOR_ID에 값을 주고 commit을 클릭하여 저장해준다.
테이블의 분해 조립 - 조립하기 표를 분해하기 전의 표는 보기에는 좋지만 수정이나 삭제, 추가작업을 할때는 굉장히 나쁘다. 하지만 표를 분해하면 수정하고 싶으면 해당하는 번호에 참조하고 있는 것이 한번에 바뀌는 폭발적 효과를 얻을 수 있다. 쓰기에는 너무 좋아졌지만, 하지만 보기에는 안좋아졌다. 그렇다면 첫번째 표의 방식은 잘못된 방식인걸까? 아니다. 첫번째 방식은 첫번째 방식대로 읽기가 좋다는 장점이 있고 두번째 방식은 쓰기가 좋다는 장점이 있다는 것이다. 서로 장점과 단점을 달리하는 것들을 합성해서 마치 장점만 존재하는 것이 존재한 것과 같은 환상을 만들어내는것이 공학의 지상 과제이다. 그럼 어떻게하면 알 수 있을까? 그것은 바로 JOIN 이다. JOIN - 결합한다. 즉. 우리가 표를 잘 분리한 다음에 우리의 필요에 따라서 표들을..
Relation(관계형) Relation 관계형 데이터베이스의 정체성을 규정한다고 할 수 있다. 관계형 데이터베이스 첫째. 관계형 데이터베이스는 표라고 하는 형태로 데이터를 다룬다라고 하는 굉장히 혁명적인 측면을 가지고 있다. 두번째. 표를 사용하다보면 표가 비대해질 것이다. 그때, 관계형 데이터베이스를 이용하면 표를 우리의 필요에따라서 잘게 쪼깨기도 하고 또. 우리의 필요에 따라서 쪼개진 표들을 이렇게도 결합하고 저렇게도 결합하는 것을 통해서 실제로는 존재하지 않는 표인데 원래부터 존재하고 있었던 것과 같은 환상적인 표를 만들 수 있다. 라고 하는 마법을 관계형 데이터베이스를 통해서 구사할 수 있다! 만약에 동일한 이름과 직업 등. 동일한 정보를 가지고 있는 각각의 인물들이 있다고 가정을 해보자. 그런데 그 수가 1억, 10억..
SQL Developer
서버와 클라이언트 인터넷이 연결되어 있는 시대인 요즘 오라클이 설치 되어있는 컴퓨터 하나에는 오라클을 설치하고 또 한대의 컴퓨터에는 SQL Plus를 설치해서 인터넷을 통해서 오라클이 설치되어있는 저 컴퓨터에 오라클을 제어할 수 있다면 얼마나 좋을까? 이것을 이해하기 위해서 인터넷에 대해서 개념을 알아야 할 필요가 있다. 인터넷에 연결되어 있는 컴퓨터 한대 한대를 부르는 말이 있다. " HOST " 라고 한다. 그래서 데이터베이스의 host 이름이 뭐냐라고 물어보면 이 데이터베이스가 설치되어 있는 컴퓨터의 ip나 domain을 물어보는 것이라 생각하면 된다. 인터넷을 또 네트워크를 만드는 사람들이 가만히 보니깐 네트워크에 연결되어 있는 컴퓨터 한대한대를 부르는 host라는 표현만으론 좀 부족한거예요. 예를 들면 2대의 컴..
ORACLE(SEQUENCE) CREATE SEQUENCE SEQ_TOPIC; SEQUENC를 이용해서 자동으로 1씩 증가시키는 Primary Key 값을 만들 수 있다. INSERT INTO topic (id,title,description,created) VALUES (4,'MongoDB','MongoDB is...',SYSDATE); SEQUENCE를 이용하지 않으면 id의 값을 넣어줘야하지만 SEQUENCE를 활용하면 다음과 같이 바꿔쓰면 된다. ▼ INSERT INTO topic (id,title,description,created) VALUES (SEQ_TOPIC.NEXTVAL,'MongoDB','MongoDB is...',SYSDATE); VAL은 VALUE 자 그렇다면 한번 이미지를 그려보자! SEQ_TOPIC이라고 하..
ORACLE(PRIMARY KEY) 가지고 있는 topic을 출력해보자. SELECT id, title, created FROM topic; COLUMN은 무슨역할을 하는지 생각해보자 각각의 ID를 식별한다. 다른 말로는 구별 하는 역할을 한다. 즉. COLUMN의 역할은 식별자인 것이다. 식별자가 되기 위해서 가장 중요한 특징은 " 중복되면 안된다" 라는 것 이다. 예를들어, My SQL이라는 title이 갖고 있는 저 행은 ID가 2번인 것을 알 수 있다. 근데 ID가 2번인 또다른 행이 있다면 My SQL이라는 저 행을 찾아내는 것이 대단히 까다로워질 것이다. -> 중복이 생길테니까요! 그래서 식별자의 자격은 중복되면 안된다라는 것이다. 내가 넣으려고 하는 기존의 표에 ID 값이 3인 것이 있냐 없냐를 보려고 한다면 어려운일이다. 그..