메모장
DB 복습 4 본문
▣ 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