SQL(5)

easyliving·2022년 8월 4일

DB+BACK_END (ORACLE/MYSQL)

목록 보기
16/20

CONCAT

여러 문자열을 하나로 합치거나 연결 

mysql> select concat('이름:',name) from celab;
+------------------------+
| concat('이름:',name)   |
+------------------------+
| 이름:아이유            |
| 이름:이미주            |
| 이름:송강              |
| 이름:유재석            |
| 이름:강동원            |
| 이름:차승원            |
| 이름:이수현            |
+------------------------+
7 rows in set (0.00 sec)

ALIAS

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


예)
- name을 이름으로 별칭을 만들어 검색 
- name은 이름으로, agency는 소속사로 별칭을 만들어 검색
- name과 job_title을 합쳐서 profile 이라는 별칭을 만들어 검색 
mysql> select concat(name,':',job_title) as profile from celab;
+----------------------------------+
| profile                          |
+----------------------------------+
| 아이유:가수,텔런트               |
| 이미주:가수                      |
| 송강:텔런트                      |
| 유재석:MC,개그맨                 |
| 강동원:영화배우,텔런트           |
| 차승원:영화배우,모델             |
| 이수현:가수                      |
+----------------------------------+

예)
snl_show에 출연한 celeb을 기준으로 두 테이블을 조인하여, 
celeb 테이블은 c
snl_show 테이블은 s
라는 별칭을 만들어서 출연한 시즌과 에피소드,이름,직업을 검색 

mysql> select s.season,s.episode,c.name,c.job_title
    -> from celab AS c, snl_show AS s
    -> where c.name=s.host;
+--------+---------+-----------+------------------------+
| season | episode | name      | job_title              |
+--------+---------+-----------+------------------------+
|      8 |       7 | 강동원    | 영화배우,텔런트        |
|      8 |       8 | 유재석    | MC,개그맨              |
|      8 |       9 | 차승원    | 영화배우,모델          |
|      8 |      10 | 이수현    | 가수                   |
+--------+---------+-----------+------------------------+

예)
snl_show에 출연한 celeb을 기준으로 두 테이블을 조인하여 다음과 같이 
각 데이터의 별칭을 사용하여 검색
 	- 시즌,에피소드,방송일을 합쳐서 '방송정보'
    - 이름,직업을 합쳐서 '출연자 정보'
    
mysql> select CONCAT (s.season,'-', s.episode, '(', s.broadcast_date, ')')'방송정보',CONCAT(c.name,'(',c.job_title,')')'출연자정보' from celab c,snl_show s where name=host;
+------------------+-----------------------------------+
| 방송정보         | 출연자정보                        |
+------------------+-----------------------------------+
| 8-7(2020-09-05)  | 강동원(영화배우,텔런트)           |
| 8-8(0202-09-12)  | 유재석(MC,개그맨)                 |
| 8-9(2020-09-19)  | 차승원(영화배우,모델)             |
| 8-10(2020-09-26) | 이수현(가수)                      |
+------------------+-----------------------------------+

DISTINCT

검색한 결과의 중복 제거 

mysql> select agency from celab;
+--------------------------+
| agency                   |
+--------------------------+
| EDAM엔터데이먼트         |
| 울림엔터데이먼트         |
| 나무엑터스               |
| 안테나                   |
| YG엔터테이먼트           |
| YG엔터테이먼트           |
| YG엔터테이먼트           |
+--------------------------+
7 rows in set (0.00 sec)

mysql> select distinct agency from celab;
+--------------------------+
| agency                   |
+--------------------------+
| EDAM엔터데이먼트         |
| 울림엔터데이먼트         |
| 나무엑터스               |
| 안테나                   |
| YG엔터테이먼트           |
+--------------------------+
5 rows in set (0.01 sec)



mysql> select distinct sex,job_title from celab where job_title LIKE'%가수%';
+------+------------------+
| sex  | job_title        |
+------+------------------+
| F    | 가수,텔런트      |
| F    | 가수             |
+------+------------------+
2 rows in set (0.00 sec)

LIMIT

검색결과를 정렬된 순으로 주어진 숫자만큼만 조회

mysql> select * from celab order by age limit 4;
+----+-----------+------------+------+------+------------------+--------------------------+
| ID | NAME      | BIRTHDAY   | AGE  | SEX  | JOB_TITLE        | AGENCY                   |
+----+-----------+------------+------+------+------------------+--------------------------+
|  7 | 이수현    | 1999-05-04 |   23 | F    | 가수             | YG엔터테이먼트           |
|  2 | 이미주    | 1994-09-23 |   28 | F    | 가수             | 울림엔터데이먼트         |
|  3 | 송강      | 1994-04-23 |   28 | M    | 텔런트           | 나무엑터스               |
|  1 | 아이유    | 1993-05-16 |   29 | F    | 가수,텔런트      | EDAM엔터데이먼트         |
+----+-----------+------------+------+------+------------------+--------------------------+

mysql> select*
    -> from celab
    -> where sex='M'
    -> order by age desc
    -> limit 2;
+----+-----------+------------+------+------+---------------------+----------------------+
| ID | NAME      | BIRTHDAY   | AGE  | SEX  | JOB_TITLE           | AGENCY               |
+----+-----------+------------+------+------+---------------------+----------------------+
|  4 | 유재석    | 1972-08-14 |   50 | M    | MC,개그맨           | 안테나               |
|  6 | 차승원    | 1970-06-07 |   48 | M    | 영화배우,모델       | YG엔터테이먼트       |
+----+-----------+------------+------+------+---------------------+----------------------+


mysql>  select concat('SNL 시즌',  s.season, ' 에피소드 ',  s.episode,  ' 호스트 ',  s.host)'방송정보',c.age from snl_show s,celab c where s.host=c.name order by c.age desc limit 2;
+------------------------------------------------+------+
| 방송정보                                       | age  |
+------------------------------------------------+------+
| SNL 시즌8 에피소드 8 호스트 유재석             |   50 |
| SNL 시즌8 에피소드 9 호스트 차승원             |   48 |
+------------------------------------------------+------+



    
profile
가끔져요

0개의 댓글