[tdb_mobile_menu menu_id="81451" el_class="plato-left-menu" icon_size="eyJhbGwiOjUwLCJwaG9uZSI6IjMwIn0=" icon_padding="eyJhbGwiOjAuNSwicGhvbmUiOiIxLjUifQ==" tdc_css="eyJhbGwiOnsibWFyZ2luLXRvcCI6IjEwIiwibWFyZ2luLWJvdHRvbSI6IjAiLCJtYXJnaW4tbGVmdCI6IjE1IiwiZGlzcGxheSI6IiJ9LCJwaG9uZSI6eyJtYXJnaW4tdG9wIjoiMCIsIm1hcmdpbi1sZWZ0IjoiMCIsImRpc3BsYXkiOiIifSwicGhvbmVfbWF4X3dpZHRoIjo3Njd9" align_horiz="content-horiz-center" inline="yes" icon_color="#ffffff" icon_color_h="#ffffff"][tdb_header_logo align_vert="content-vert-center" url="https://zephyrnet.com" inline="yes" text="Zephyrnet" image_width="eyJwaG9uZSI6IjM1In0=" img_txt_space="eyJwaG9uZSI6IjEwIn0=" f_text_font_size="eyJwaG9uZSI6IjE4In0=" f_text_font_line_height="eyJwaG9uZSI6IjEuNSJ9" f_text_font_weight="eyJwaG9uZSI6IjcwMCJ9" f_text_font_transform="eyJwaG9uZSI6ImNhcGl0YWxpemUifQ==" f_text_font_family="eyJwaG9uZSI6ImZzXzIifQ==" text_color="#ffffff" text_color_h="var(--accent-color)"]
[tdb_mobile_horiz_menu menu_id="1658" single_line="yes" f_elem_font_family="eyJwaG9uZSI6ImZzXzIifQ==" f_elem_font_weight="eyJwaG9uZSI6IjcwMCJ9" text_color="var(--news-hub-white)" text_color_h="var(--news-hub-accent-hover)" f_elem_font_size="eyJwaG9uZSI6IjE0In0=" f_elem_font_line_height="eyJwaG9uZSI6IjQ4cHgifQ==" elem_padd="eyJwaG9uZSI6IjAgMTVweCJ9" tdc_css="eyJwaG9uZSI6eyJwYWRkaW5nLXJpZ2h0IjoiNSIsInBhZGRpbmctbGVmdCI6IjUiLCJkaXNwbGF5Ijoibm9uZSJ9LCJwaG9uZV9tYXhfd2lkdGgiOjc2N30="]
[tdb_mobile_menu 인라인="예" menu_id="81451" el_class="plato-left-menu" icon_size="50" icon_padding="0.5" tdc_css="eyJhbGwiOnsibWFyZ2luLXRvcCI6IjEwIiwibWFyZ2luLWJvdHRvbSI6IjAiLCJtYXJnaW4tbG VmdCI6IjE1IiwiZGlzcGxheSI6IiJ9fQ==" icon_color="#ffffff" icon_color_h="#ffffff" ]
제퍼넷 로고
[tdb_header_menu main_sub_tdicon="td-icon-down" sub_tdicon="td-icon-right-arrow" mm_align_horiz="content-horiz-center" module_on_row_regular="20%" module_on_row_cats="20%" image_size="td_300x0" module_category= "image" show_excerpt="none" show_com="none" show_date="" show_author="none" mm_sub_align_horiz="content-horiz-right" mm_elem_align_horiz="content-horiz-center" menu_id="81450" show_mega_cats="yes" align_horiz="content-horiz-center" elem_padd="0 30px" main_sub_icon_space="12" mm_width="1192" mm_padd="30px 25px" mm_align_screen="yes" mm_sub_padd="20px 25px 0" mm_sub_border="1px 0 0" mm_elem_space="25" mm_elem_padd="0" mm_elem_border="0" mm_elem_border_a="0" mm_elem_border_rad="0" mc1_title_tag="h2" module_gap="25" excl_txt="프리미엄" excl_margin="0 6px 0 0" excl_padd= "2px 5px 2px 4px" excl_bg="var(--news-hub-accent)" f_excl_font_size="12" f_excl_font_weight="700" f_excl_font_transform="uppercase" meta_padding="20px 0 0" art_title="0 0 10px" show_cat ="없음" show_pagination="비활성화됨" text_color="var(--news-hub-white)" tds_menu_active1-line_color="var(--news-hub-accent)" f_elem_font_size="18" f_elem_font_line_height="64px" f_elem_font_weight ="400" f_elem_font_transform="없음" mm_bg="var(--news-hub-dark-grey)" mm_border_color="var(--news-hub-accent)" mm_subcats_border_color="#444444" mm_elem_color="var( --news-hub-white)" mm_elem_color_a="var(--news-hub-accent-hover)" f_mm_sub_font_size="14" title_txt="var(--news-hub-white)" title_txt_hover="var(- -news-hub-accent-hover)" date_txt="var(--news-hub-light-grey)" f_title_font_line_height="1.25" f_title_font_weight="700" f_meta_font_line_height="1.3" f_meta_font_family="fs_2" tdc_css="eyJhbGwiOnsiYm9yZGVyLXRvcC13a WR0aCI6IjEiLCJib3JkZXItcmlnaHQtd2lkdGgiOiIxIiwiYm9yZGVyLWJvdHRvbS13aWR0aCI6IjEiLCJib3JkZXItbGVmdC13aWR0aCI6IjEiLCJib3JkZXItY29sb3IiOiJ2YXIoLS1uZXd zLWh1Yi1kYXJrLWdyZXkpIiwiZGlzcGxheSI6IiJ9fQ ==" mm_border_size="4px 0 0" f_elem_font_family="fs_2" mm_subcats_bg="var(--news-hub-dark-grey)" mm_elem_bg="rgba(0,0,0,0)" mm_elem_bg_a="rgba( 0,0,0,0)" f_mm_sub_font_family="fs_2" mm_child_cats="10" mm_sub_inline="예" mm_subcats_posts_limit="5"]
빅 데이터 SQL: 기초부터 고급 수준까지의 완전한 가이드

SQL: 기초부터 고급 수준까지의 완전한 가이드

0
SQL: 기초부터 고급 수준까지의 완전한 가이드

이 기사는 데이터 과학 Blogathon.

개요

노동 통계국(Bureau of Labor Statistics)에 따르면 컴퓨터 및 정보 연구 과학자, 데이터 과학자는 19년까지 최소 2026% 성장할 것으로 예상됩니다. 데이터는 영역에 관계없이 모든 회사에서 수집 및 처리됩니다.
데이터 과학자는 회사에 유익한 가치 있는 통찰력을 찾기 위해 데이터를 조사합니다.

왜 SQL을 배우는가?

대부분의 기업은 관계형 데이터베이스 관리 시스템(RDBMS)을 사용하여 데이터를 저장하고 관리합니다.
SQL은 Structured Query Language의 약자로 사용자가 데이터에 액세스하고 데이터를 조작할 수 있도록 합니다. 회사는 데이터 저장을 위해 MySQL, PostgreSQL, Oracle 데이터베이스 등과 같은 다양한 시스템을 사용합니다. 이러한 모든 SQL 버전 간에는 약간의 차이가 있지만 한 성능을 확보하면 다른 버전으로 쉽게 전환할 수 있습니다.

SQL에 대해 자세히 알아보기 블로그!

나는 사용할거야. 오라클 라이브 SQL 이 문서에서 설명하지만 다른 버전에서도 시도해 볼 수 있습니다. 오류가 발생하면 Google에서 해결 방법을 찾을 수 있습니다.

데이터 과학자는 이미 유지 관리되는 데이터베이스를 다루지만 기본부터 시작하겠습니다.

SQL에서 데이터베이스 테이블이란 무엇입니까?

데이터베이스의 데이터는 Excel 스프레드시트처럼 생각할 수 있는 테이블에 저장됩니다. 각 스프레드시트에는 행과 열이 있습니다. 각 행은 엔터티(예: 사람, 회사 등)와 관련된 데이터로 구성되고 각 열은 행의 특정 측면(예: 이름, account_id, 나이 등)과 관련된 데이터로 구성됩니다.

SQL | 데이터베이스 테이블

위의 표에서 각 행은 단일 직원에 대한 정보를 포함하고 각 열은 해당 직원의 특정 기능 정보를 나타냅니다.

SQL 명명 규칙

SQL은 대소문자를 구분하지 않습니다. "table"을 "TABLE"과 동일하게 취급합니다. 그러나 SQL 명령은 모두 대문자로 작성하는 것이 관례이며, 데이터베이스 테이블의 이름은 소문자로 지정하고 공백 대신 밑줄을 사용합니다.

테이블 생성

SQL에서 새 테이블을 생성하는 구문은 다음과 같습니다.

CREATE TABLE table_name( column1 데이터 유형, column1 데이터 유형, );

우리는 사용 테이블 만들기  문 다음에 테이블 이름이 옵니다. 그런 다음 괄호 안에 데이터 유형과 함께 열 이름을 언급합니다. 모든 SQL 문은 세미콜론으로 끝납니다.

SQL에서 널리 사용되는 데이터 유형에는 VARCHAR(string), BOOL(boolean), int(integer), FLOAT(floating number), DATETIME(DateTime) 등이 있습니다. 데이터 유형에 대한 자세한 내용은 설명서를 참조하십시오. .

위의 이미지와 같이 새 테이블을 만들어 보겠습니다.

CREATE TABLE employee( employee_id INT, e_name VARCHAR(20), 나이 INT, 급여 INT, 직업 VARCHAR(20) );

참고 : VARCHAR 안의 숫자는 가능한 최대 문자열 길이를 나타냅니다. 여기서는 문자열 길이가 20을 초과하지 않는다고 가정합니다.

SQL에 값 삽입

XNUMXD덴탈의 무시를 삽입 문은 데이터베이스 테이블 내부에 새 레코드를 삽입합니다. 구문은 아래와 같습니다.

INSERT IGNORE INTO table_name(column1, column2, . . .) VALUES(value1, value2, ... );

이제 위에서 만든 테이블에 더미 값을 삽입해 보겠습니다.

INSERT IGNORE INTO 직원 값(1,'Alex',27,28000,'Designer'); INSERT IGNORE INTO 직원 값(2,'Joe',30,45000,'Backend Dev'); INSERT IGNORE INTO 직원 값(3,'Rick',25,65000,'데이터 과학자'); INSERT IGNORE INTO 직원 값(4,'Nick',21,30000,'Backend Dev'); INSERT IGNORE INTO 직원 값(5,'Cathy',21,35000,'Designer');

다음에 살펴볼 SELECT 문을 사용하여 테이블 데이터를 볼 수 있습니다.
미니 작업: 테이블에 직원 XNUMX명을 더 추가합니다(Employee_id가 고유한지 확인).

선택 및 시작

XNUMXD덴탈의 SELECT 문은 데이터베이스에서 데이터를 선택하는 데 사용됩니다. 그만큼 FROM 문은 데이터를 가져올 데이터베이스 테이블을 나열합니다.

SELECT column_name_1,column_name_2, . . . 테이블 이름에서;

데이터베이스 열의 모든 열을 선택하려면 열 이름을 별표(*)로 바꾸십시오.
이제 아래 문을 사용하여 모든 직원 데이터 세트 열을 볼 것입니다.

SELECT * FROM 직원;
SQL | 표 - 선택 및 선택
Oracle Live SQL의 출력

미니 작업: 모든 직원의 이름 표시

따라서 지금은 필터링 없이 데이터베이스 테이블의 내용을 표시할 수 있습니다. 그러나 급여가 50,000PokeDollars 이상인 직원의 이름을 표시하려면 어떻게 해야 할까요? WHERE, LIKE, IN 등과 같은 다양한 명령문이 있습니다.
우리는 지금 그러한 진술에 집중할 것입니다.

WHERE

WHERE 문은 문 뒤에 언급된 조건에 따라 레코드를 필터링하며 구문은 다음과 같습니다.

SELECT 열1, 열2, . . . FROM table_name WHERE 조건;

 급여가 50,000PokeDollars 이상인 직원을 필터링하는 코드는 다음과 같습니다.

SELECT * FROM 직원 WHERE 급여>50000;
SQL

WHERE 문은 FROM 문 아래에 위치합니다.
조건 내에서 논리 표현식(OR, AND & NOT)과 >, <, =, =(SQL에서는 같음 비교를 위해 == 대신 =를 사용) 등과 같은 비교 연산자를 사용할 수 있습니다.
IN, BETWEEN, LIKE 등과 같은 특정 표현을 사용할 수도 있습니다.

그리고, 아니면 & NOT

이 세 가지는 가장 일반적으로 사용되는 논리 연산자 중 일부입니다. 이 연산자는 설명이 필요하지 않다고 생각하므로 다음은 예제 조건이 포함된 표입니다.

그리고, 아니면 안

LIKE

LIKE 연산자를 설명하기 전에 우리 회사에서 일하는 백엔드 개발자를 필터링하고 싶다고 가정해 봅시다. 아래와 같이 WHERE 문과 비교 연산자를 사용할 수 있습니다.

SELECT * FROM 직원 WHERE job='백엔드 개발자'; 

이런 종류의 쿼리의 문제는 데이터베이스 테이블에서 볼 수 있듯이 테이블에 다른 백엔드 개발자(Nick)가 있는데 그의 직책이 '백엔드 개발자'이기 때문에 필터링되지 않았습니다. 따라서 이 문제를 해결하기 위해 LIKE 연산자를 사용합니다.
따라서 아래 쿼리를 사용하여 백엔드 개발자를 찾을 수 있습니다.

SELECT * FROM 직원 WHERE 작업 LIKE '%Backend%';

% 문자는 XNUMX, XNUMX 또는 여러 문자를 나타냅니다.

좋아요 | SQL

미니 작업: 이름이 모음으로 시작하는 직원을 찾습니다(힌트: 여러 OR 연산자를 사용해야 함).

여기에 캐치가 있습니다. 소문자와 대문자는 문자열에서 동일하지 않습니다. "백엔드"라는 단어를 검색하면 직책에 "백엔드"가 포함된 모든 인스턴스가 누락됩니다.
따라서 이 결함을 제거하려면 문자열을 일시적으로 대문자 또는 소문자로 변환한 다음 비교해야 합니다.
예를 들어 수정된 쿼리는

SELECT * FROM 직원 WHERE UPPER(작업) LIKE '%BACKEND%';  

중에서

급여가 25,000에서 40,000(포함) 사이인 모든 직원을 찾고 싶습니다. 아래와 같이 AND 및 비교 연산자를 사용하여 수행할 수 있습니다.

SELECT * FROM 직원 WHERE 급여>=25000 AND 급여<=40000;

이 작업을 수행하는 또 다른 방법은 중에서 운영자. BETWEEN 연산자는 포함됩니다: 시작 및 끝 값이 포함됩니다.
BETWEEN 연산자를 사용하여 위의 쿼리를 수행할 수 있습니다.

SELECT * FROM 직원 WHERE 급여 BETWEEN 25000 AND 40000;

미니 작업: 급여가 30,000~40,000(배타적인).

IN

여기에서 값 목록을 명시적으로 정의하고 목록의 값을 포함하는 레코드를 반환합니다. employee_id가 1, 3 또는 5인 직원을 선택하려고 합니다.

SELECT * FROM 직원 WHERE employee_id IN (1,3,5);
In

이는 OR 문(WHERE employee_id=1 OR employee_id=3 ...)을 사용하여 여러 조건을 함께 연결하는 것과 유사합니다.
미니 작업: employee_id가 2 및 5인 모든 직원 이름을 선택하십시오.

제한/가져오기

자, 이제 몇 가지 조건에 따라 필터링하는 것으로 충분합니다. 테이블의 상위 3명의 직원만 선택하려면 어떻게 해야 할까요? 우리는 이것을 사용하여 빠르게 달성할 수 있습니다. 제한 키워드이며 쿼리 코드의 끝에 배치됩니다. LIMIT와 표시하려는 레코드 수를 입력하면 완료됩니다.

참고 : SQL의 다른 버전과 구문에 약간의 차이가 있을 수 있는 방법에 대해 간략하게 이야기했음을 기억하십시오. Oracle SQL에서 "LIMIT number" 대신 "FETCH FIRST number ROWS ONLY"를 사용해야 합니다. 자세한 내용은 SQL 버전 설명서를 참조하십시오.

테이블의 상위 2개 레코드를 표시해 보겠습니다.

SELECT * FROM 직원 FETCH FIRST 2 ROWS ONLY;
제한/가져오기 | SQL

주문

이름에서 알 수 있듯이 주문 문은 결과를 오름차순 또는 내림차순으로 정렬합니다.
ORDER BY 키워드 뒤에 결과를 정렬할 열이 추가됩니다.
기본적으로 결과를 오름차순으로 정렬합니다. 내림차순으로 정렬하려면 다음을 추가해야 합니다. DESC ORDER BY 문의 끝.
가장 수입이 많은 상위 3명의 직원을 표시하려고 한다고 가정해 보겠습니다. 코드는 아래와 같을 것입니다.

SELECT * FROM 직원 ORDER BY 급여 DESC FETCH FIRST 3 ROWS ONLY;
주문

미니 작업: 가장 어린 직원 3명을 선택하십시오.

SQL에 대한 결론

여기까지가 기본입니다. 다음에서 SQL Basic Select 코딩 문제를 해결해 보시기 바랍니다. 해커 란 크.
SQL이 조인, 창 함수 등과 같은 더 복잡한 주제로 구성되어 있기 때문에 이것이 끝이 아닙니다. 그럼에도 불구하고 이것은 올바른 방향으로 가는 단계입니다.

지우면 좋을거같음 . SM
글(작가)에 나오는 이미지는 모두 제가 만들었습니다.

이 기사에 표시된 미디어는 Analytics Vidhya의 소유가 아니며 작성자의 재량에 따라 사용됩니다. 

출처: https://www.analyticsvidhya.com/blog/2022/01/learning-sql-from-basics-to-advance/

우리와 함께 채팅

안녕하세요! 어떻게 도와 드릴까요?