MySQL 예제가 포함된 SELECT 문

⚡ 스마트 요약

The MySQL SELECT 문은 하나 이상의 테이블에서 행을 검색하며, 아래의 모든 예제는 myflix 샘플 데이터베이스를 대상으로 실행되며, 일반 SELECT 쿼리에서 표현식, 열 별칭 및 문자열 함수로 단계적으로 진행됩니다.

  • 🔎 핵심 목적: SELECT 문은 명령 프롬프트 또는 PHP에서 특정 조건과 일치하는 저장된 행을 가져옵니다. Python, 및 기타 언어.
  • 🧩 구문 순서: SELECT, FROM, WHERE, GROUP BY, HAVING 및 ORDER BY는 반드시 정해진 순서대로 나타나야 합니다.
  • 스타 바로가기: `SELECT * FROM `members`;`는 모든 열을 반환하는 반면, 열 이름을 명시적으로 지정하면 결과 집합의 크기가 작아지고 처리 속도가 빨라집니다.
  • 🔗 표현식: Concat() 함수는 열 값을 결합하고 LEFT() 함수는 문자를 제거하므로 계산된 필드가 결과 집합에 직접 나타납니다.
  • 🏷️ 컬럼 별칭: 선택 사항인 AS 키워드는 모든 표현식의 이름을 변경하여 Concat(`title`)과 같이 읽기 어려운 헤더를 명확한 레이블로 바꿉니다.
  • 🖱️ 작업대 비교: MySQL 워크벤치는 쿼리를 시각적으로 생성하지만, 복잡하고 정확한 검색을 위해서는 여전히 수동으로 SELECT 문을 작성해야 합니다.

SELECT 쿼리란 무엇인가요? MySQL?

SELECT 쿼리 데이터를 가져오는 데 사용됩니다. MySQL 데이터베이스. 데이터베이스는 나중에 검색할 수 있도록 데이터를 저장합니다. 목적은 MySQL SELECT 문은 주어진 조건과 일치하는 데이터베이스 테이블에서 하나 이상의 행을 반환합니다. SELECT 쿼리는 PHP나 Ruby와 같은 스크립팅 언어에서 사용하거나 명령 프롬프트에서 실행할 수 있습니다.

SELECT 쿼리 MySQL

SELECT는 가장 자주 실행하게 될 명령어이므로 샘플 데이터를 다루기 전에 구문을 익히는 것이 좋습니다.

SQL SELECT 문 구문

SELECT는 가장 자주 사용되는 SQL 명령어이며, 일반적인 구문은 다음과 같습니다.

SELECT [DISTINCT|ALL] { * | [fieldExpression [AS newName]} FROM tableName [alias] [WHERE condition] [GROUP BY fieldName(s)] [HAVING condition] [ORDER BY fieldName(s)];

여기를 클릭하십시오.

  • SELECT 데이터를 검색하려고 한다는 것을 데이터베이스에 알리는 SQL 키워드입니다.
  • [고유 | 모두] `--`는 SQL SELECT 문에서 반환되는 결과를 세부적으로 조정하는 선택적 키워드입니다. 아무것도 지정하지 않으면 기본값으로 `ALL`이 사용됩니다.
  • {*| [fieldExpression [AS newName]} 최소한 한 부분은 지정해야 합니다. "*"는 지정된 테이블 이름의 모든 필드를 선택하고, fieldExpression은 지정된 필드에 대해 숫자 더하기 또는 두 문자열 필드를 하나로 결합하는 등의 계산을 수행합니다.
  • FROM tableName은 필수 항목이며 최소 하나 이상의 테이블을 포함해야 합니다. 여러 테이블은 쉼표로 구분하거나 JOIN 키워드를 사용하여 결합해야 합니다.
  • Neocity 조건은 선택 사항입니다. 쿼리에서 반환되는 결과 집합에 대한 기준을 지정합니다.
  • GROUP BY 동일한 필드 값을 가진 레코드를 하나로 묶는 데 사용됩니다.
  • 지키는 조건은 GROUP BY 키워드를 사용할 때 기준을 지정하는 데 사용됩니다.
  • 주문 결과 집합의 정렬 순서를 지정하는 데 사용됩니다.

*

별표 기호는 테이블의 모든 열을 선택합니다. 간단한 SELECT 문은 아래와 같습니다.

SELECT * FROM `members`;

위 문장은 members 테이블의 모든 필드를 선택합니다. 세미콜론은 문장 종료 문자입니다. 필수는 아니지만, 문장 끝에 세미콜론을 사용하는 것이 좋은 관행으로 여겨집니다.

SELECT DISTINCT 및 LIMIT MySQL

구문에 포함된 두 개의 선택적 키워드는 테이블 규모가 커짐에 따라 초보자들이 곧바로 접하게 되므로 자세히 살펴볼 필요가 있습니다.

DISTINCT 결과 집합에서 중복된 행을 제거합니다. 영화 테이블에는 2007년에 개봉된 여러 영화가 저장되어 있으므로 일반 쿼리는 해당 연도를 반복해서 표시합니다. DISTINCT는 각 값을 한 번씩만 반환합니다.

SELECT DISTINCT `year_released` FROM `movies`;

제한 반환되는 행 수를 제한하여, 그렇지 않으면 수백만 개의 레코드를 가져오는 쿼리로부터 클라이언트를 보호합니다.

SELECT * FROM `movies` LIMIT 5;
키워드 그것이하는 일 사용시기
모두 (기본값) 일치하는 모든 행(중복 포함)을 반환합니다. 미기록물의 개수 세기 또는 목록 작성
DISTINCT 중복된 행을 하나로 통합합니다. 고유값 목록 만들기
제한 처음 N개 행만 반환합니다. 데이터 또는 페이지 결과 미리보기

구문이 확정되면 샘플 데이터베이스를 통해 이러한 절들을 실제로 구현할 수 있습니다.

SELECT 문 실습 예제

다운로드하려면 클릭하십시오. 실습 예제에 사용된 myflix DB입니다.

.sql 파일을 가져오는 방법을 알아볼 수 있습니다. MySQL 워크 벤치.

다음 두 표를 사용하여 예제를 실행합니다.

표 1 : 회원 테이블

회원_번호 전체 이름 성별 생일 물리적_주소 우편 주소 연락처_번호 이메일
1 자넷 존스 여성 21-07-1980 첫 번째 거리 플롯 번호 4 전용 가방 + 0759 253 542 janetjones@yagoo.cm
2 자넷 스미스 존스 여성 23-06-1980 멜로즈 123 NULL NULL jj@fstreet.com
3 로버트 필 남성 12-07-1989 3번가 34 NULL 12345 rm@tstreet.com
4 글로리아 윌리엄스 여성 14-02-1984 2번가 23 NULL NULL NULL

표 2 : 영화 산업 테이블

영화_ID 제목 이사 연도_출시 카테고리_ID
1 캐리비안의 해적 4 롭 마샬 2011 1
2 사라 마샬을 잊어버림 니콜라스 스톨 러 2008 2
3 엑스 맨 NULL 2008 NULL
4 Code 이름 블랙 에드가 짐즈 2010 NULL
5 아빠의 어린 소녀들 NULL 2007 8
6 천사와 악마 NULL 2007 6
7 다 빈치 Code NULL 2007 6
9 Honey moon 존 슐츠 2005 8
16 67% 유죄 NULL 2012 NULL

회원 목록 가져오기

데이터베이스에 등록된 모든 도서관 회원의 목록을 얻고 싶다고 가정해 보겠습니다. 이를 위해 아래 스크립트를 사용하면 됩니다.

SELECT * FROM `members`;

스크립트를 실행하면 MySQL 워크벤치는 다음과 같은 결과를 생성합니다.

회원_번호 전체 이름 성별 생일 물리적_주소 우편 주소 연락처_번호 이메일
1 자넷 존스 여성 21-07-1980 첫 번째 거리 플롯 번호 4 전용 가방 + 0759 253 542 janetjones@yagoo.cm
2 자넷 스미스 존스 여성 23-06-1980 멜로즈 123 NULL NULL jj@fstreet.com
3 로버트 필 남성 12-07-1989 3번가 34 NULL 12345 rm@tstreet.com
4 글로리아 윌리엄스 여성 14-02-1984 2번가 23 NULL NULL NULL

해당 쿼리는 members 테이블의 모든 행과 열을 반환했습니다.

특정 열 선택

예를 들어, 이름, 성별, 주소 및 이메일 필드에만 관심이 있다고 가정해 보겠습니다. 다음 스크립트는 이를 수행합니다.

SELECT `full_names`,`gender`,`physical_address`, `email` FROM `members`;

스크립트를 실행하면 MySQL 워크벤치는 다음과 같은 결과를 생성합니다.

전체 이름 성별 물리적_주소 이메일
자넷 존스 여성 첫 번째 거리 플롯 번호 4 janetjones@yagoo.cm
자넷 스미스 존스 여성 멜로즈 123 jj@fstreet.com
로버트 필 남성 3번가 34 rm@tstreet.com
글로리아 윌리엄스 여성 2번가 23 NULL

표현을 사용하여 영화 목록 가져오기

SELECT 문에서도 표현식을 사용할 수 있습니다. 예를 들어, 영화 제목과 감독 이름을 괄호 안에 넣고, 영화 개봉 연도를 함께 표시하는 영화 목록을 만들고 싶다고 가정해 보겠습니다. 다음 스크립트는 이러한 목록을 생성합니다.

SELECT Concat(`title`, ' (', `director`, ')') , `year_released` FROM `movies`;

여기를 클릭하십시오.

  • Concat() MySQL 이 함수는 열 값들을 결합합니다.
  • "Concat(`title`, ' (', `director`, ')')" 코드는 제목을 가져와서 여는 괄호와 감독 이름을 추가한 다음 닫는 괄호를 추가합니다.
  • Concat() 함수 내부에서는 문자열 부분들이 쉼표로 구분됩니다.

스크립트를 실행하면 MySQL Workbench는 다음과 같은 결과 집합을 생성합니다.

Concat(`제목`, ' (', `감독`, ')') 연도_출시
캐리비안의 해적 4(롭 마샬) 2011
사라 마샬을 잊음(니콜라스 스톨러) 2008
NULL 2008
Code 이름 블랙 (에드가 짐즈) 2010
NULL 2007
NULL 2007
NULL 2007
Honey moon(존 슐츠) 2005
NULL 2012

참고 : concat() 함수는 인수가 NULL일 경우 NULL을 반환합니다. 따라서 감독이 없는 영화의 경우 위에 NULL로 표시됩니다.

별칭 필드 이름

위 예제에서는 문자열 연결 코드가 필드 이름으로 반환되었습니다. 결과 집합에서 더 설명적인 필드 이름을 사용하려면 열 별칭을 적용하세요. 기본 구문은 다음과 같습니다.

SELECT `column_name|value|expression` [AS] `alias_name`;

여기를 클릭하십시오.

  • “`열 이름|값|표현식`을 선택합니다” 는 일반적인 SELECT 문으로, 열 이름, 값 또는 표현식이 될 수 있습니다.
  • "[처럼]" 는 별칭 이름 앞에 붙는 선택적 키워드입니다.
  • “`별칭_이름`” 는 결과 집합에서 필드 이름으로 반환되는 별칭입니다.

보다 의미 있는 열 이름을 사용한 동일한 쿼리:

SELECT Concat(`title`, ' (', `director`, ')') AS `Concat`, `year_released` FROM `movies`;

다음과 같은 결과를 얻습니다.

콘캣 연도_출시
캐리비안의 해적 4(롭 마샬) 2011
사라 마샬을 잊음(니콜라스 스톨러) 2008
NULL 2008
Code 이름 블랙 (에드가 짐즈) 2010
NULL 2007
NULL 2007
NULL 2007
Honey moon(존 슐츠) 2005
NULL 2012

회원 목록에 출생 연도가 표시되도록 설정하는 방법

회원 번호, 전체 이름, 출생 연도를 포함한 모든 회원의 목록을 원한다고 가정해 보겠습니다. LEFT 문자열 함수를 사용하면 다음과 같이 할 수 있습니다.trac출생일 필드에서 출생 연도를 가져옵니다.

SELECT `membership_number`,`full_names`,LEFT(`date_of_birth`,4) AS `year_of_birth` FROM members;

여기를 클릭하십시오.

  • “LEFT(`date_of_birth`,4)” 전에, LEFT 문자열 함수 생년월일을 매개변수로 받아 왼쪽에서 4자리만 반환합니다.
  • “AS `출생_연도`" 이다 열 별칭 이름 저희 결과에 반환되었습니다. AS 키워드는 선택사항입니다.해당 부분을 생략해도 쿼리는 정상적으로 작동합니다.

쿼리를 실행하면 MySQL Workbench를 사용하여 myflixdb를 테스트한 결과는 아래와 같습니다.

회원_번호 전체 이름 year_of_birth
1 자넷 존스 1980
2 자넷 스미스 존스 1980
3 로버트 필 1989
4 글로리아 윌리엄스 1984

쿼리를 직접 작성하는 것은 결과 집합을 얻는 여러 방법 중 하나일 뿐입니다. Workbench는 쿼리문을 자동으로 생성해 줄 수도 있습니다.

SQL 사용 MySQL 워크 벤치

이제 우리는 MySQL Workbench를 사용하여 카테고리 테이블의 모든 필드 이름을 표시하는 스크립트를 생성합니다.

1. 범주 테이블을 마우스 오른쪽 버튼으로 클릭합니다. "행 선택 - 1000개 제한"을 클릭합니다.

2. MySQL Workbench는 SQL 쿼리를 자동으로 생성하여 편집기에 붙여넣습니다.

3. 검색 결과는 편집기 아래의 표에 표시됩니다.

SQL을 사용하여 MySQL 워크 벤치

스크린샷에서 보시는 바와 같이, 저희는 SELECT 문을 직접 작성하지 않았습니다. MySQL 워크벤치가 자동으로 생성해줬어요.

SELECT SQL 명령어를 사용할 필요가 있을까요? MySQL 작업대?

SQL SELECT 명령어를 배워야 하는 이유가 궁금하실 수도 있습니다. 왜냐하면 SQL과 같은 도구가 있는데 말이죠. MySQL 워크벤치는 SQL 언어에 대한 지식 없이도 동일한 결과를 반환합니다. 그러한 지름길은 가능하지만, SELECT 명령어 학습하기 당신에게 더 많은 것을 제공합니다 유연성 제어 너의 SQL SELECT 문.

MySQL 작업대는 다음 범주에 속합니다.사례별 쿼리(QBE) 도구입니다. SQL 문을 더 빠르게 생성하고 사용자 생산성을 높이기 위해 만들어졌습니다.

SQL SELECT 명령어를 배우면 다음과 같은 작업을 수행할 수 있습니다. 복잡한 쿼리 쿼리 예제 유틸리티(예: ...)로는 쉽게 생성할 수 없는 내용입니다. MySQL 작업대.

생산성을 향상시키려면 다음을 수행할 수 있습니다. 코드를 생성하세요 MySQL 워크 벤치다음, 사용자 정의 거기에 귀하의 요구 사항을 충족SQL 문의 작동 방식을 이해해야만 가능합니다.

이해 MySQL SELECT 문

자주 묻는 질문

일반적으로 그렇습니다. `SELECT *`는 대용량 텍스트 필드나 필요하지 않을 수 있는 BLOB 필드를 포함하여 모든 열을 읽으므로 커버링 인덱스를 차단합니다. 열 이름을 지정하면 결과 집합의 크기가 줄어들고 쿼리 속도가 빨라집니다.

SELECT 및 FROM과 같은 키워드는 대소문자를 구분하지 않습니다. 문자열 비교는 해당 열의 정렬 방식을 따르므로, utf8mb4_0900_ai_ci와 같이 대소문자를 구분하지 않는 정렬 방식에서는 "Janet"과 "janet"을 동일하게 취급합니다.

인덱스가 누락된 것이 일반적인 원인입니다. 쿼리를 실행하기 전에 EXPLAIN을 실행하여 인덱스 누락 여부를 확인하십시오. MySQL 전체 테이블 스캔을 수행한 다음 필터링되거나 조인된 열에 인덱스를 생성하고 필요한 행만 반환합니다.

예. 텍스트-SQL 변환 도우미는 스키마를 파악한 후 일반 요청을 SELECT 문으로 변환합니다. RevAI 모델은 존재하지 않는 열 이름을 생성할 수 있으므로 생성된 조인 및 필터를 확인하십시오.

아니요. AI가 쿼리를 빠르게 작성하지만, 논리, 조인 및 성능은 여전히 ​​직접 검증해야 합니다. MySQL 워크 벤치SELECT 문을 아는 것이 바로 잘못된 결과가 실제 운영 환경에 도달하기 전에 이를 발견할 수 있게 해주는 핵심입니다.

이 게시물을 요약하면 다음과 같습니다.