Search

반응형

'Software/데이터베이스(SQL)'에 해당되는 글 33건

  1. 2020.08.17 [데이터베이스]SQL 내장 함수 문자형 활용하기.
  2. 2020.08.10 [왕초보SQL]WHERE절 쉽게 사용해보기.
반응형

안녕하세요. 신기한 연구소입니다.

SQL작업을 하면서 유용하게 활용할 수 있는 내장 함수들이 있는데요.

문자형, 숫자형, 날짜형 등 몇 가지로 구분할 수 있는데요.

이번 포스팅은 문자형에 대해 살펴보겠습니다.

프로그램 개발을 하면 당연하게도 SQL 구문도 작성해야 합니다.

그럴 때 내장 함수를 잘 사용하면 편하게 코딩할 수 있답니다.

그럼 출발해봅니다.

 

SUBSTR(문자열, 시작 위치, 길이) 

-- 길이는 생략 가능하면 생략하면 문자열 끝까지 반환함.

예를 들어 생년월일(20081009) 중 연도만 추출하고 싶은 경우가 있을 겁니다.

SELECT SUBSTR(BIRTH_DT, 1, 4)

  FROM EMP;

>2008

정말 자주 사용하는 함수입니다.

 

LENGTH(문자열)

문자열의 길이를 숫자로 반환합니다.

예를 들어 이름이 4자 이상인 조건을 검색한다고 가정해봅니다.

SELECT *

  FROM EMP

WHERE LENGTH(EMP_NM) > 3;

이 함수도 정말 많이 사용됩니다.

 

LOWER(문자열)  -- 소문자로 변신~

UPPER(문자열)  -- 대문자로 변신~

알파벳으로 구성된 문자열에 대해서 대문자는 소문자로 소문자는 대문자로 변환해 준답니다.

이 내장 함수도 종종 사용하니 잘 살펴보세요.

SELECT UPPER('abcd') FROM DUAL;

>ABCD

 

TRIM([leading 또는 trailing 또는 both] 제거할문자 FROM 문자열) 

--문자열만 넣으면 기본 공백을 양쪽에서 제거함.

 

LTRIM(문자열, 제거할문자) 

--제거할문자를 생략하면 자동으로 공백 제거

 

RTRIM(문자열, 제거할문자) 

--제거할문자를 생략하면 자동으로 공백 제거

제거할문자를 지정하면 TRIM의 경우 옵션에 따라 앞에서 또는 뒤에서 또는 앞뒤에서 찾아가 제거합니다.

옵션을 넣지 않으면 기본으로 BOTH가 되며 제거할문자를 지정하지 않으면

기본으로 공백을 제거하며 FROM이 필요 없습니다.

LTRIM의 경우는 왼쪽에서 제거할문자를 찾아서 삭제하는데 값을 지정하지 않으면 기본으로 공백을 제거합니다.

RTRIM의 경우는 오른쪽에서 제거할문자를 찾아서 삭제하는데 값을 지정하지 않으면 기본으로 공백을 제거합니다.

SELECT TRIM(leading 'K' FROM 'KOREA') FROM DUAL;  >OREA

SELECT LTRIM('KOREA', 'K') FROM DUAL; >OREA

SELECT RTRIM('KOREA', 'A') FROM DUAL' >KORE

TRIM 내장 함수도 종종 사용하게 되니 잘 확인하세요.

 

CONCAT(문자열1, 문자열2) 

-- 문자열1과 문자열2를 합침, || 와 같은 기능

사실 CONCAT보다 ||를 더 많이 사용합니다.

두 개의 문자열을 합치는 경우 사용합니다.

예를 들어 기본 주소와 상세 주소의 컬럼이 분리되어 있다면

화면에 주소 한 줄로 표기해야 하는 경우가 있습니다.

SELECT MAIN_ADDR || ' ' || DETAIL_ADDR AS ADDR 

FROM CUSTOMER;

MAIN_ADDR과 DETAIL_ADDR을 결합해서 하나의 주소로 표시합니다. 

중간에 띄어쓰기를 위해 ' '을 추가했습니다.

그럼 CONCAT는 사용할 일이 없을까요?

고객 명단을 출력하는 경우 이름에는 단순하게 고객명만 표시됩니다.

그렇지만 출력하는 경우 홍길동 고객님이라고 고객님을 붙여야 하는 경우가 있을 수 있어요.

이런 경우 프로그램에서 붙여도 되고 SQL SELECT문에서 붙여도 됩니다.

보통 SQL문에서 대부분 처리합니다.

SELECT CONCAT(CUST_NM , ' 고객님') AS NM 

FROM CUSTOMER;

사실 ||를 사용하되 되지만 CONCAT를 사용해서 더 명시적으로 표시할 수 있다고 생각합니다.

 

CHR(ASCII)

--ASCII 값을 해당 문자나 숫자로 변환

 

ASCII(문자 또는 숫자) 

 --문자 또는 숫자를 ASCII로 변환

 

프로젝트하면서 아주 가끔 사용했던 함수입니다.

알아두면 편해요.

 

이번 포스팅은 개발 시 SQL문을 작성할 때 문자열 관련 내장 함수의 기능에 대해

간단하게 살펴봤습니다.

자주 사용하면 외워서 사용하겠지만 가끔 생각 안나는 경우도 있지요? ㅎㅎ

잘 활용하시기 바랍니다.

잘못된 정보나 수정이 필요하면 댓글 주세요.

감사합니다.

반응형
반응형

안녕하세요. 신기한 연구소입니다.

이번에 소개할 왕초보 SQL 구문은 바로~ 조건을 설정할 수 있는 WHERE 절입니다.

데이터베이스에서 원하는 데이터만 쏙~ 골라내고 싶다면 조건이 필요하겠죠?

그 조건을 설정할 수 있는 장소가 바로 WHERE 절입니다.

쏙~골라낸 데이터만 볼 수도 있고 수정할 수도 있고 삭제할 수도 있기에 꼭 필요한 부분입니다. 

 

SELECT, UPDATE, DELETE문을 작성할 때 거의 99% 사용한다고 보면 되는데요.

조건 하나 잘못 지정하면 일 처리에 문제가 발생할 수도 있으니

SQL문 작성 후 WHERE절의 조건을 하나하나 꼼꼼히 살펴보는 좋은 습관을 만드는 것도 중요합니다.

 

우리가 은행 계좌를 조회할 때 우선 해당 계좌를 선택하고 기간을 선택합니다.

그 후 조회 버튼을 누르면 우리가 원하는 데이터를 얻을 수 있게 됩니다.

 

이 부분을 SELECT문에서 WHERE 조건을 사용해 보겠습니다.

 

SELECT *  --모든 항목 조회

FROM ACCOUNT_INOUT –통장 입출금

WHERE ACCOUNT_ID = ‘ACT0011’  --통장 ID

AND INOUT_DATE BETWEEN ‘20200101’ AND ‘20200131’  -- 거래내역 기간;

 

위 SQL문은 우선 모든 컬럼(항목)을 통장 입출금 테이블에서 조회하는데

조건이 계좌 ID가 ACT0011이고 입출금 기간이 2020년 1월 전체를 조건으로 설정했어요.

 

특정 데이터의 값을 수정하고 싶을 때도 WHERE절에 조건을 잘 설정해서 해당 데이터만 수정하게 할 수도 있고

특정 데이터만 삭제하고 싶을 때도 DELETE문에 WHERE 절을 사용해서 원하는 데이터만 삭제가 가능하답니다.

 

물론 트랜잭션을 사용해서 확실하게 확인 후 COMMIT;을 해야 안전할 거고요.

WHERE 절은 어떤 조건을 사용할 수 있는지 하나씩 살펴보겠습니다.

 

위치

SELECT문에서의 위치입니다.

SELECT 컬럼

FROM 테이블

WHERE 조건;

FROM절에 테이블 명 다음으로 WHERE절이 오면 됩니다.

 

UPDATE문에서의 위치입니다.

UPDATE 테이블명

SET 컬럼 = ‘’

WHERE 조건;

UPDATE문은 SET 절에서 수정할 컬럼들을 설정하고 나서 WHERE절이 오면 됩니다.

 

DELETE문에서의 위치입니다.

DELETE (FROM) 테이블명

WHERE 조건.

DELETE문은 테이블명 뒤에 WHERE절이 오면 됩니다.

 

그럼 WHERE 절을 어떻게 설정하고 사용하는지 연산자에 대해 알아봅니다.

 

 

연산자는 비교 연산자, 논리 연산자, SQL연산자가 있습니다.

 

먼저 비교 연산자입니다.

[같다. 수학적 의미와 같아요]

WHERE 컬럼1 = ‘값’;

컬럼 값 중 정확하게 일치하는 값을 찾습니다.

 

>, <, =>, =<

WHERE 컬럼1 > 2;

컬럼 값보다 큰 것, 작은 것, 같거나 큰 것, 같거나 작은 것을 찾을 때 사용합니다.

 

SQL연산자입니다.

IN (찾고 싶은 목록값)

WHERE 컬럼1 IN (‘값1’, ‘값2’, 값3’);

컬럼1에 속한 여러 개의 값을 선택할 때 사용합니다.

목록 중 일치하는 값에 대한 데이터만 선택됩니다.

값 목록은 컬럼1과 일치하는 컬럼을 조회하는 SELECT문을 사용해도 됩니다.

 

BETWEEN A AND B

WHERE 컬럼1 BETWEEN ‘값1’ AND ‘값2’

컬럼1에서 값1과 값2 사이의 모든 값을 선택합니다.

 

IS NULL

WHERE 컬럼1 IS NULL;

해당 컬럼의 값이 설정되지 않은 데이터를 선택합니다.

빈 값과는 다릅니다.

 

LIKE

WHERE 컬럼1 LIKE ‘K%’;

WHERE 컬럼1 LIKE ‘%K’;

WHERE 컬럼1 LIKE ‘%K%’;

원하는 값이 일부분인 데이터를 찾을 때 사용합니다.

K%면 K로 시작하는 모든 데이터를. %K면 K로 끝나는 모든 데이터를, %K%면 값 어디든 K가 들어가는 모든 데이터를 선택하게 됩니다.

 

논리 연산자입니다.

AND

WHERE 컬럼1 = ‘값1’

AND 컬럼2 = ‘값2’

AND 컬럼3 < 4;

AND를 기준으로 앞의 조건과 뒤의 조건이 둘 다 참이어야 합니다.

위 컬럼1, 컬럼2, 컬럼3 세 가지 모두 참이어야 해당 조건에 대한 데이터가 나옵니다.

즉, 데이터 중 컬럼1의 값에 ‘값1’이 있으면 참이면서 해당 값만 추출하고 없으면 거짓이 됩니다.

그렇게 되면 뒤의 2개 조건이 참이라도 조회되는 데이터는 없어요.

 

OR

WHERE 컬럼1 = ‘값1’

   OR 컬럼 2 = ‘값2’;

OR를 기준으로 앞 뒤 조건 중 하나는 참이어야 해당 조건에 맞는 데이터가 나옵니다.

 

NOT

WHERE 컬럼1 NOT IN (‘값1’, ‘값2’);

WHERE 컬럼1 NOT BETWEEN ‘값1 AND ‘값2’;

WHERE 컬럼1 NOT LIKE ‘K%’;

WHERE 컬럼1 IS NOT NULL;

 

해당 조건 앞에 사용하면서 조건이 아닌 값들을 선택하게 됩니다.

 

같지 않다는 의미로 검색이 필요할 수도 있습니다.

그런 경우는 다음과 같이 사용하면 됩니다

 

!=, <>

WHERE 컬럼1 != ‘값1’;

WHERE 컬럼1 <> ‘값1’;

필자는 가독성이 좋은 두번째 <>를 애용합니다. ㅎㅎ

 

지금까지 기본적인 WHERE절의 연산자에 대해 살펴봤습니다.

사실 이 외에도 ROWNUM, 테이블 간 조인, TOP 도 있는데 따로 자세히 다뤄보겠습니다.

 

잘못된 내용이나 수정이 필요한 부분이 있으면 댓글 주세요.

즐 코딩하세요~

반응형