전체 글 170

SQL 관계연산자, 패턴비교 연산자. 2021-06-24

복습. DML의 종류에는 SELECT INSERT UPDATE 등이 있다. 사용용례 : SELECT 열 AS 별칭 FROM 테이블 INSERT INTO 테이블(열,열) VALUES(값,값); UPDATE 테이블 SET 열=값, 열=값 WHERE 조건. SQL의 관계연산자는 NOT, AND, OR, BETWEEN, IN; 등이 있다. 딱히 부연설명이 필요없이 사례로서 보이겠다. 1. DB에서 조회수 1~3의 열만 추출. SELECT * FROM NOTICE WHERE 1

Programming/SQL 2021.06.24

[자바] 백준 7576번 토마토 2021-06-23

우선 어떤 알고리즘을 풀어서 해를 낼수 있겠다. 이런 느낌은 5초만에 바로 올정도로 접근법은 쉽지만, 구체적인 해답 경로를 찾기에는 어려웠다. 아니, 어렵다기 보다는 신박? 했다 해야하나... 우선 기존 BFS문제와는 조금 결이 달랐다. 기존 문제는 각문제마다 조건이나 상황이 다 다르겠지만, '어느 지점까지 도착할지 최솟값을 구하여라' 이런 류가 대부분이였다. 그러나 이 문제는 한 계층마다 같은 값을 더해준다는 느낌(한번 이동을 수행할때마다)은 BFS문제들과 같은데, 2가지 내 머릿속의 문제점을 해결하지 못하여서 쉽게 코드를 짜지 못하고 있었다. 내가 문제를 풀면서 마주했던 의문점. 1.어느곳이 마지막 도착점인지, 또한 무엇보다 모든 토마토가 다 익었는지 판단후 도대체 무슨 값이 모든 바구니가 다 익었을..

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 이렇..

Programming/SQL 2021.06.22

[자바] 백준 1149번 RGB거리 2021-06-21

우선, '비용의 최솟값' 을 구하라는 말이 나왔으므로, DP로 풀어야 한다. 그런데 그 전까지는 DP배열이 1차원 배열이였는데 지금은 상황이 조금 다르고, DP[i][j]가 무엇을 가르키는지 구체적으로 정의하는 것이 매우 중요하다. 이전 포스트에서도 꾸준히 강조하는 말하지만 DP문제에서 무엇을 DP값으로 정할건지가 핵심이다. 나는 이 문제에서 2차원 배열로 주어진 입력값(행:N번째 집 열: 빨,초파)에서 결국 맨 마지막으로 선택되어질수 있는 색깔, 마지막 N번쨰 항에을 조건으로 삼아 DP값을 정의하였다. 우선 문제의 특수한 조건들 때문에 마지막 N번집의 색깔은 빨, 초, 파, 중 한개만 가능하다. 즉, 경우의 수를 3개로 나누어(마지막 색이 빨강부터 칠해질건지, 파랑부터 칠해질건지..) 모든 경우의 수를..

트랜젝션(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

[자바] 백준 1932번 정수 삼각형 2021-06-17

일단 매우 어려웠다. 그나마 이거 풀기 전, 2차원 배열의 DP를 활용하는 문제인 1149번 RGB 거리 문제를 풀지도 못하고, 정답을 한번 봐서 그런지, 접근법은 대충 맞았다. 그러나, 진짜 이런 2차원 배열의 DP활용 문제를 처음 봤더라면 접근조차 못했을 것이다. 우선 가장 핵심적인 아이디어는 "아래로 내려갈수록, 가장 최대의 값만 선택하면 안된다. 즉, 그리디로 풀수 없다." -> 그렇기에 모든 경우의 수를 다 따져야 된다.-> 처음부터 아래로 내려가는 규칙을 찾자. 이다. 노트에 그려 보면 맨 왼쪽노드와 맨 오른쪽 노드는 바로 그전 계층의 노드값을 그대로 받는다. -> if(j==0){ dp[i][j]=arr[i][j]+dp[i-1][0]; } if(j==i-1){ dp[i][j]=arr[i][j..

오라클 숫자형 데이터, 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