데이터베이스 SQL SELECT문 총정리

2024. 11. 8. 22:48·IT Dictionary/Database
반응형

SELECT

  • DML중 조회를 담당하는 구문으로, 외부 스키마(사용자 관점)에서 주로 사용된다.
  • 테이블뿐만 아니라, 뷰도 조회가 가능하다.
SELECT {ALL | DISTINCT} [속성] FROM [테이블]  {WHERE [조건]} {GROUP BY [속성] HAVING [조건]} {ORDER BY [DESC | ASC]}

1. {ALL | DISTNCT}

  • ALL : 중복을 포함해준다. (기본값, 생략가능)
SELECT ALL * FROM 구매고객
번호 이름 상품
1 홍길동 귤
2 이순신 오렌지
3 홍길동 오렌지

 

  • DISTINCT : 중복을 제거해준다.
SELECT DISTINCT * FROM 구매고객
번호 이름 상품
1 홍길동 귤
2 이순신 오렌지

 

2. {WHERE}

  • 조건을 적용하여 투플들을 검색한다.
  • WHERE [조건] 으로 작동한다.
SELECT * FROM 구매고객 WHERE 학생 = '홍길동'
번호 이름 상품
1 홍길동 귤
3 홍길동 오렌지

 

  • 비교 연산자(>, >=, <, <=, <>)와 논리 연산자(AND, OR, NOT)도 사용이 가능하다.
SELECT * FROM 구매고객 WHERE 번호 > 2
번호 이름 상품
3 홍길동 오렌지

 

  • Like : 부분적으로 일치하는 조건으로 검색 
SELECT * FROM 구매고객 WHERE 이름 Like "홍%"
/* 이름이 홍씨로 시작하는 모든 투플을 검색함 (글자수 상관X) */
SELECT * FROM 구매고객 WHERE 이름 Like "홍_"
/* 이름이 홍씨로 시작하는 모든 투플을 검색함 (홍으로 시작하면서 두글자인 투플 검섹) */

 

  • IS NULL: 속성값이 NULL 인지 확인
SELECT * FROM 구매고객 WHERE 이름 IS NULL
/* 이름이 NULL 인지 확인 */
SELECT * FROM 구매고객 WHERE 이름 IS NOT NULL
/* 이름이 NULL 이 아닌지 확인 */

 

3. {GROUP BY}

  • 지정한 속성을 기준으로 그룹을 만들어 출력한다.
  • 집계함수(SUM, COUNT 등), AS 구문과 함께 주로 사용한다.
  • AS : 속성을 다른 이름으로 바꿔줌 (조회할 때만)
SELECT 이름, COUNT(상품) AS 총구매량 FROM 구매고객 GROUP BY 이름
이름 총구매량
홍길동 2
이순신 1

 

4. {HAVING}

  • GROUP BY 에 조건을 추가한다. (WHERE 과 유사)
SELECT 이름, COUNT(상품) AS 총구매량 FROM 구매고객 GROUP BY 이름 HAVING COUNT(상품) >= 2
이름 총구매량
홍길동 2

 

5. {ORDER BY}

  • DESC : 내림차순 정렬
  • ASC : 오름차순 정렬
  • 여러 개의 속성들을 정렬할 수 있다.
SELECT * FROM 구매고객 ORDER BY 이름 DESC, 번호 ASC
번호 이름 상품
2 이순신 오렌지
1 홍길동 귤
3 홍길동 오렌지

 


 

JOIN (조인 검색)

  • 데이터 검색을 위해 여러개의 테이블을 연결하는 것
  • 외래키를 기준으로 테이블을 연결한다. (즉, 도메인이 같야아함)
번호 이름 상품
1 홍길동 귤
2 이순신 오렌지
3 홍길동 오렌지

구매고객 테이블

 

이름 나이
홍길동 20
이순신 30
이성계 50

고객 테이블

 

 

  • INNER JOIN (내부 조인) : 테이블 간 교집합을 조회한다.
SELECT 구매고객.이름, 구매고객.상품, 고객.나이 FROM 구매고객 INNER JOIN 고객 ON 구매고객.이름 = 고객.이름
이름 상품 나이
홍길동 귤 20
이순신 오렌지 30
홍길동 귤 20
ON 구매고객.이름 = 고객.이름
구매고객 테이블에 존재하는 이름만 고객 테이블에서 조회한다.


  • OUTER JOIN (외부 조인) : 테이블 간 차집합 + 교집합을 조회한다. (LEFT, RIGHT)
SELECT 구매고객.이름, 구매고객.상품, 고객.나이 FROM 고객 LEFT OUTER JOIN 주문고객 ON 구매고객.이름 = 고객.이름
SELECT 구매고객.이름, 구매고객.상품, 고객.나이 FROM 주문고객 RIGHT OUTER JOIN 고객 ON 구매고객.이름 = 고객.이름

 

이름 상품 나이
홍길동 귤 20
이순신 오렌지 30
홍길동 귤 20
이성계 NULL 50

 


 

부속 질의문(이중 SELECT)

  • SELECT 안에 또 다른 SELECT를 넣는다.
  • 주로 WHERE 절에서 사용된다.
SELECT * FROM 고객 WHERE 나이 = (SELECT 나이 FROM 고객 WHERE 이름='홍길동')
이름 나이
홍길동 20

 

반응형

'IT Dictionary > Database' 카테고리의 다른 글

데이터베이스(Database) SQL ALTER TABLE 정리  (0) 2024.12.04
데이터베이스(Database) 설계하기  (0) 2024.11.21
데이터베이스 SQL CREATE TABLE 정리  (0) 2024.11.10
데이터베이스(Database) 관계 대수 정리  (1) 2024.11.07
컴활 데이터베이스(Database) 기본 용어 정리  (0) 2023.04.29
'IT Dictionary/Database' 카테고리의 다른 글
  • 데이터베이스(Database) 설계하기
  • 데이터베이스 SQL CREATE TABLE 정리
  • 데이터베이스(Database) 관계 대수 정리
  • 컴활 데이터베이스(Database) 기본 용어 정리
MutJangE
MutJangE
즐거운 인생
  • MutJangE
    MutJangE
    MutJangE
  • 전체
    오늘
    어제
    • 분류 전체보기 (74)
      • IT Dictionary (47)
        • !Solution! (0)
        • Database (7)
        • Network (8)
        • Linux (1)
        • Computer Science (7)
        • Service (2)
        • 정보보안산업기사 (22)
      • 일상 (8)
        • 배포중인 웹 서비스 (1)
        • CERT병 (6)
      • 프로그래밍 (19)
        • Java (1)
        • C# (6)
        • Unity (7)
        • React (4)
        • React native (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.5
    MutJangE
    데이터베이스 SQL SELECT문 총정리
    상단으로

    티스토리툴바