Programming 95

SQL developer 설치. + IntelliJ 바로가기 경로 재설정. 2021-07-05

우선 난 이전 포스트에서 말한 것 처럼 오라클은 에디터나 DB와 사용자의 실질적 소통을 만들어주는 창구가 아니다. 그냐 DB를 관리해주는 시스템일 뿐이다. 또한, 사용자는 직접적으로 쿼리를 DBMS에 날릴수 있는 방법이 없다. 무조건 서버 클라이언트를 통해서만 DB(DBMS)랑 상호작용 할수 있다. 오라클에서는 대표적으로, 콘솔 기반의 SQL plus 와 더욱 사용자에 친숙하게 윈도우 기반의 SQL developer 가 있다. 즉, 여기서 직접 퀴리를 날리고, 연결, 결과집합을 확인 할 수 있는 것이다. 오늘은 그래서 SQL developer를 설치 해 보았다. 과정을 설명하자면, 1. 오라클 사이트의 download 카테고리 로 들어가자. 처음 내가 오라클 사이트 접속했을때는 소프트웨어를 다운할수 있는..

Programming/SQL 2021.07.05

SQL 문자열 내장함수 LPAD, INSTR, LENGTH. + 오라클 DBMS 와 사용자 인터페이스(SQL PLUS, SQL DEVELOPER) 2021-07-02

SQL에서 가장 대표적인 문자열 내장 함수는, LPAD,RPAD : 패딩함수 INSTR : 문자열에 포함된 문자가 어느 위치에 있는지 숫자를 반환하는 함수. LENGTH : 문자열의 길이를 반환하는 함수. 등이 있다. 바로 용례를 설명하고, 문제를 풀면서 보이겠다. LPAD(문자1, 5, 문자2) 의 뜻은 문자 1을 5자리수만 출력할것인데, 만약 5자리 미만이라면, 왼쪽(Left)에 남는 자리만큼 문자 2를 채우라는 뜻이다. 문제 답. SELECT RPAD(NAME,3,'_') FROM MEMBER; 그런데 여기서 주의할 점은, 패딩함수의 인자로 오는 숫자는 바이트 단위이다. 그러므로, 한글을 자르려면, *2를 해줘야 한다.(유니코드로 한글은 1글자당 2바이트이기 떄문); 수정 답: SELECT RPAD..

Programming/SQL 2021.07.02

오라클 내장 함수중 문자열 함수. 2021-07-01

오늘 내가 처음 인지한 내용은 SELECT 문에서 '행' 을 선별할지, '열'을 선별할지 구분하는 것이다. SELECT PHONE AS p, NAME FROM MEMEBER WHERE ID LIKE 'ab%'; 여기서 FROM 절 앞에 오는 것은 '열(COLUMN)' 의 선별이고 WHERE 절 뒤에 오는 조건은 어떤 '행(ROW)'을 선별하는 조건이다. 그런데 내장함수는 FROM 절 앞에서 자주 쓰이며, '칼럼' 을 선별하기 위해서 쓰인다. 물론, WHERE 절뒤 조건절에 행(ROW)를 선별하기 위햇 쓰일 수는 있지만, 만약 테이블이 수만개 되면 모든 행을 조건에 맞는지, 검사할때마다, 함수를 호출해야 하기 떄문에 CPU에 부담이 될수 있어서 가급적, 행을 선별할때는 LIKE, REGEXP_LIKE, O..

Programming/SQL 2021.07.01

ROWNUM, 페이징을 통한 열의 단위집합 출력 2021-06-29

이전까지는 난 오라클에서 SELECT 문을 통해 결과집합을 출력할떄, 기존에 있던 칼럼(column : 열) 에서 ROWNUM이라는 새로운 칼럼을 추가해 준다는 것을 몰랐다. 그런데 난 SELECT * FROM (SELECT ROWNUM NUM,NOTICE.* FROM NOTICE) WHERE NUM BETWEEN 2 AND 7; 이 구문을 이해하는 과정에서, 알게 되었다. 사실 오늘 내가 설명하려고 하는 모든 내용이 이 한 구문안에 다 존재한다. 우선 문제의 시작은 테이블에서 특정 갯수만 출력할때, 어떤 SQL 구문을 만들어야 하는가에서 시작된다. 예를들면 가장 상위의 5개씩 출력, 하위의 2~7 ROWNUM 출력 등이다. 우선 ROWNUM 이 무엇인가? 우리가 SELECT 문을 통해 테이블을 출력하면..

Programming/SQL 2021.06.29

패턴비교 연산자. 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 '%울산%'; --이러면, 이름에 울산이라는 단어가 앞이나 뒤, 중간에 포함되 있기만 하면 다 추출된다. 그런데 우리는 %와 _ 연산자를 통해 우리가 원하는..

Programming/SQL 2021.06.28

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

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

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