데이터 쿼리 및 필터링

SQLiteBeginner
지금 연습하기

소개

이 랩에서는 SQLite 데이터베이스에서 데이터를 쿼리하고 필터링하는 방법을 배우게 됩니다. 이 실습 랩은 초보자를 위해 설계되었으며 필수적인 SQL 기술을 소개합니다. WHERE 절을 사용하여 데이터를 필터링하고, LIKE를 사용하여 패턴을 일치시키고, ORDER BY를 사용하여 결과를 정렬하고, LIMIT를 사용하여 결과 수를 제한하는 방법을 배우게 됩니다. 이 랩을 마치면 데이터베이스에서 특정 데이터를 효율적으로 검색할 수 있게 됩니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 98%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

SQLite 에 연결하고 데이터 보기

첫 번째 단계에서는 employees.db라는 SQLite 데이터베이스에 연결하고 staff 테이블 내의 데이터를 봅니다. 이를 통해 작업할 데이터를 이해할 수 있습니다.

  1. LabEx VM 환경에서 터미널을 엽니다. 기본 디렉토리는 /home/labex/project입니다.

  2. sqlite3 명령줄 도구를 사용하여 employees.db 데이터베이스에 연결합니다.

    sqlite3 employees.db

    이 명령은 sqlite> 프롬프트로 표시되는 SQLite 셸을 엽니다.

  3. staff 테이블의 데이터를 봅니다. 다음 SQL 명령을 실행합니다.

    SELECT * FROM staff;

    이 명령은 staff 테이블에서 모든 열 (*) 을 선택하고 결과를 표시합니다. 다음과 같은 출력을 볼 수 있습니다.

    1|Alice|HR
    2|Bob|IT
    3|Charlie|HR
    4|David|IT
    5|Eve|Marketing
    6|Frank|IT

    이 출력은 staff 테이블의 각 직원에 대한 id, name, 및 department를 보여줍니다.

  4. SQLite 셸을 종료하려면 다음을 입력합니다.

    .quit

    중요: "계속" 버튼을 클릭하기 전에 .quit을 입력하십시오. 그렇지 않으면 sqlite 기록이 기록되지 않으므로 단계를 확인할 수 없습니다.

WHERE 절을 사용하여 데이터 필터링

WHERE 절을 사용하면 특정 조건에 따라 데이터를 필터링할 수 있습니다. 이 절을 사용하여 기준을 충족하는 행만 검색할 수 있습니다.

  1. employees.db 데이터베이스에 연결합니다.

    sqlite3 employees.db
  2. HR 부서의 직원만 검색하려면 다음 SQL 명령을 사용합니다.

    SELECT * FROM staff WHERE department = 'HR';

    이 명령은 staff 테이블에서 모든 열을 선택하지만 department 열이 HR과 같은 행만 포함합니다. 출력은 다음과 같습니다.

    1|Alice|HR
    3|Charlie|HR
  3. 이제 id가 3 보다 큰 직원을 찾아보겠습니다.

    SELECT * FROM staff WHERE id > 3;

    이 명령은 staff 테이블에서 모든 열을 선택하지만 id 열이 3 보다 큰 행만 포함합니다. 출력은 다음과 같습니다.

    4|David|IT
    5|Eve|Marketing
    6|Frank|IT
  4. SQLite 셸을 종료합니다.

    .quit

    중요: "계속" 버튼을 클릭하기 전에 .quit을 입력하십시오. 그렇지 않으면 sqlite 기록이 기록되지 않으므로 단계를 확인할 수 없습니다.

LIKE 연산자를 사용한 패턴 매칭

LIKE 연산자는 패턴 매칭에 사용됩니다. 정확한 값 대신 특정 패턴과 일치하는 데이터를 찾고 싶을 때 유용합니다. % (0 개 이상의 문자) 및 _ (단일 문자) 와 같은 와일드카드 (wildcard) 를 사용합니다.

  1. employees.db 데이터베이스에 연결합니다.

    sqlite3 employees.db
  2. 이름이 A로 시작하는 직원을 찾으려면 다음 명령을 사용합니다.

    SELECT * FROM staff WHERE name LIKE 'A%';

    이 명령은 staff 테이블에서 모든 열을 선택하지만 name 열이 A로 시작하는 행만 포함합니다. % 와일드카드는 0 개 이상의 문자와 일치합니다. 출력은 다음과 같습니다.

    1|Alice|HR
  3. 이름에 문자 i가 포함된 직원을 찾으려면 다음을 사용합니다.

    SELECT * FROM staff WHERE name LIKE '%i%';

    이 명령은 staff 테이블에서 모든 열을 선택하지만 name 열에 문자 i가 포함된 행만 포함합니다. 출력은 다음과 같습니다.

    1|Alice|HR
    3|Charlie|HR
    4|David|IT
  4. SQLite 셸을 종료합니다.

    .quit

ORDER BY 절을 사용하여 데이터 정렬

ORDER BY 절을 사용하면 쿼리 결과를 정렬할 수 있습니다. 오름차순 (기본값) 또는 내림차순으로 정렬할 수 있습니다.

  1. employees.db 데이터베이스에 연결합니다.

    sqlite3 employees.db
  2. name을 기준으로 오름차순으로 데이터를 알파벳순으로 정렬하려면 다음을 사용합니다.

    SELECT * FROM staff ORDER BY name;

    이 명령은 staff 테이블에서 모든 열을 선택하고 name 열을 기준으로 오름차순 (A to Z) 으로 결과를 정렬합니다. 출력은 다음과 같습니다.

    1|Alice|HR
    2|Bob|IT
    3|Charlie|HR
    4|David|IT
    5|Eve|Marketing
    6|Frank|IT
  3. name을 기준으로 내림차순으로 정렬하려면 다음을 사용합니다.

    SELECT * FROM staff ORDER BY name DESC;

    이 명령은 staff 테이블에서 모든 열을 선택하고 name 열을 기준으로 내림차순 (Z to A) 으로 결과를 정렬합니다. 출력은 다음과 같습니다.

    6|Frank|IT
    5|Eve|Marketing
    4|David|IT
    3|Charlie|HR
    2|Bob|IT
    1|Alice|HR
  4. SQLite 셸을 종료합니다.

    .quit

LIMIT 절을 사용하여 결과 제한

LIMIT 절은 쿼리에서 반환되는 행 수를 제한합니다. 데이터의 하위 집합만 필요한 경우 유용합니다.

  1. employees.db 데이터베이스에 연결합니다.

    sqlite3 employees.db
  2. staff 테이블에서 처음 3 개의 행만 검색하려면 다음을 사용합니다.

    SELECT * FROM staff LIMIT 3;

    이 명령은 staff 테이블에서 모든 열을 선택하고 결과를 처음 3 개의 행으로 제한합니다. 출력은 다음과 같습니다.

    1|Alice|HR
    2|Bob|IT
    3|Charlie|HR
  3. LIMITORDER BY와 결합하여 name을 기준으로 내림차순으로 정렬된 처음 2 명의 직원을 가져옵니다.

    SELECT * FROM staff ORDER BY name DESC LIMIT 2;

    이 명령은 staff 테이블에서 모든 열을 선택하고, name 열을 기준으로 내림차순으로 결과를 정렬하며, 결과를 처음 2 개의 행으로 제한합니다. 출력은 다음과 같습니다.

    6|Frank|IT
    5|Eve|Marketing
  4. SQLite 셸을 종료합니다.

    .quit

요약

이 랩에서는 SQLite 데이터베이스에서 데이터를 쿼리하고 필터링하는 방법을 배웠습니다. 데이터베이스에 연결하고, WHERE 절을 사용하여 데이터를 필터링하고, LIKE 연산자를 사용하여 패턴을 일치시키고, ORDER BY로 결과를 정렬하고, LIMIT를 사용하여 반환되는 행 수를 제한했습니다. 이러한 기술은 데이터를 효과적으로 검색하고 구성하는 데 필요한 기본적인 기술을 제공합니다.