새소식

SQL

SQL | MySQL | SELECT(1) - 간단한 데이터 조작

  • -

 

 

SELECT문을 사용하여 테이블의 데이터를 선택할 수 있다. 

SELECT
[ALL | DISTINCT | DISTINCTROW]
select_expr [, select_expr ...]
[FROM table_references
    [WHERE where_condition]
    [GROUP BY {col_name | expr | position}
          [ASC | DESC], ... [WITH ROLLUP]]
    [HAVING where_condition]
    [ORDER BY {col_name | expr | position}
          [ASC | DESC], ...]
    [LIMIT {[offset,] row_count | row_count OFFSET offset}]
    [PROCEDURE procedure_name(argument_list)]
    [INTO OUTFILE 'file_name'
         [CHARACTER SET charset_name]
         export_options
         | INTO DUMPFILE 'file_name'
         | INTO var_name [, var_name]]
]

 


 

01. 간단한 SELECT문 사용 

 

 

1)  테이블 전체 자료 선택 

 

SELECT  *  FROM 테이블;  

     : 테이블 전체 자료를 선택할 때는 select 뒤에 *(asterick) 기호를 넣어주면 된다.

SELECT * FROM store;

 

 

 

2)  특정 열 선택 

 

 SELECT  컬럼1, 컬럼2, ...  FROM 테이블;

SELECT 상호명, 표준산업분류명, 행정동명
FROM store;

 

 

3)  조건을 만족하는 행만 추출하기 

 

 SELECT  컬럼1, 컬럼2, ...  FROM 테이블 WHERE 컬럼a = 조건1 ;

 

· 행정동명이 '탄방동'인 상호명, 표준산업분류명, 행정동명 행 추출

SELECT 상호명, 표준산업분류명, 행정동명
FROM store
WHERE 행정동명 = '탄방동';

 

 

· 행정동명이 '탄방동' 또는 '괴정동'인 상호명, 표준산업분류명, 행정동명 행 추출

SELECT 상호명, 표준산업분류명, 행정동명
FROM store
WHERE 행정동명 = '탄방동' OR 행정동명 = '괴정동';

 

 

 

4)  새로운 열 만들기 

 

▶ 함수 또는 연산자 사용 

 

· 도로명과 건물명 열 문자열 합치기 

SELECT 도로명, 
       건물명,
       concat(도로명,  " ", 건물명)
FROM store;

 

 

 

5)  열 이름에 가명(alias) 주기 

 

SELECT  새로운 컬럼 [AS] alias  FROM 테이블;

SELECT 도로명 AS 도로, 
       건물명 AS 건물,
       concat(도로명,  " ", 건물명)  AS `도로+건물`
FROM store;

 

 

 

6)  원하는 순서로 데이터 가져오기 

 

· ORDER BY 구문을 사용해서 특정 컬럼을 기준으로 데이터 정렬 가능.

      - ASC: 오름차순(default)

      - DESC: 내림차순

SELECT column names FROM table_references
[WHERE where_condition ]
ORDER BY {column name | new column} {ASC | DESC};

 

· 상가업소번호를 기준으로 오름차순 정렬 

SELECT 상가업소번호, 상호명
FROM store
ORDER BY 상가업소번호;
SELECT 상가업소번호, 상호명
FROM store
ORDER BY 1;

 

 

 

· 상가업소번호를 기준으로 내림차순 정렬 

SELECT 상가업소번호, 상호명
FROM store
ORDER BY 상가업소번호 DESC;

SELECT 상가업소번호, 상호명
FROM store
ORDER BY 1 DESC;

 

 

· ORDER BY 구문 뒤에 열을 추가하면 2차 정렬도 가능하다. 

 

 

7)  데이터를 원하는 위치에서 일정한 개수만큼 선택

 

▶ LIMIT 가져올 갯수개수 또는 LIMIT 건너뛸 개수, 가져올 개수 

     : 원하는 위치에서 원하는 만큼만 데이터를 가져올 수 있음. 

SELECT column names FROM table_references
[WHERE where_condition ]
[ORDER BY {column name | new column} {ASC | DESC}]
LIMIT [offset,] row_count ;

 

· 처음부터 10개의 행만 가져오기 

SELECT * FROM store
LIMIT 10;
SELECT * FROM store
LIMIT 0, 10;

 

 

· 30번째 행까지 건너뛰고 31번째 행부터 40번째 행 가져오기 

SELECT * FROM store
LIMIT 30, 10;

 

 

ORDER BY RAND() LIMIT 으로 Random Sample

     : 표본조사에 있어서 표본을 모집단 전체의 경향을 정확하게 나타낼 수 있도록

       완전 무작위(임의로) 추출 하는 방법 

 

· store 자료에서 표본의 크기가 100인 표본을 추출하기

SELECT * FROM store
ORDER BY rand() 
LIMIT 0, 100;

 

 

8) 중복된 행을 제거하여 선택 

 

SELECT DISTINCT column names FROM table_references ;

SELECT count(상권업종소분류코드) 
FROM store;

상권업종소분류코드 중복을 제거하기 전 행 개수는 7,672

 

SELECT count(DISTINCT 상권업종소분류코드) 
FROM store;

상권업종소분류 코드 중복을 DISTINCT로  제거한 후 행 개수는 104개로 중복이 제거됨.

 

 

 

 


출처 및 참고 문헌(reference)

 

 

Contents