[MySQL] SELECT

2022. 9. 8. 01:53·Programming/MySQL
728x90

SELECT

MySQL에서는 SELECT문을 사용하여 테이블의 레코드를 선택할 수 있다.

SELECT 필드이름
FROM 테이블이름
[WHERE 조건]

FROM 절은 레코드를 선택할 테이블의 이름을 명시한다.

해당 테이블에서 선택하고 싶은 필드의 이름을 SELECT 키워드 바로 뒤에 명시하면 된다.

이때 WHERE 절을 사용하면, 선택할 레코드의 조건을 좀 더 상세히 설정할 수 있다.

테이블의 모든 필드 선택

SELECT 문과 함께 별표(*) 기호를 사용하면, 해당 테이블의 모든 필드를 선택할 수 있다.

SELECT *
FROM 테이블이름

이 방식은 해당 테이블의 '모든 필드'를 선택해야 할 경우에 유용하게 사용할 수 있다.

다음 예제는 Reservation 테이블의 모든 필드를 선택하는 예제다.

SELECT *
FROM Reservation;

특정 조건의 레코드 선택

SELECT 문과 함께 WHERE 절을 사용하면, 검색할 레코드의 조건을 설정할 수 있다.

이러한 WHERE 절은 테이블의 크기가 매우 크거나, 특정 조건에 맞는 레코드만을 선택하고 싶을 때 유용하게 사용된다.

다음 예제는 Name 필드의 '홍길동'인 레코드만을 선택하는 예제다.

SELECT *
FROM Reservation
WHERE Name = '홍길동';

이러한 WHERE 절에는 여러 개의 조건을 같이 명시할 수도 있다.

이때 여러 개의 조건은 AND나 OR연산자를 이용하여 연결한다.

다음 예제는 ID 값이 3 이하이면서 ReserveDate 필드의 값이 2022년 09월 07일 이후인 레코드만을 선택하는 예제다.

SELECT *
FROM Reservation
WHERE ID <= 3 AND ReserveDate > '2022-09-07';

특정 필드만을 선택

SELECT 키워드 다음에 필드 이름을 명시하면, 해당 테이블의 특정 필드만을 불러올 수 있다.

이때 쉼표(,)를 사용하여 여러 개의 필드 이름을 한 번에 명시할 수 있다.

다음 예제는 Reservation 테이블에서 Name 필드와 RoomNum 필드만을 선택하는 예제다.

SELECT Name, RoomNum
FROM Reservation;

이때에도 WHERE 문을 사용하여 특정 조건을 만족하는 레코드만을 선택할 수 있다.

다음 예제는 ID 값이 3 이하이면서 ReserveDate 필드의 값이 2022년 09월 07일 이후인 레코드의 Name 필드와 ReserveDate 필드만을 선택하는 예제다.

SELECT Name, ReserveDate
FROM Reservation
WHERE ID <= 3 AND ReserveDate > '2022-09-07';

중복되는 값 제거

만약 같은 필드에 중복되는 값을 가지는 레코드가 있다면, DISTINCT 키워드를 사용하여 그 값이 한 번만 선택되도록 설정할 수 있다.

다음 예제는 Reservation 테이블에서 Name 필드를 선택하는 예제다.

이때 DISTINCT 키워드를 사용했기 때문에 중복된 값은 단 한 번만 선택된다.

SELECT DISTINCT Name
FROM Reservation;

선택한 결과의 정렬

SELECT 문으로 선택한 결과를 ORDER BY 절을 사용하여 정렬할 수 있다.

ORDER BY 절의 기본 설정은 오름차순이며, ASC 키워드를 사용하여 직접 오름차순을 명시할 수도 있다.

다음 예제는 Reservation 테이블의 모든 레코드를 ReservaDate 필드의 오름차순으로 정렬하여 선택하는 예제다.

SELECT *
FROM Reservation
ORDER BY ReservaDate;

만약 내림차순으로 정렬하고자 할 때는 맨 마지막에 DESC 키워드를 추가하면 된다.

다음 예제는 Reservation 테이블의 모든 레코드를 ReserveDate 필드의 내림차순으로 정렬하여 선택하는 예제다.

SELECT *
FROM Reservation
ORDER BY ReservaDate DESC;

PHP에서 문자열 타입을 데이터로 가지는 필드를 정렬할 때는 기본적으로 대소문자를 구분하지 않는다.

하지만 대소문자까지 구분하여 정렬하고 싶을 때는 ORDER BY BINARY 절을 사용하면 된다.

또한, 여러 필드의 데이트를 쉼표(,)를 사용하여 한 번에 정렬할 수도 있다.

다음 예제는 Reservation 테이블의 모든 레코드를 먼저 ReserveDate 필드의 내림차순으로 정렬한 뒤에, 또다시 RoomNum필드의 오름차순으로 정렬하여 선택하는 예제다.

SELECT *
FROM Reservation
ORDER BY ReservaDate DESC, RoomNum ASC;

별칭을(alias) 이용한 처리

MySQL에서는 테이블과 필드에 임시로 별칭(alias)을 부여하고, 해당 별칭을 SELECT 문에서 사용할 수 있다.

이러한 별칭(alias)은 복잡한 테이블 이름이나 필드의 이름을 좀 더 읽기 쉽도록 만들어 준다.

-- 1.
SELECT 필드이름 AS 별칭
FROM 테이블이름;

-- 2.
SELECT 필드이름
FROM 테이블이름 AS 별칭;

위의 첫 번째 문법은 해당 필드에 새로운 별칭을 부여하고, 두 번째 문법은 해당 테이블에 새로운 별칭을 부여하는 문법이다.

다음 예제는 Reservation 테이블의 RoomNum 필드와 Name 필드에 하나의 새로운 별칭을 부여하는 예제다.

SELECT ReserveDate, CONCAT(RoomNum, ":", Name) AS ReserveInfo
FROM Reservation;

CONCAT() 함수는 인수로 전달받은 문자열을 모두 결합하여 하나의 문자열로 반환하는 함수이다.

'Programming > MySQL' 카테고리의 다른 글

[MySQL] 대입 연산자 (assignment operator)  (0) 2022.09.08
[MySQL] 산술 연산자 (arithmetic operator)  (0) 2022.09.08
[MySQL] DELETE  (0) 2022.09.07
[MySQL] UPDATE  (0) 2022.09.07
[MySQL] INSERT  (0) 2022.09.07
'Programming/MySQL' 카테고리의 다른 글
  • [MySQL] 대입 연산자 (assignment operator)
  • [MySQL] 산술 연산자 (arithmetic operator)
  • [MySQL] DELETE
  • [MySQL] UPDATE
arajo
arajo
  • arajo
    아라 메모장
    arajo
  • 전체
    오늘
    어제
    • 분류 전체보기 (509)
      • Language (298)
        • HTML (55)
        • CSS (11)
        • JavaScript (70)
        • TypeScript (8)
        • Python (33)
        • Java (119)
        • C (0)
        • C# (2)
      • Programming (92)
        • Programming (14)
        • Web (51)
        • Apache (1)
        • MySQL (23)
        • AWS (3)
      • Framework | Library (26)
        • Framework | Library (3)
        • Vue.js (2)
        • React.js (5)
        • React Native (4)
        • Node.js (1)
        • Ajax (1)
        • Bootstrap (8)
        • Spring (1)
        • Flutter (1)
      • etc (2)
      • 휴식 (19)
        • 책 (13)
        • 일기 (5)
        • 게임 일기 (1)
      • A (71)
        • 공부 (18)
        • 기타 (6)
        • 일 (47)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Java
    파이썬
    HTML
    제어문
    CSS
    MySQL
    객체
    JavaScript
    자바스크립트
    TypeScript
    리액트
    event
    object
    타입스크립트
    next.js
    Python
    react
    변수
    array
    web
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
arajo
[MySQL] SELECT
상단으로

티스토리툴바