Programming/SQL

JDBC 의 필요이유 다시정리 클라이언트와의 관계, DML 중 UPDATE 2021-06-18

최동훈1 2021. 6. 18. 20:46

우선 클라이언트와 서버의 관계를 명확하게 알 필요가 있다.

SQL을 쓸수있는 사람은 DB Client를 쓴다.
SQL을 쓸수없는 사람은 업무용 프로그램을 쓴다. 

이 두 문장이 "백엔드" 와 "클라이언트" 의 탄생배경과 필요성을 함축해서 나타낸다고 생각한다.

대부분의 프로그래머가 아닌 일반 사람들(서비스의 유저들)은 업무용 프로그램을 쓴다. 그런데 업무용 프로그램을 클릭하면, 예를들면 회원정보 보기 버튼 등을 클릭하면, 컴퓨터가 자동으로 SQL구문을 만들어서 DBMS로 날리고, 해당 데이터를 가져온다. 이 연결과정을 "백엔드 개발자"가 만드는 것이다. 컴퓨터가 어떻게 SQL 구문을 만들어 줄까? 그 도구는 자바언어가 될 수 도있고, 자바스크립트가 될 수 있고, 파이썬이 될 수 있다.

ORACLE은 SQL developer란 DB Client를 쓰고, MS SQL은 SQL Server Management Studio 이란 DB Client를 쓴다.

즉, 각 DBMS마다 전용으로 쓰는 것이 다르다. 

각 DBMS에서 제공하는 SQL편집기를 이용하여 직접 DB에 접근한다. 즉, 오라클에서 재공하는 DB client(SQL developer) 와 MS SQL에서 제공하는 DB client(SSMS)는 다르다 왜냐하면 각 DBMS의 인증,실행,결과패치 함수에 맞추어 설계되었기 때문이다. 그래서 우리는 각 DBMS에 맞는툴로 sql을 편집할수 있다. 별도의 표준화된 템플릿을 사용하지 않고도.

 

프론트엔드 프로그래머가 만든 UI를 통해 DB에 접근한다.

 

 

우리 백엔드 개발자의 목표는 이 업무용 프로그램을 쓰는 사람들에게 최적화된 업무용프로그램과 DB사이의 연결고리를 만들어 주는 것이다. "업무용 프로그램 자체"를 만드는 것은 프론트엔드에서 할 일이다. 즉, 화면구성, 디자인, UI, UX 등.. 우리는 프론트엔드가 만들어놓은 업무용 프로그램과 DB의 연결고리를 만들어 주는 역할이다. 

 

그럼 어떻게? 만들어 줄까 난 자바 개발자이니 자바를 예로 설명하겠다. 우선 기존에 내가 연습하는 DB Client는 연결/문장실행/결과패치 과정을 에디터가 알아서 다 해줬다. 그러나 우리는 DB Client가 아니라, 업무용 프로그램을 사용하는 사용자를 대상으로 프로그래밍 하기에, 우리가 연결/문장실행/결과패치 등을 해줘야 한다. 바로 DB API를 통해서 이다. 그런데 문제가 있다. 각 DBMS 제품마다 DB API의 함수이름들이 다 다르다는 것이다. 이렇기에 표준화된 프로그래밍을 할수 없다는 문제가 발생한다.

이 문제를 해결하기위해, JDBC를 만들었다. 쿼리문을 JDBC 라이브러리를 통해 Driver로 날리면 맞게 작성하면,  연결/문장실행/결과패치 를 JDBC Driver 가 DBMS에 동작해준다. 즉, JDBC는 프로그래머로 하여금 DBMS의 종류에 구애받지않는 프로그래밍을 가능하게 만든다. 그러나, JDBC Driver는 DBMS 종속적이다. 프로그래머는 각 DBMS 제품에 알맞는 Driver를 다운해서, 설치해야한다.

 

  프로그래밍 공부를 제대로 시작한지 1년 1개월만에 클라이언트가 무엇이고, 서버가 무엇인지 왜 필요한지를 본질적인 필요성을 구체적으로 알게되었다.  

 

DML에 대해서 오늘 공부한 내용은 UPDATE 명령어 이다.

DML에는 SELECT/INSERT/UPDATE/DELETE 인데, 이전 포스트 복습할꼄 용례를 적으면,

SELECT ID,pwd FROM MEMBER;
SELECT ID as "user_id",pwd,email FROM MEMBER;//ID가 아닌 소문자로 user_id로 출력되나옴. 
SELECT * FROM MEMBER;

INSERT INTO MEMBER(ID,PWD) VALUES('adf','111');

이렇다.

이번 UPDATE 용례는 이렇다.

UPDATE MEMBER SET PWD='111';//이건 MEMBER테이블의 모든 pwd를 111로 바꾸는 것이다.
UPDATE MEMBER SET PWD='222' WHERE ID='abc'; //이럼, ID가 abc 인것의 pwd만 바뀐다.
UPDATE MEMBER SET PWD='222' NAME='tom' WHERE ID='abc'//ID가 abc 인것의 이름과 비밀번호를 바꾼다.

 

공부시간 2시간

순공부시간 1시간.

 

오늘은 오후에 또 요양원에서 외근으로 어르신 모시고 병원갔다온다고, 오전공부밖에 못해서 집에서 못한 공부를 마저 했다.