join (두개의 테이블 합치기 ) → 컬럼을 확장할때 쓰임

  • inner join 교집합 select * from [A] inner join [B] on <조건>
  • left outer join 왼쪽 집합 select * from [A] left join [B] on <조건>
  • right outerjoin 오른쪽 집합 select * from [A] right join [B] on <조건>
  • Full outer join select * from [Atb] left join [Btb] on <조건구문>
  • 조인은 본인의 tb 값만을 출력하지만 union은 자신의 tb에 외부 tb 값을 추가할 수 있음(중복 처리)
  • mysql 은 full join 지원 x
  • left join, rigth join → 중복 값 처리: union

UNION ( 중복처리, 필드 칼럼에 외부 table 값을 넣음 select 2번)

  • 칼럼 추가가 아닌 공유, 이주 시킴
  • union
    - select * from [A] union select [추가 내용]
   select * from market union select 1,1,1,1; (O)
   select * from market union select 1,1,1; (X) 칼럼수가 일치
  • select * from [A] union select [추가 내용] from [B]
   select m_category,m_name,m_seller from market left join sword on m_name=s_name
   union
   select m_category,m_name,m_seller from market right join sword on m_name=s_name;
  • select m_name from market union select s_name from sword;
         +-----------------+
          | m_name          |
          +-----------------+
          | 촉마지팡이        |
          | 곤륜검           |
          | 곤륜기공패        |
          | 풍뢰검           |
          | 염화검           |
          | 요마검           |
          +-----------------+
          

서브 쿼리 → 조건을 찾기 위해 where 절에서..

  • 단일행 서브 쿼리 → 실행 결과가 1건
    select * from sword where s_name = (select m_name from market where m_seller='evernick');
    • 다중행 서브 쿼리 → 실행 결과가 여러 건인 서브 쿼리 ( 'in' 칼럼 1개만 비교 )
      select * from sword where s_name in (select m_name from market where m_category='검');
    • 다중열 서브 쿼리 → 'in' 칼럼 2개 이상 비교
      select * from sword where (s_name,s_level) in (select m_name, 50 from market where m_category='검');
      → 50이라는 level이 market에 없기에 비교를 위해 컬럼을 임의로 만들어냄
  • 뷰 테이블 만들기 create view [view명] as [sql문]
profile
:) GITHUB: https://github.com/YJ2123412

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN