Programming/SQL 34

트랜젝션(transaction), commit, rollback 2021-06-21

오라클에서 한 세션에서 INSERT 한 데이터가 왜 다른 세션으로 접속했을때, 반영이 되지 않는 것일까? 이 질문에 답을 하기 위해선, 트랜젝션이 무엇인지 알아야한다. 내가 오늘 공부하며 내린 결론은 트랜잭션이란 DB의 변화를 가져오는 일련의 "명령어들"의 단위집합 이다. 좀더 쉽게 풀어쓰면, 한 업무의 수행단위 라 볼수 있다. 자세히 설명하자면, 계좌이체 라는 과정을 수행하려 했을때, 한 계좌에서 돈을 UPDATE를 통해 빼주고, 다른 계좌에서 UPDATE를 통해 돈을 더해줘야만, "계좌이체"라는 하나의 업무단위(트랜잭션)가 완성되는 것이다. 즉, UPDATE/INSERT/DELETE 각각의 명령어 한개가 수행되었다고 해서 트랜젝션이 완료되는 것이 아니라(물론 하나의 명령어로 완료되는 트랜잭션이 있을수..

Programming/SQL 2021.06.21

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

우선 클라이언트와 서버의 관계를 명확하게 알 필요가 있다. SQL을 쓸수있는 사람은 DB Client를 쓴다. SQL을 쓸수없는 사람은 업무용 프로그램을 쓴다. 이 두 문장이 "백엔드" 와 "클라이언트" 의 탄생배경과 필요성을 함축해서 나타낸다고 생각한다. 대부분의 프로그래머가 아닌 일반 사람들(서비스의 유저들)은 업무용 프로그램을 쓴다. 그런데 업무용 프로그램을 클릭하면, 예를들면 회원정보 보기 버튼 등을 클릭하면, 컴퓨터가 자동으로 SQL구문을 만들어서 DBMS로 날리고, 해당 데이터를 가져온다. 이 연결과정을 "백엔드 개발자"가 만드는 것이다. 컴퓨터가 어떻게 SQL 구문을 만들어 줄까? 그 도구는 자바언어가 될 수 도있고, 자바스크립트가 될 수 있고, 파이썬이 될 수 있다. ORACLE은 SQL ..

Programming/SQL 2021.06.18

오라클 숫자형 데이터, DDL (Alter명령어), DML(Insert명령어) 2021-06-17

이전 포스트에는 오라클의 내장 데이터 형식에는, Character형 Numeric형 Date형 LOB형 이 있다. Character형 중 LOB는 엄청나게 큰 텍스트 데이터(~4GB) 정도 되는 자료형을 담을 수 있는 타입이다. 또 Numeric 형 중에는 Number 라는 타입이 있는데, 이 Number 타입의 파라미터로 오는 값은 NCHAR과 같이 "글자의 수" 이다. 예를 들면, Number(3) 이면, 이 타입의 변수는 0~999까지의 수를 저장할 수 있다. 정수 뿐만 아니라, 실수도 저장할 수 있는데, Number(6,2)는 소수점 두자리에서 반올림하는 6자리 수 이다. 즉, 1234.12 이런 수를 담을수 있다. 그다음은 SQL언어의 DDL중 Alter 명령어에 대해서 알아보겠다. 우선 DDL..

Programming/SQL 2021.06.18

DB/DBMS/SQL 기본 개념+원리, DDL 사례와 오라클DBMS 의 문자형 데이터 타입 2021-06-16

우선 DBMS는 (Data Base Management System)의 약자 이다. 그렇다면 DBMS는 DB를 관리해주는 도구라는 말인데 이것이 왜 필요할까? 우선 DB가 왜 만들어졌는지 부터 알 필요가 있다. 우선 DB가 없던 시절에는 각 컴퓨터나 시스템 마다 별도의 저장소를 사용했다. 그러면, 하나의 데이터 정보가 갱신되었을때, 따로 동기화를 각 저장소 마다 주기적으로 해줘야하는 수고로움이 있었다. 이런 단점을 하나의 저장소 공간을 공유함으로써, 즉각적인 데이터 갱신효과와 중복으로 저장할 필요없는 데이터들을 없앰으로써, 저장공간의 활용도를 극대화시켰다. 이렇게, 시스템마다, 위 사진은 한 대학의 도서관 시스템, 행정실 시스템을 나타낸 것이다. 원래 등록금 납부여부와 대출 가능여부가 분리된 형태로 각 ..

Programming/SQL 2021.06.16