데이터 처리 도구/SQL

[MySQL] 데이터 꺼내오기, LIMIT & OFFSET

yourhm 2022. 5. 4. 11:03

모든 컬럼 조회하기

SELECT *
FROM TableName

• SELECT 문을 사용하여 데이터를 조회한다.

 * (아스타)는 전체 컬럼의 모든 내용을 다 꺼내오라고 명령하는 약속된 기호다.

 

 

원하는 특정 컬럼만 조회하기

SELECT ColName1, ColName2  -- 컬럼명
FROM TableName  -- 테이블명
LIMIT 10

SELECT 바로 뒤에 컬럼명을 적어준다. 여러 컬럼명을 적어줄 경우 ' , (콤마)' 를 사용하여 나열하면 된다.

SQL 문법의 예약어는 대문자를 사용하고, 데이터 관련 텍스트는 소문자로 구분해서 사용한다. 이는 코드의 가독성을 높이기 위해 사용자들의 관습적으로 사용해오고 있다.

 LIMIT : 매번 테이블의 모든 데이터를 호출하게 되면 불필요하게 많은 시간이 걸리기 때문에, LIMIT을 사용하여 샘플 데이터를 확인하는 습관을 들이도록 하자. 현업에서는 데이터 양이 많기 때문에 LIMIT 사용하는 것을 생활화하자..!

 

 

중복없는 유니크한 값만 조회하기

SELECT DISTINCT ColName
FROM TableName

 중복없이 유니크한 값만 조회하고 싶을 때는 SELECT문에서 원하는 컬럼명 앞에 DISTINCT 를 적어준다.

 

 

 

여러 컬럼 조회시 DISTINCT는 특정 컬럼에만 적용되지 않으며, DISTINCT 뒤에 오는 모든 컬럼에 적용된다. 즉, 뒤에 따라오는 '모든 컬럼의 조합' 에 대해 중복을 제거한 결과가 출력된다. 예를 들어 아래와 같은 테이블이 있다고 하자. 

 

name subject
jennie math
mark music
mark music
peter music
peter science

 

SELECT DISTINCT name
     , subject
FROM class


# OUTPUT:
+-------+---------+
|name   | subject |
+-------+---------+
|jennie | math    |
|mark   | music   |
|peter  | music   |
|peter  | science |
+-------+---------+

여러 컬럼 조회시 해당 컬럼들의 조합에 대해 중복을 제거하고 싶으면, DISTINCT를 앞에 한번만 입력하면 된다. 예시에서도 name이라는 컬럼과 subject라는 컬럼의 조합에 대해서 중복인 경우는 'mark - music' 밖에 없었으므로 해당 로우만 제거된 결과가 출력되었다. 

 

 

 

 

별칭 사용하기

SELECT ColName AS temp123
FROM TableName

별칭(alias, 알리아스)란?

• 값에 별칭을 주어 접근을 별칭 형태로 할 수 있도록 하는 역할을 한다. 데이터 컬럼, 테이블, 서브쿼리, WHERE절, HAVING절 등에 사용할 수 있다.

알리아스를 사용할 때 예약어를 변수명으로 사용하고 싶은 경우, 쌍따옴표(“ ”)를 이용하여 string화 해주면 된다. (예시: AS rank [X] → AS “rank” [O])

 알리아스를 사용할 때 공백이나 특수 문자를 포함하거나 대소문자를 구분하는 경우 쌍따옴표(“ ”)로 묶어주어야 한다. (예시: AS Cancellation Rate [X] → AS “Cancellation Rate” [O])

 

 

[심화] LIMIT & OFFSET

-- 인자 1개
SELECT * FROM tablename LIMIT n           --> 1부터 n개 rows

-- 인자 2개 or 인자 1개 + OFFSET
SELECT * FROM tablename LIMIT n, m        --> n+1부터 m개 rows
SELECT * FROM tablename LIMIT m OFFSET n  --> n+1부터 m개 rows

 인자 1개 쓰는 경우
 인자 2개 쓰는 경우 = 인자 1개 + OFFSET 함께 쓰는 경우

 

 

id name
1 a
2 b
3 c
4 d
5 e
6 f
7 g

 

-- 인자 1개
SELECT id FROM Students LIMIT 3           --> 1, 2, 3

-- 인자 2개 or + OFFSET
SELECT id FROM Students LIMIT 3, 4        --> 4, 5, 6, 7
SELECT id FROM Students LIMIT 3, 1        --> 4
SELECT id FROM Students LIMIT 1 OFFSET 3  --> 4 (3개까지는 날리고 그 다음 한개만 가져와!)