티스토리 뷰

 

 

 

 

 

내가 생각하기에 기본쿼리문이라고 하면 4개를 말한다. 데이터를 조회할 수 있는 " SELECT ", 데이터를 추가할 수있는 " INSERT ", 데이터를 수정할 수 있는 " UPDATE ", 마지막으로 데이터를 삭제할 수 있는 "DELETE" 이 네가지가 쿼리문을 작성하는데 가장 필수적인 요소라고 생각한다.

 

이 친구들은 DML (Data Manipulation Language) 라고도 부른다. 데이터 조작 언어테이블에 데이터를 검색, 삽입, 수정, 삭제하는 데 사용된다.

 

각각의 기능들에 대하여 쿼리문을 직접 작성해 보며 하나하나 내용을 정리하려고 한다. 그럼 가보자!!

 


[기본 세팅]

 

저번 글에서 정리했던 테이블, 기본키, 시퀀스를 써서 member3라는 테이블을 하나 만들고, 시퀀스를 추가하였다. 기본키는 중복되어서는 안되는 값인 id로 지정하였다.

 

 

★ 아참 그리고 SQL마다 조금씩 쿼리문이 다르다.

 

이 글에서는 일단은 Oracle 기준으로 쿼리문을 작성할 계획이다. 차이점을 예를들면 MySql 에는 LIMIT라는 함수가 있어서 조회되는 데이터의 수를 5개, 10개 이렇게 제한할 수 있는데, 오라클에는 LIMIT 연산자가 없어 대신 ROWNUM을 써서 그 역할을 수행한다.

 

1. SELECT (데이터 조회)

 

데이터를 조회하는 기능을 수행한다. SELECT는 하나만으로도 한 페이지를 꽉 채울만큼 여러가지 조회 방법을 가진다. 조건에 맞는 데이터만 찾을 수 도 있고, 데이터의 개수를 제한 해서 조회도 가능하다. 또 오름차순이나 내림차순으로 조회하는것도 가능하다.

 

1-1.  SELECT 기본구조 

 

SELECT m.id FROM MEMBER3 m;

 

" SELECT [조회할 컬럼명] FROM [테이블명] "

 

 

SELECT에는 1번처럼 원하는 컬럼만 선택해서 조회할 수 있는 부분조회가 있고. 2번처럼 전체 데이터를 조회할 수 있는 전체조회가 있다. 두개 다 실행시켜 보자.


 

1. 전체 조회(*)

 

: 테이블에 있는 모든 컬럼에 대하여 값을 조회한다. 

 

 

 

지금은 아무런 데이터도 들어가 있지 않아 빈 테이블만 조회된다.  데이터를 조회 해보기 위해서 일단 값을 몇개 추가해보았다.

 

 

 

이렇게 SELECT와 FROM사이에  (*) 를 적으면 테이블 안에 전체 데이터를 조회 해준다. 보통은 전체 데이터를 조회하고 그 중에서 찾고자 하는 컬럼을 선택해 부분조회를 많이한다.


 

2. 부분 조회

 

: 테이블에 전체 데이터를 조회하는것이 아니라 일부분만 조회하는것이다. 즉, 내가 원하는 컬럼만 선택해서 조회할 수 있다. 그림에서 보는 것처럼 테이블 MEMBER3 이름 뒤에 적혀있는 m(보통 테이블명은 대문자, 약어는 소문자로 표시한다) MEMBER3 테이블의 약자(별칭)이다. 테이블명이 길면 전부 쓰기가 힘드니 저렇게 줄여서 쓸 수 있게 해놓았다. 근데 꼭 테이블명의 앞자리를 적는건 아니고 자기가 알아보기 쉽게 적으면된다.

 

 

테이블명 뒤에 약자인 m을 적으면, m.id, m.NAME 이렇게 간단하게 컬럼을 지정할 수 있다. 컬럼명 적을때 id 이렇게 적어도 되고 ID이렇게 적어도된다. 대소문자 구분이 없다는 말! 가독성 때문에 대소문자 구분해서 쓴다.(일종의 규칙)

 

 

이렇게 id와 name만 있는 테이블이 조회되는것을 볼 수있다.


 

3. 조건 조회(WHARE)

 

 

테이블에 있는 데이터를 조건으로도 조회가 가능하다. WHERE 뒤에  연산기호 (<, >, =, <=, <=) 를 이용하여

id = 도깨비 , age >=25 이런식으로 조건에 해당하는 값만 조회할 수 있다.

 

 

기본 구조

 

 

" SELECT [조회할 컬럼명] FROM [테이블명]  WHERE [조건]  "

 

 

WHERE age = 25 라는 조건을 줘서, 나이가 25살인 멤버만 조회하는 쿼리문을 작성해보았다.

 

 

 

WHERE age > 25 라는 조건을 줘서, 나이가 25살 이상인 멤버만 조회하여 다른 결과를 보여준다. 

 

 

조건절 연산자 (AND/ OR / IN / LIKE / BETWEEN  / NOT )

 

조건문을 하나만 가지고 조회를 하기에는 내가 원하는 데이터를 상세하게 뽑아내기가 힘들 수도 있다. 그래서 조건문에는 여러가지 연산자들이 존재한다. 연산자를 씀으로써 조건을 보다 상세하게 입력할 수 있다.

 

① AND : and 연산자는  '그리고' 라는 뜻으로 사용되어 조건1 과 조건 2 모두 만족하는 데이터만 조회해준다.

 

OR : or 연산자는 '또한'이라는 뜻으로 사용되어 조건1과 조건2 둘 중 하나만 참이더라도 해당하는 데이터를 조회해주는 연산자이다.

 

IN :  in연산자는 or조건 여러개가 한 그룹으로 묶여있는 형태이다. 그 중 하나라도 참이면 조건에 맞는 데이터를 조회한다.

 

④ LIKE : like연산자는 문자패턴과 일치하는 데이터를 조회해준다. 

 

⑤ BETWEEN : between 연산자는 값1 이상 값2 이하인 데이터들을 조회해준다.(즉, 해당하는 범위의 값)

 

⑦ IS NULL : 컬럼의 값이 null인 을 찾아 조회해준다.

 

IS NOT NULL : 컬럼의 값이 null이 아닌 을 찾아 조회해준다.

 

 

조건 연산자 같은 경우 종류가 많아 따로 글을 작성하였다. 아래 글에서 좀 더 자세하게 예시와 같이 정리해놓았다.   

 

[ Where 조건문 정리 ]

 

 

[Oracle] Query문을 작성해 보자! (4) - Where 조건문의 다양한 연산자 ( AND/ OR / IN / LIKE / BETWEEN / NOT )

조건문에 쓰이는 연산자들이 꽤 많아 따로 정리해야 할 것 같아 글을 작성한다. 대표적으로 AND, OR, IN, LIKE, BETWEEN, NOT 연산자들이 존재하고, 각각 어떻게 사용하는지 쿼리문과 그림을 보면서 정리

gnngtkwk.tistory.com

 

 


 

4. 오름차순 / 내림차순

 

 

데이터를 오름차순, 내림차순으로 정렬하여 조회할 수도 있다. 컬럼명을 하나 선택하여 그 컬럼을 기준으로 숫자가 더 높은 행(튜플)을 맨 앞에 놓을 수 도있고 반대로 맨 뒤로 보낼 수도있다. 이름순, 나이순 등으로 데이터를 정렬하여 조회하고 싶을때 사용한다.

 

 

- ASC : 오름차순          - DESC : 내림차순

 

 

WHERE은 넣지 않아도된다 (그냥 마음대로 쓴거라...) 데이터를 정렬하여 조회하고 싶을때 사용한다.

 


 

" SELECT [조회할 컬럼명] FROM [테이블명]  WHERE [조건] ORDER BY [컬럼명] ASC or DESC  "

 

 

나이를 기준으로 오름차순 하여 정렬하였다. ORDER BY 뒤에 적힌 AGE가 기준이 되어 나이가 가장 작은 25가 맨위로 오고, 나이가 가장 많은 37가 제일 밑에 위치한다. 뒤에 ASC or DESC따로 적어주지 않으면 기본값인 ASC가 적용이 되어 오름차순으로 정렬이 되어진다. 

 

 

 

반대로 DESC를 적어주면 데이터를 내림차순으로 정렬하여 조회한다. 나이가 가장 많은 37이 맨 위에 위치하는 것을 확인할 수 있다.

 


 

5. 중복 제거(DISTINCT)

 

 

DISTINCT 쿼리문을 사용하면 중복되는 값들을 제외하고 데이터를 조회할 수 있다.

 

 

[기존 테이블]

 

SELECT  DISTINCT  REGION  FROM  MEMBER3 ;

 

" SELECT  DISTINCT [조회할 컬럼명] FROM [테이블명] ; 

 

 

 

왼쪽이 REGION 컬럼의 모든 값이고, 오른쪽이 REGION 컬럼을 기준으로 중복된 값을 제외시킨 결과다.

'서울특별시', '경상남도' 등 4개정도의 중복된 값을 제외시키고서 데이터를 조회해준다.

 

그러면 컬럼이 하나가 아니라 두개 이상이면 어떻게 될까?

 

 

SELECT  DISTINCT  REGION, AGE  FROM  MEMBER3;

 

 

그림과 같이 '지역' 이 중복이 되는데도 그대로 나오고, '나이' 가 중복이 되는데도 그대로 나온다. 저렇게 컬럼을 두개 적게되면 두 컬럼을 하나의 그룹으로 묶어서 중복을 계산하기 때문에 두 컬럼의 값이 똑같이 일치해야만 제외시킨다.

 

 


 

6. 합성 연산자(CONCATENATION)

 

CONCATENATION은 ' | | ' (수직바) 문자를 이용하여, 하나의 칼럼과 다른 칼럼을 연결하여 하나의 칼럼처럼 출력할 경우에 사용한다.(컬럼의 이름을 합친다는 말!)

 

 

AGE 컬럼에 붙이기 위한 새로운 컬럼 STR을 추가했다. 이제는 '||' 를 이용해서 컬럼과 데이터의 값을 합치는 작업을 해볼것이다.

 

 

SELECT  AGE  ||  ' '  ||  STR  "AGE_STR"  FROM  MEMBER3  m ;

 

 

짜잔! 컬럼명이 두개 합쳐지고 데이터 또한 합쳐진 결과가 나왔다. 여기서 다시 봐야할건 AGE 컬럼 같은 경우는 NUMBER 타입이었지만, STR 문자열과 합쳐지면서 최종적으로 문자열이 되었다는 점.

 

 

 

 

점점 쿼리문이 길어져서... 이미지를 캡쳐해서 가져오는게 좀 더 가독성이 좋을것 같다. 위 그림과 같이 각각의 컬럼명을 명시해주고 데이터를 조회하면 "AGE_STR" 컬럼이 추가된 모양의 MEMBER3 테이블을 불러올 수 있다.

 

 

<몇가지 체크>

 

 데이터 조회시 컬럼의 이름을 원하는 이름으로 바꿔서 조회할 수 있다.

 

 

저렇게 컬럼명 뒤 " " 사이에 원하는 컬럼명을 넣으면, 적었던 컬럼명으로 바껴서 조회가 된다.(' ' 한자리 따음표 (x), 이것만큼은 두자리 따음표 " "(o) )

 

 

원래 정석은 AS뒤에 바꿀 컬럼명을 적는건데 생략해도 된다.

 

 

FROM 테이블명 적을시 뒤에 약자를 붙여서 편하게 사용할 수있다.

 

 

저렇게 테이블명 뒤에 약자를 적어서 축약형태로 쓸 수가 있다. 약자 뒤에 점(.)을 붙이면 해당하는 테이블의 컬럼명이 자동으로 보여진다. 나중에 테이블 2개를 JOIN해서 테이블을 만들거나 데이터를 조회할 때 유용하게 쓰인다.

 

 

대부분 알고 있을만한 내용이지만 그래도 없는것 보다는 있는게 낫다는 생각에 추가해보았다.

 


 

오늘은 SELECT로 할 수 있는 많은 실험을 해보았다. 백엔드로서 가장 중요한 SQL문을 말하라 한다면 당연히 SELECT 쿼리문 일것이다. 물론 INSERT, UPDATE등도 많이 쓰이지만 프로젝트를 진행하면서 SELECT를 가장 많이 쓴거 같다. 내 생각이니 틀릴 수도 있지만... 그냥 제일 많이 쓰는 것 같다. 그래서 SELECT만 따로 빼서 이렇게 글도 작성하였다. 이것말고도 Group by라던지 함수를 이용한 조회라던지 있지만, 그 내용들은 다음 포스팅에서 정리하려고 한다. 

 

깊이있는 공부 중요하다. 근데 나는 컴퓨터가 아니다. 백과사전 처럼 달달달 외울 수 없기에 이렇게 정리하고 다시 보고 반복한다. 기본기만이라도 바르게 할 수 있는 개발자가 되어야겠다. 기초를 튼튼히!!

 

 

 

[도움 주신 사이트]

 

'분류 전체보기' 카테고리의 글 목록

끊임없이 제 자신을 계발하는 개발자입니다👨🏻‍💻

yermi.tistory.com

 

 

SQL 특징, SQL의 종류, Select 문, Select 산술연산, as 별칭 부여, || 연결 연산자, where 조건절, in, between,

---------------------------SQL---------------------------------- --SQL 이란 --Staructured QUERY LANGUAGE(구조화된 질의언어) --데이터베이스를 대상으로 질의를 수행할 수 있다. --데이터의 조회, 데이터의 추가, 데이터

cmelcmel.tistory.com