Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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
Archives
Today
Total
관리 메뉴

메모장

DB 복습 4 본문

카테고리 없음

DB 복습 4

Captic 2019. 8. 22. 14:51

▣ DESC -> 스키마를 describe
*스키마 -> 내부적 논리구조

 예) DESC Player -> Player Table의 내부 구조를 보여달라

▣ Column 추가하기(Table 수정)
 - Alter Table X Add(A B) : Table X를 수정하는데, A라는 Column을 B 자료형으로 추가해서 하라
예) Alter Table Player Add(pass, VarChar2(15));
 * Update~Set~Where로 수정하는 거 있지 말라구~


 - Alter Table X Drop(A) : X 안에서 A Column을 빼라


SQL Developer -SQL 문장-> Oravcle DB이 컴파일 후 실행
-> 결과 집합을 산출 -> SQL Developer에게 결과 집합 전달

UE -> Network(Web) server -> DB -> 결과 -> UE
- Plugin을 사용하면 'UE->Web Server'는 쉽다
- WebServer : TomCat(Java), Apache(php)
- Node.js가 엄청 쉬운 서버를 만들 수 있는 언어다

외부 프로그램(프로세스) -> SQL -> Oracle DB -> 결과
Web Server -> SQL -> DB -> 결과 -> W/S -> dmd

-------------------------------------------------------------------------------------------------------------------------------------------
▣ Column 이름 바꾸기
- Alter Table X Rename A to B : X Table 안에 있는 A Column 이름을 B로 바꾼다
- Constraint 이름도 바꿀 수 있다 예) Alter Table Player Rename Constraint SYS_C007565 to PlayerID_PK;


Gamehistory 안에 PID의 Constraint 이름을 GH_PID_FK로 변경하라

Alter Table Gamehistory 
Rename Constraint SYS_C007586 to GH_PID_FK;

commit;


▣ Transaction
 - 동시에 실행되야할 다수개의 SQL 작업들, 하나의 작업 단위
 - Commit과 Rollback을 잘 쓰는 것(결정하는 것)
 예) 계좌이체 - 한 계좌에서 update -> 그 수치 만큼 다른 계좌에서 update
// 어느 한쪽만 실행되고 나머지가 실행안될수가 없다, 이 둘은 하나의 작업이다
// 둘 중 어느쪽에서라도 실행이 되지 않는다면 Rollback, 둘 다 완료해야 Commit

-------------------------------------------------------------------------------------------------------------------------------------------
▣ Node.js
 - Server Side Javascript
 - 쉽게 WebServer 제작이 가능
 - Express, Socket.io 모듈을 이용해서 간단히 웹 사이트제작
 - 클라이언트 접속과 DB접속이 쉽다
 - HTTP 웹브라우저, UE 게임에서도 접속이 가능하다

Node.js 다운로드 (https://nodejs.org/en/download/)

Node.js를 다운로드한 후 CMD에서 Node를 치면 Javascript 언어를 실행할 수 있다
console.log('Hello World') 

js파일을 만들어 직접 코드를 적지 않고 파일로 실행할 수 있다
txt 파일을 .js로 저장
- console.log('Hello World')을 적고 저장하여 CMD에서
  node (파일 위치)/(파일이름).js 실행하면 동일한 출력 값이 나온다

▣ Node.js로 서버 만들기
js파일을 VSCode를 통해 아래와 같이

var http = require('http');
var hostname = '127.0.0.1'; // 이 부분을 IP로 하면 다른 컴퓨터(외부X) 접근가능하다
var port = 3000;
http.createServer(function(req, res){
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello World');
}).listen(port, hostname);
console.log('Server running at http://'+hostname+':'+port);

만들고 VSCode에서 실행하면(node 파일명.js), 인터넷 주소창에 172.0.0.1:3000을 입력하면 접속 가능하다

-------------------------------------------------------------------------------------------------------------------------------------------
DB - Web Server(Node.js) - Web Client(Plugin을 통해 UE가 역할을 맡는다)

-> 그렇다면 W/S와 DB를 연동하는 방법은?


oracle_conn.js
const oracledb = require("oracledb"); // oracleDB를 다운 받아둔다
var emp_id = 101; // employee_id 101번을 사용
oracledb.getConnection( // oracledb에 접속을 시도하라
{ // JSON object(Javascript Standard Object Notaion) -> 자바스크립트 객체 표현법
 user :"hr",
 password :"hr", // 난 이게 1111이겠고
 connectString :"172.0.0.1/XEPDB1"
},
fuction(err, connection) { // 익명함수(함수이름이 없다) -> Node System 안에서 돌아가줄거라 몰라도된다
if(err){ // 얘는 접속 실패시에 돌아간다
console.error(err.message);

return;
       }

connection.execute( // 접속 성공시에 connection(익명함수 2번째 인수) 객체가 생성, execute가 돌아간다
'SELECT * FROM employees WHERE employee_id=:bv', // :bv -> : 가 붙어서 가짜 값임을 보인다
[emp_id], // [ ]  = 배열연산자
{
maxRows:1 // 가져올 값이 1개니까
},


fuction(err, result)
 {
 if(err) {
console.error(err.message);
connection.close();
return;
   }
//console.log(result.metaData); // Column names etc
console.log(result.rows); // 2차원 배열이므로 원소는 result.rows[i]로 확인할수 있다
connection.close();
  }
 );
}
);



oracleDB 다운 받기
※ D:  // cd NodeProject 를 입력해서 npm 친구들을 다운받을 수 있게 해놓아야 한다

D:\NodeProject\>npm init
D:\NodeProject\>npm install oracledb
D:\NodeProject\>npm install express --save
D:\NodeProject\>npm install socket.io --save