전체 글 154

패턴비교 연산자. 2021-06-28

우선 지난시간에 배웠던 정규식을 이용하지 않은 단순 패턴비교연산자(LIKE)의 용례를 복습겸 풀어보자. SELECT * FROM NOTIECE WHERE NAME LIKE '최%'; --이러면 '최'로 시작하는 1개 이상의 모든 단어가 출력됨. 최, 최훈, 최미미, 최모리모리 등.. SELECT NAME AS '이름', ID, PHONE FROM MEMBER WHERE NAME LIKE '최__'; --이러면, '최'로 시작하는 세글자의 이름만 추출해서 출력됨. SELECT NAME name, pwd FROM MEMBER WHERE NAME LIKE '%울산%'; --이러면, 이름에 울산이라는 단어가 앞이나 뒤, 중간에 포함되 있기만 하면 다 추출된다. 그런데 우리는 %와 _ 연산자를 통해 우리가 원하는..

기록/SQL 2021.06.28

SELECT 스킬 : 산술연산(숫자연산자, 문자 연산자, 별칭붙여서 출력) ,비교연산 2021-06-22

테이블에 저장된 다양한 필드를 가진 데이터들을 출력하는 방법이 있다. 예를들면, ID PWD NAME ming 0523 밍 hun 2020 동훈 mori 0619 모리 이런 ID,PWD,NAME 필드를 가진 데이터가 DB에 저장되어 있을떄, 워하는 열 만 출력할수 있는지, 원하는 행만 출력할수 있는지, 이런 방법이 매우 중요하다. 또한 이미 저장되어있는 값에 숫자연산을 통채로 다 적용시킨 값을 열(colum)으로서 출력 할 수 도 있어야 한다. .1. ID와 PWD를 뽑는경우 SELECT ID,PWD FROM MEMBER; 2. PWD에 1 더한 값을 뽑는 경우 SELECT PWD+1 FROM MEMBER 그런데 이 방식으로 뽑으면 문제가 있다. 출력을 해보면, PWD+1 0524 2021 0620 이렇..

기록/SQL 2021.06.22

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

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

기록/SQL 2021.06.21

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

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

기록/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..

기록/SQL 2021.06.18

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

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

기록/SQL 2021.06.16

JDBC의 작동원리, 기본 코드. 2021-06-10

우선, JDBC는 자바에서 클라이언트로부터 받은 데이터의 요청(쿼리)를 인터페이스를 통해 표준화된 함수들로 Connection(연결), Statement(쿼리 문장실행), Resultset(결과패치) 등을 제공하는 템플릿이다. 왜 이런 JDBC가 필요하냐면, 사용자가 UI에서 어떤 정보를 클릭하면, 그 쿼리를 실질적인 DBMS(데이터 저장소)에 넘겨 줄 수 있다. 그런데 이 DBMS는 많은 종류가 있다. MySQL, ORACLE, RADIS 등... 이런 dbms의 종류에 함수의 이름이 각각 다를 것이고, 그렇다면, DBMS 를 바꿀때 마다, 그에 맞는 코드를 또 다시 짜야 할 것이다. 이런 애로사항을 방지하기위해 JDBC라는 자바에서 표준적으로 제공하는 라이브러리를 통해 쿼리를 작성하면, 각 DBMS에..

기록/JDBC 2021.06.10

무작위로 주어진 수들의 순열,조합 구하기. (백트레킹) 2021-06-10

우선적으로 사용자로부터 N과 M 입력 값을 받는다. 그리고, 연산의 대상이되는 수들을 사용자로부터 N개 입력받는다. N P M을 구해보겠다. 우선 순열이나, 조합 모두 dfs의 방법중 하나인 백트레킹을 이용한다. 1.모든 노드를 탐색해야한다. 2.노드 탐색의 조건이 있다.(한번 방문한 노드는 방문하지 않는다. 그러므로 dfs를 통한 백트레킹 방법을 이용한다. import java.io.*; import java.util.*; public class Main { static int[] arr; static int[] output; static boolean[] value; static int N; static int M; public static void main(String[] args) throws I..