SQL - CONCAT, ALIAS, DISTINCT, LIMIT

Bean·2024년 2월 14일

Data

목록 보기
7/14

CONCAT

  • 여러 문자열을 하나로 합치거나 연결해줌
    -- 문법
    select CONCAT ('string1','string2',...);
    -- 예제
    select CONCAT (name, '짱') from celeb;
    -- celeb 테이블에 있는 칼럼과 CONCAT을 조합할 수 있다
    +--------------------+
    | concat(name, '짱') |
    +--------------------+
    | ㅇㅇㅇ짱            |
    | ㅁㅁㅁ짱            |
    | ㄱㄱㄱ짱              |
    | ㄷㄷㄷ짱            |
    | ㅈㅈㅈ짱            |
    | ㅊㅊㅊ짱            |
    | ㅎㅎㅎ짱            |
    +--------------------+

ALIAS

  • 칼럼이나 테이블 이름에 별칭 생성

  • 칼럼이나 테이블 명이 너무 긴 경우 짧은 별칭으로 대체하기도 함

  • AS는 생략도 가능하다

    -- 문법1 - COLUMN
    select column1 as 별칭  -- as = ALIAS 약자
    from tablename;
    
    -- 문법2 - TABLE
    select 별칭.column1, 별칭.column2, ...  
    from tablename as 별칭;
    -- 예제1) 여러개의 칼럼명에 별칭 주기
    select name as '이름', agency as '소속사'
    from celeb;
    -- 예제2) celeb 테이블의 name과 job_title을 합쳐 profile이라는 칼럼 별칭 생성
    select concat (name, ' : ', job_title) as profile from celeb;
    
    --  예제3) snl_show에 출연한 celeb을 기준으로 두 테이블을 조인하여,
     -- 	   snl_show 테이블은 s, celeb테이블은 c 라는 별칭을 만들어 시즌,에피소드,이름,직업 검색
     select s.season, s.episode, c.name, c.job_title
     from celeb as c, snl_show as s
     where c.name = s.host;
     
    -- 예제2+3) snl_show에 출연한 celeb을 기준으로 두 테이블을 조인하여, 다음과 같이 각 데이터 별칭 지정
    --			snl_show 테이블은 s, celeb테이블은 c 라는 별칭
    --		 	시즌,에피소드,방송일을 합쳐서 '방송정보'
    --			이름, 직업을 합쳐 '출연자정보'
    select concat (s.season, s.episode, s.broadcast_date) as '방송정보',
    concat (c.name, c.job_title) as '출연자정보'
    from celeb as c, snl_show as s
    where c.name = s.host;

DISTINCT

  • 검색한 결과의 중복 제거

    -- 문법
    select DISTINCT column1, column2, ...
    from tablename;
    -- 데이터 불러오기 (중복 값이 포함됨)
    select agency from celeb;
    +------------+
    | agency     |
    +------------+
    | EDAM ent   |
    | WOOLIM ent |
    | NAMOO ent  |
    | YG ent     |  ◀︎
    | ANTENA ent |
    | YG ent     |  ◀︎
    | YG ent     |  ◀︎
    +------------+
    
    -- DISTINCT 중복 값을 제외한 데이터 불러오기
    select DISTINCT agency from celeb;
    +------------+
    | agency     |
    +------------+
    | EDAM ent   |
    | WOOLIM ent |
    | NAMOO ent  |
    | YG ent     |
    | ANTENA ent |
    +------------+

LIMIT

  • 검색결과를 정렬된 순으로 주어진 숫자만큼만 조회
    select column1, column2, ...
    from tablename
    where condition
    LIMIT number;
    -- 예제(1) celeb 테이블 데이터 3개만 가져오기
    select id, name from celeb LIMIT 3;
    +----+--------+
    | ID | name   |
    +----+--------+
    |  1 | 아이유  |
    |  2 | 이미주  |
    |  3 | 송강   |
    +----+--------+
    -- 예제(2) celeb 테이블에서 나이가 가장 적은 4명 가져오기
    select id, age, name from celeb
    order by age ASC
    LIMIT 4;
    +----+------+--------+
    | id | age  | name   |
    +----+------+--------+
    |  7 |   23 | 이수현 |
    |  2 |   28 | 이미주 |
    |  3 |   28 | 송강   |
    |  1 |   29 | 아이유 |
    +----+------+--------+
profile
시리즈별로 봐주시길

0개의 댓글