SQL이란?(2)- Oracle 다운로드 and 설치와, VSC에서 ERD editor 사용 +(데이터 딕셔너리)
1. Oracle SQL 다운로드 & 설치
① 먼저 오라클 홈페이지에 가서 SQL developer을 다운 받아야 한다.
주소 : https://www.oracle.com/database/sqldeveloper/
② 윈도우 버전을 다운 받는다.
③ 다운받은 폴더를 압축풀어 들어가보면 SQL developer 실행프로그램을 확인할 수 있다.
(바탕화면으로 바로가기 생성!)
④ 실행을 시키고 서버에 접속을 해야한다.
(로그인은 서버 관리자가 허가를 해줘야 하는데, 나 같은 경우는 강사님이 설정해주신대로 접속하였다. 아이이디, 비밀번호, 호스트 이름과 포트를 설정한후 테스트를 눌러 "성공"이 뜨면 접속이 되었다.)
이렇게 하면 SQL 쿼리문을 작성할 수 있는 준비단계가 끝아났다. 말로 길게 설명 하는 것 보다 사진으로 요약하는게 좀더 보기 편하거같다.
2. VSC 는 무엇인가?
갑자기 SQL 글을 쓰다 먼 VSC같은 소리라고 할 수 있는데, 강사님께서 SQL을 설치할때 VSC도같이 다운로드를 받게 하셨다. 그리고 지금 어느정도 SQL 문법을 배우고 elcipse와 연동시키는 작업을 수행하니 VSC가 얼마나 유용한 에디터인지 새삼 알게되었다.
(V)isual (S)tudio (C)ode, 줄여서 VSC는 코드 에디터 프로그램이다. (V)isual (S)tudio랑은 다른 프로그램이다. Visual Studio는 Microsoft에서 배포한 멀티플랫폼 개발 프로그램이며(IDE) 유료인데 반해, Visual Studio Code는 개발 프로그램이기 보다는 편집을 도와주는 프로그램이다.
(I)ntegrated (D)evelopment (E)nvironment, 말그대로 통합 개발 환경을 말한다. 개발자들 사이에서 "어떤 개발환경 쓰세요?"라는 대화가 오고간다고 한다. 개발자가 프로그램을 짤때 좀 더 편하게 도와주는 기능들을 모아놓은 도구들을 모아놓안 유용한 툴이라고 생각하면 될거같다.
2-1. VSC의 장점
① MS가 관리하고 업데이트 하므로 정형화 된 서비스를 오랫동안 사용할 수 있는 프로그램이다.
② VS Code는 내부의 수 많은 개발자들을 이용해 직접 제작한 확장팩을 제공하고 있어, 사용자들에게 편리함을 제공해준다.
③ 깔끔하고 보기 편한 디자인
④ 기본으로 제공되는 충분한 기능
⑤ 잘못된 문법을 잡아주는 강력한 CSS 유효성 체크 기능
⑥ 다른 IDE들과 비교했을때 비교적 안정성과 괜찮은 속도.
2-2. VSC의 단점
크게 단점이 있는것 같지가 않다. 추후에 쓰면서 단점을 발견한다면 그때 수정할수 있도록 해야겠다.
2-3. VSC 화면 & 확장팩
File → open file forld를 통해 기존에 이클립스나 웹파일등을 열어보면 이렇게 코드가 쫙 뜬다. 코드 에디터 답게 다양한 기능이 내포 되어있고, 확장팩(EXTENSIONS)을 다운하게되면 더욱 편리한 기능들을 사용할 수 있게된다. 그중에서 강사님이 수업중에 사용하신 몇가지 확장팩을 다운 받았다.
JAVA 관련해서 필요한 확장팩 모음집과...
여러 유용한기능을 가지고 있는 라이브러리 Lombok의 확장팩도 받고
마지막으로 ERD editor까지 총 3개(자바모음까지 합하면 8개)의 확장팩을 Install했다. 근데 ERD는 처음보는 용어이기에 설명을 하고 넘어가야할 거 같다.
3. ERD 는 무엇인가?
Entity Relationship Diagram, 풀이해보면 "개체관계도" ,"도면요소 관계도"라고 번역되어지는데 위키백과에서는 "구조화된 데이터에 대한 일련의 표현" 라고 설명해놓았다. 약간 어렵게 느껴지는거 같긴 하지만, 쉽게 말하면 설계도를 그린다고 생각하면된다. 말보다는 그림으로 설명하는게 더 이해하기 쉬울거 같다.
3-1. ERD Editor 사용하기
1. 먼저 이 vuerd.json 파일을 생성해야 한다. 그림과 같이 순서대로 VSC에서 new file을 만들어 진행하면된다. (파일 생성후 → ERD 아이콘 클릭)
" 반드시 파일 이름을 vuerd.json 으로 만들어 주어야한다 "
이 그림을 보면 단번에 이해할 수 있다고 생각한다. ERD란 내가 만든 테이블간의 관계를 설계하는것이라고 보면 된다.
3-2. 테이블 생성
① 먼저 빈 화면에서 사용할 데이터베이스를 선택한다.(나는 Oracle을 체크했다.)
② New Table을 클릭해서 테이블을 만든다
③ + 를 눌러 column항목을 생성할 수 있다.
④ 각 항목들의 값을 입력한다.(테이블명, column명, 타입명등...)
SQL 테이블에 들어가는 데이터들은 다양한 타입을 가지는데 모든 타입을 설명하기는 많아 자주쓰는 몇개만 기록하기로 한다. 내용은 구글에서 검색한 그대로 가져왔다. 정처기 자격증 시험서에도 자주 나오는 문제여서그런지 설명들이 다 비슷했다. 적어 놓은 타입 이외에도 몇몇 타입들이 더 존재한다.(검색을 해보시면....)
1. 문자형 데이터 타입
- CHAR : 고정 길이 문자열(최대 2000 BYTE) - 알파벳 A,B등 보통 문자 하나를 입력할 때 쓰인다.
- VARCHAR2 : 가변 길이 문자열 (최대 4000BYTE) - 가장 많이 쓰는 타입으로 대부분 엄청 긴문장을 제외 하고는 이친구를 쓴다.
* 가별 길이 : 필요한 만큼의 저장 공간만 차지하여 저장되는 데이터. 공간을 절약할 수 있다는 장점
- CLOB : 대용량 텍스트 문자열(최대 4GBYTE) - 아주 긴 문장을 입력할 때 쓰인다.
2. 숫자형 데이터 타입
- NUMBER(p,s) : P: 1~38자리,디폴트 값은 38 (22BYTE) , S: 소수점 이하 자리 (디폴트 : 0)
- 보통 숫자 타입으로 가장 많이 쓰이는 친구 (가변형이다.)
3. 날짜형 데이터 타입
- DATE : 고정길이 날짜 데이터 타입. (현재 날짜를 보여준다.)
- TIMESTAMP : 현재 날짜와 시간을 나타내는 데이터 타입. (밀리초(ms)까지 보여준다.)
4. 이진 데이터 타입
- RAW : 가변길이 이진 데이터 타입(최대 2Gbyte)
- LONGRAW : 가변길이 이진 데이터 타입(최대 4Gbyte)
⑤ 이렇게 기본키(고유키)와 컬러도 선택해서 넣을 수 있다.
⑥ Relationship을 이용하여 관련있는 테이블들을 연결시킬 수 있다. (1대1 혹은 1대 N...)
기본키(Primary Key) : 또 다른 말은 "고유키" , 데이터베이스 테이블 내의 모든 행에게 고유한 아이디를 제공해준다. 즉 하나의 테이블에서 각 행의 데이터를 확인하는데 사용되는 "유일한 값"이다.
외래키(Foreign Key) : 두 테이블을 이어주는 "연결다리" 라고 정의하는게 가장 맞는표현같다. 우리는 두 테이블을 연관시켜 설계도를 그리는데 이때 두 테이블간에 분명 중복되는 데이터가 존재할 것이다. 그림으로 예를들어 설명하면...

동물의 종류와 여러 동물들간의 관계를 나타내고 싶을때 우리는 기본키와 외래키를 이용하여 관계를 맺게 할 수 있다. 위 그림에서 두 테이블간에 "종류"는 중복되는 컬럼이다. 그렇기에 굳이 animal 테이블에서 다시 종류 컬럼을 만들지 않고 a kind of animal 테이블에 있는 데이터를 가져오면된다.
이러면 a kind of animal 테이블은 "부모 테이블"이 되고, animal 테이블은 "자식테이블"이 된다. 이러한 설계 과정이 두 테이블이 관계를 맺고 제약조건을 가지도록 하는 것이다.
제약조건에 의해 animal 테이블에 데이터를 넣기 위해서는, a kind of animal 테이블의 기본키인 "종류"가 필히 들어가야한다. 이러면 두 테이블간의 관계가 형성된것이다.
⑦ 마지막으로 이렇게 만들어진 테이블들은 SQL 쿼리문으로 테이블을 하나하나 생성하지 않아도, 앞서 넣었던 값들을 토대로 테이블 생성 쿼리문을 자동으로 만들어줌으로 그대로 가져다 쓸 수 있다.
※ 실수한 부분을 발견했다!!
숫자타입이나 문자타입은 값의 범위를 적어줘야하는데, 그중에서도 문자타입은 특히 값의 범위를 적어줘야한다.
VARCHAR2 → VARCHAR2 (10) : 이런식으로 ( ) 안에 범위를 지정해줘야한다.
SQL뿐만 아니라 다른 개발 언어와 프로그램에서도 사용자가 쉽게 개발 하고 수정할 수 있도록 기능들을 만들어 놓았다.
3-3. 데이터 딕셔너리
위처럼 ERD 설계도는 VSC를 쓰는게 가장 편하지만 SQL 안에서도 데이터들간의 관계를 설계도로 나타낼수 있는 "데이터 딕셔너리" 라는 기능이 존재한다.
이렇게 SQL내에서도 설계도를 구현해 낼 수있다. 둘의 용도가 다르지만 ERD설계만 놓고 봤을때 VSC가 시각적으로나 편리성으로나 좋아보인다. (비교하는게 딱히 의미가 없는거 같지만...) 오늘은 여기까지 적고 다음글에서는 본격적으로 SQL쿼리문을 작성해보려고 한다. 다시 한번 더 복습한다는 생각으로 천천히 최대한 배운 내용을 녹아내도록 해야겠다.