BigData 청년인재 프로그램(SQL) - 1. 데이터베이스 개요와 설치

7/3(월)
#DB설계시 현실적인 Tip
1. 에러 디버그를 해보아야 실력향상됨(에러 볼때 라이브러리 에러가 아니라 내가 작성한 class, sql문을 확인)
2. 값을 계속 출력(sysout)
3. 문제를 작게 나눠서 해결(devide & qunquer)
4. 입력 - 출력이 어떤 순서로 되는지 생각

#웹서버의 주소구조
-프로토콜명://IP주소 or 도메인주소:포트번호/파일경로
ex)http://102.103.105.27:8080/index.jsp
ex)https://naver.com:8088/index.jsp
-internet규약(TCP/IP)을 활용한 서비스 = WebService

#웹클라이언트 - 웹서버(DB클라이언트) - DB서버구조


#컴파일방식
1. compiler(전체코드를 2진화)
ex) JDK(java Development Kit)
2. 인터프리터(1줄씩 2진화)
ex) Python, 브라우저(chorme)

#동기 통신(Sync) / 비동기 통신(Async)
1. 동기 통신
- 요청의 결과값이 리턴값과 동일
- 명령이 끝날때까지 사용자에게 제어권을 주지않음
- HTML

2. 비동기 통신
- 요청의 결과값이 리턴값과 다름
- 명령이 끝나기전 사용자에게 제어권을 돌려줌
- JSON(코드압축), XML(코드가 많음), 2TXT->AJAX(DOM기술, 데이터만 전송)

<1. DBMS 개요>
1.1 Database 개념
-여러 응용계층에서 공통으로 사용할 수 있도록 중복 Data를 최소화하여 통합/저장한 데이터집합
1) 통합된 데이터(intergrated data) : 중복최소화 데이터
2) 저장된 데이터(stored data) : 컴퓨터 저장장치에 영구저장된 데이터
3) 운영 데이터(operational data) : 업무를 위한 데이터
4) 공용 데이터(shared data) : 공동으로 사용되는 데이터

1.2 Database특징
1) 실시간 접근(realtime access) : 수초 내에 실시간 서빗
2) 계속 변화(continuous change) : 삽입, 삭제, 수정으로 변화된 값을 영구저장
3) 동시 공유(concurrent sharing) : 여러사람이 병행사용
4) 내용 참조(reference by content) : 물리적 Ram주소 참조x, 데이터 값 참조o

1.3 DBMS(DataBase Management System)
 - 방대한 데이터베이스를 편리하게 관리하고 효율적으로 저장, 검색할 수 있는 환경을 제공해주는 S/W

1.4 SQL 언어
- RDBMS의 표준화된 언어
- 미국표준연구소(ANSI)와 국제표준기구(ISO)에서 표준언어로 채택

1.5 RDBMS(Relation DataBase Management System)
- 관계형 DB이론에 입각한 DBMS S/W
- Oracle이 세계 최초로 상용화
- 업무 변화에 쉽게 적용, 유지보수 편리
- 종류 : Oracle, MySQL, MSSQL(Oracle) // DB2(IBM) // SQL-Server(MS)

<2. DBMS 역사>
2.1 Database 등장배경
- FileSystem의 문제점 해결필요

2.2 파일시스템 vs DBMS
- 응용프로그램과 데이터의 종속(일관성, 독립성, 무결성, 사용편의성)
- 다수 사용자에 의한 정보 공유(+공유성, 보안관리)

2.3 1960년대 ~ 1997년
- 1960 : 계층형(Hierarchical DB), 트리구조
- 1970 : 망형(Network DB)
- 1970 : E.F Codd의 관계형 모델
- 1979 : 최초의 상용 RDBMS Oracle 출현
- 1983 : IBM DB2발표
- 1986 : 미국표준연구소(ANSI) SQL표준제정
- 1990 : OLTP 사용가능
- 1994 : 분산DB, 병렬처리 출현
- 1997 : 개체-관계DBMS, 객체지향DBMS
http://blog.naver.com/zerolive_/11742356

<3. DBMS 발전과정>
파일시스템(60s)
->사용자의 업무 복잡, 다양해져 DBMS의 필요성 느낌, 계층형DB(70s)
-> 데이터의 접근 방식의 보완, 망형DB(70s) -> 새로운 발상, 관계형DB(80s)

<4. DBMS 특성>
4.1 정의기능(Definition, DDL)
- 데이터의 스키마(형태, 구조 저장)에 관한 내용 정의
- 서로 다른 프로그램과 데이터베이스의 인터페이스 방법 제공
- 서로 다른 사용자가 사용할 수 있도록 데이터베이스의 구조를 정의
- Row,Column의 create,drop, alter

4.2 조작기능(Manipulation, DML)
- 사용자의 요구따라 검색, 갱신, 삽입, 삭제 기능지원
- 사용자와 데이터베이스 사이의 인터페이스 수단 제공
- select, update, insert, delete

4.3 제어기능(Control, DCL)
- 데이터베이스 내용에 대한 정확성, 안전성을 유지하는 기능
- 무결성, 보완, 병행수행 제어
- grant, revoke

<5. DBMS 구성요소>
=데이터베이스(table) + 데이터베이스 관리 시스템(oracle) + 데이터 언어(sql)
+ 데이터베이스 관리자(system) + 응용프로그램(webservice) + 사용자(scott)

<6. DBMS 환경 구성과 설치>
6.1 설치
1)프로그램 다운받기



download클릭하면?

응... 극혐...로그인 안하면 다운이 안됨

2)다운받고 압축풀기



3)설치
next 클릭

라이센스에 동의하자..

11g Express Edition을 설치할 경로를 설정하기

내 컴퓨터에 Database를 설치한다는 의미는
Database를 제공해주는 DB Server와
Database사용을 요청하는 DB Client를
모두 설치한다는 의미이다.
<DBMS의 구성요소 = 데이터베이스(table) + 데이터베이스 관리 시스템(oracle) + 데이터 언어(sql)+ 데이터베이스 관리자(system) + 응용프로그램(webservice) + 사용자(scott)>
현재 설정하는 암호는 데이터베이스 관리 시스템(oracle)에 
접근가능한 데이터베이스 관리자(system)의 암호를 설정하는것.
까먹으면 안돼니 학습용이면 1234로 하자..

건방지게..내 네트워크의 포트번호를 마음대로 설정하고 있다.(못바꿈ㅠ)
Oracle Database Listener 접속 포트번호 : 1521
Oracle Services for Microsoft Transaction Server 접속 포트번호: 2030
Oracle HTTP Listener 접속 포트번호 : 8080

<< 리스너란? >>
  오라클 리스너는 네트워크를 이용하여 클라이언트에서 오라클 서버로 연결하기 위한 오라클 네트워크 관리자입니다. 오라클에서 네트워크를 통한 연결은 모두 리스너가 담당하며 리스너와 연결되기 위해서는 클라이언트에 오라클 NET8이 설치되어 있고 이를 통해 오라클 서비스명이라는 것을 만들어 접속해야 합니다. 오라클 서버에서 리스너를 시작시켜줘야 클라이언트들이 접속할 수 있습니다.
출처: http://uniksy1106.tistory.com/70 [* 루이지노의 행복한 이야기 : )]

즉, 외부 사용자가 내 PC에 설치된 데이터베이스 서버(11g Express Edition)에 네트워크를 통해 접속하기 위해서 내 PC에 오라클 리스너(오라클 네트워크 관리자)가 설치되어야 하고, 포트번호를 강제로 설정함. 조용히 Install버튼을 누르자..
#나중에 WebService를 구현하기 위해 WebServer(Tomcat등)을 내 PC에 설치하거나, 관련된 포트번호를 설정할때 1521, 2030, 8080(오라클 관련 port)을 제외하고 사용해야 포트충돌 오류가 나지않는다.

설치중1

설치중2

설치중3

설치끝

6.2 사용자 계정 create, grant
1)Oracle Database Server, Client이해


이제부터 헷갈린다.
설치를 하고나면, Backup Database~ Stop Database까지 여러가지 exe파일들이 나온다..
오라클을 실행해서 빨리 SQL문으로 create table(~), select * from tab; 문장들을 바로 쓸 수있는줄 알았는데 그게 아닙니다..

데이터베이스의 구성요소는 
데이터베이스를 제공하는 Server(Oracle 11g Express)+DB관리자(system)와 
데이터베이스를 요청하는 Client(응용프로그램)+DB사용자(scott)가 있다.
그리고 Listener에 의해 DB에 대한 요청을 인식할 수 있다.

이 두가지 버튼을 이해해야한다.
Start버튼은 Database커널을 실행시키고 서버를 실행시키는 버튼이다.
버튼을 누르자.

누르면 이런 cmd창이 뜨면서 
OracleServiceXE 서비스가 잘 시작되었습니다. 라는 메시지가 나온다.

버튼클릭후 작업관리자를 누르면 OrcleServiceXE 프로세스가 이렇게 실행되고 있으며, 메모리 265.5MB를 차지하는걸 볼 수 있다. 


이제을 눌러보자
누르면 이런 cmd창이 뜨면서 
OracleServiceXE 서비스를 잘 멈추었습니다. 라는 메시지가 나온다.
OracleServiceXE 프로세스가 사라진 모습을 볼 수 있다.
사실 두가지 버튼은 

오라클을 설치할때 생성된 binary파일을 실행시킴을 알 수 있다..
아마도 binary파일을 실행하면, OS가 시작될때 자동실행되는 OracleXETNSListener가 인터럽트를 인식하고 Oracle Kernel을 내PC 메모리에 할당(Start), 제거(Stop)해주는것 같다.

2)Database를 실행하고 관리자계정으로 접속하기

다시버튼을 누르자.
그리고 버튼을 누르자.
conn입력 + 엔터
system입력 + 엔터
1234입력 + 엔터를 치면 

Connected.라는 메시지가 나오면서 
system아이디(관리자계정)로 Oracle서버에 접속된다.

3)Database를 종료하고 관리자계정으로 접속할때 에러 확인하기
을 누르고
그리고 버튼을 누르자.
conn입력 + 엔터
system입력 + 엔터
1234입력 + 엔터를 치면 
ORA-12560: TNS:protocol aapter error 라는 메시지가 나오면서
Oracle서버에 접속할수 없다.

4) OracleServiceXE 는 서버, SQL*Plus는 클라이언트
Start버튼을 누를때 실행되는 OracleServiceXE는 
데이터베이스의 서버 역할을 한다.
따라서 서버가 종료되어 있으면(OracleServiceXE 프로세스가 작업관리자에 없으면) 
데이터베이스에 접근할 수 없다.
물론 이전에 저장된 Table이나 데이터는 File형태로 남아있고,
서버를 실행하면 OracleKernel이 생성되어 File구조(디렉토리 경로)가 
아닌 RDB구조(SQL질의문)로 접근가능 하다.

Run SQL 을 눌러 접속될때 맨위에 뜨는 SQL*Plus는
데이터베이스의 클라이언트 역할을 한다.
그니까 관리자계정으로 접근하는 것도 Client로써 접근하는 것임.
Server로 바로 접근하는건, Oracle Kernal명령어(0101011001100..이런거?)로 접근 한다는 의미이고, 사람은 2진코드를 쉽게 인식할 수 없으므로 데이터베이스 관리자도 SQL*Plus라는 S/W를 통해 Client로써 접근하게된다.

우리가 설치한 Oracle Database 11g Express Edition은 데이터베이스 서버, 클라이언트를 같이 설치한것 입니다..
그러니까 바로 S/W실행시켜서 select * from tab; 같은 명령어를 쓰면서 공부할 수 있는게 아니라 어떤게 DB서버이고 DB클라이언트인지 정확히 인식하고 써야합니다.

이건 단순히 내PC의 DB서버 -내PC의 DB클라이언트 접근인데,
네트워크가 더해지면 컴포넌트, 웹클라이언트, 모바일, 성능, 호환성등등..많은걸 생각해야된다고 합니다..

5)이제 정말 scott사용자 계정 생성 및 권한부여하기
1. conn system/1234
->conn DB에접근할 id이름/비밀번호
->DB관리자 계정으로 접속한다.
Connected. 메시지 출력됨

2. create user scott identified by tiger;
->create user 생성할id이름 identified by 생성할 비밀번호;
->create명령어로 user 객체를 생성하고, user의 아이디는 scott로 하고, tiger 비밀번호로 접근할 수 있도록 만든다.
->관리자가 새로운 user를 생성함.
User created. 메시지 출력됨

3. grant connect, resource to scott;
->grant connect, resource to 권한부여할 id이름;
->grant명령어로 접속권한과 자원활용권한을 scott계정에게 부여한다.
Grant succeeded. 메시지 출력됨

4. show user;
->현재 접속유저ID를 보여준다.
User is "SYSTEM" 메시지 출력됨

5. conn scott/tiger;
->scott유저로 접속한다.
Connected. 메시지 출력됨

6.show user;
->현재 접속유저ID를 보여준다.
User is "SCOTT" 메시지 출력됨

6.3 scott사용자 테이블 및 데이터 생성
오라클 설치시 파일경로를 바꾸지 않았다면
C:\oraclexe\app\oracle\product\11.2.0\server\rdbms\admin\scott.sql
파일이 있다.
1) 경로를 따라가서 파일선택 - 마우스오른쪽 클릭-연결 프로그램 - 메모장
으로 열어보면


....
이런게 나온다.

2) Run SQL Command Line창을 연다

3)시스템 계정으로 접속한다.
명령어 : conn system/1234

4)우리가 봤던 경로에있던 scott.sql파일을 실행시킨다.
명령어 : @C:\oraclexe\app\oracle\product\11.2.0\server\rdbms\admin\scott.sql
주의!! 앞에 @를 빼먹지 않아야함..ㅠㅠ
우리가 접근할려는 scott.sql파일을 FileSystem에서 접근하므로 
명령어 앞에 @가 붙는다고 함.
이거 ->@C:\oraclexe\app\oracle\product\11.2.0\server\rdbms\admin\scott.sql
@는 DB_Link명령어 다른 오라클서버나 게이트웨이를 통해서 연결하려고 할때 붙는 것이라고 합니다.

5)현재 유저를 확인한다.
명령어 : show user
->유저가 system에서 scott로 바뀌어있음

6)scott유저가 접근가능한 테이블 확인
명령어 : select * from tab;
->결과 테이블들이 출력되어 보임(bonus, dept,emp, salgrade)



<7. DBMS 연결 도구>
7.1 SQL Developer(Client)
- 위에서 OracleServiceXE =  DB Server이고
- SQL*Plus = DB Client라고 설명 드린적이 있습니다.
Start버튼을 누를때 실행되는 OracleServiceXE는 
데이터베이스의 Server 역할을 한다.

Run SQL 을 눌러 접속될때 맨위에 뜨는 SQL*Plus는
데이터베이스의 Client역할을 한다.

- 그리고 실제로 데이터베이스 관리자, 사용자 모두는 2진코드로 DB Server에 명령을 내리거나 접근을 요청하기 어렵기 때문에 모두 DB Client를 통해 부여받은 ID/PASSWORD로 접근한다고 설명했던적이 있습니다.
- 그런데 사람이 사용할 DB Client인 SQL*Plus는 cmd창으로 되어있어 사용이 불편합니다.
(CUI 환경, Character User Interface)
- 그래서 Oracle이 개발자들 편하라고, GUI 환경으로 개발해놓은 DB Cilent가 SQL Developer입니다.
(GUI 환경, Grapic User Interface)

네이버 블로거분께서 설치방법을 자세히 설명해주셔서 이하는 생략할게요..
<SQL Developer설치법>
http://blog.naver.com/reinstate10/220176619122

7.2 SQL Developer사용하기
1) 더블클릭

이런 창이 뜹니다.

2) 새로운 접속 만들기(새로운 유저 만들기X, 유저를 새로만드는게 아닙니다)
위에 초록색 +버튼을 누릅니다.

새로만들기/데이터베이스 접속 선택 창이 뜨는데, 아까 생성했던 scott유저의 정보를 입력합니다.
1. 접속 이름(N) : 원하는 접속이름으로 아무거나.
2. 사용자 이름(U) : 생성했던 user id
3. 비밀번호(P) : 지정했던 user password
4. 호스트 이름(A) : localhost
-내PC서버에 오라클을 설치할때 잘 생각해보면 localhost로 인스톨러가 강제로 할당했었습니다.
5. 포트(R) : 1521
-마찬가지로 인스톨러가 강제로 리스너 포트번호를 1521로 강제할당함..
6. SID(I) : xe
- 오라클 DBMS종류를 쓰는것 같아요.
7. 저장 클릭.

-1. 접속이름(N)은 2. 사용자 이름(U)과 달라도 상관없습니다.
근데, 헷갈리니까 저는 학습용으로 user와 똑같이 했습니다.
하지만 2. 사용자 이름(U)은 생성한 user id와 다르면 안됩니다!!

주의!!! 분명 SQL Command Line에서 유저 생성시
user이름을 scott(소문자)로 했는데
show user를 해보면 

USER is "SCOTT" 메시지가 출력.
user이름이 SCOTT(대문자)로 나온답니다.

사용자이름에 scott(소문자)를 쓰면 접속이 안될수 있다고합니다. 반대의 경우일수도 있고.. 아무튼, SQL에서는 기본적으로 column의 value값을 제외하고 소문자/대문자 모두 대문자로 취급한다고 알고있는데, DB Client종류에 따라? 다를수도 있나봐요.. 오류나면 이거 확인해보세요.

3) DB Server(OracleServiceXE)에 접속하기
모두 설정하고 접속버튼을 누릅니다.
접속을 누르면 
왼쪽 접속창에 scott(접속 이름)아이콘에 전기플러그를 꽂은 모양 붙은걸 볼수 있습니다.
+
그리고 오른쪽에 scott라는 사람모양의 아이콘이 붙은 창이 활성화 된걸 볼 수 있습니다.
여기에 SQL문을 치면 되요..

4) SQL Developer(Client) 사용하기
select * from tab; 
을 쓰고 
드래그합니다.
수행하고 싶은 쿼리문 블록이 씌워진 상태에서
초록색 화살표 버튼을 누르거나
Ctrl+Enter 단축키를 누릅니다.
개꿀..ㅠㅠ 
sqld준비할때 SQL Developer 모르고 있다가..
저 쿼리문 한번 날려보고 충격먹음..
Eclipse처럼 Crtl+Space 누르면 
저렇게 다음에 올 쿼리문 추천까지 해줍니다!!
왼쪽 빨간박스를 보시면..
테이블 - EMP 더블클릭이 가능하고..

오른쪽 파란박스 창에 
엑셀같이 생긴.. 현재 튜플들의 Column Value가 뜹니다!!!
심지어 엑셀처럼 더블클릭 하면 값도 바꿀수 있어요 ㅠㅠ 실화인가..

더 세부적인 기능들은 저와 같이 공부해봐요..ㅎ

댓글

이 블로그의 인기 게시물

1장_1절 관계형 데이터베이스 개요

1장_2절 DDL(Data Definition Language : 데이터 정의어)

1장_5절. Where 조건절