SQL 하위 쿼리 자습서: 유형, 상관 하위 쿼리 및 예제가 포함된 EXISTS
하위 쿼리는 다른 쿼리 내부의 쿼리입니다. 각 유형과 그것이 적합한 위치를 배우고, 상관된 하위 쿼리를 올바르게 이해하고, 아무 행도 자동으로 반환하지 않는 NOT IN 트랩을 피하십시오.
- 하위 쿼리는 다른 쿼리 내에 중첩된 쿼리이며 외부 쿼리는 해당 결과를 사용합니다.
- 하위 쿼리는
WHERE,FROM,SELECT및HAVING에 나타날 수 있습니다. - 상관 하위 쿼리는 외부 행을 참조하므로 행별로 논리적으로 평가됩니다.
- NULL이 가능한 경우
NOT EXISTS에서NOT IN를 선호합니다.
일부 질문에는 답변하는 데 두 단계가 필요합니다. “평균보다 높은 주문은 무엇입니까?” 먼저 평균을 구한 다음 각 주문을 평균과 비교해야 합니다. SQL 하위 쿼리를 사용하면 두 단계를 하나의 문으로 작성할 수 있습니다.
이 튜토리얼에서는 두 개의 작은 테이블을 사용하여 각 유형을 다룹니다. 우리는 SQLite 3.50에서 이러한 쿼리를 실행했으며 표시된 결과는 해당 실행에서 나온 것입니다. 표준 하위 쿼리 구문은 널리 지원되며 데이터베이스가 다른 부분을 지적합니다.
하위 쿼리란 무엇입니까?
내부 또는 중첩 쿼리라고도 하는 하위 쿼리는 다른 문 안에 대괄호로 묶인 SELECT 문입니다. 개념적으로 내부 쿼리는 외부 쿼리가 사용하는 결과를 생성합니다.
SELECT id, total
FROM orders
WHERE total > (SELECT AVG(total) FROM orders);
샘플 테이블
CREATE TABLE customers (id INT, name TEXT, city TEXT);
CREATE TABLE orders (id INT, customer_id INT, total INT);
INSERT INTO customers VALUES
(1,'Asha','Pune'), (2,'Ben','Delhi'), (3,'Chitra','Pune'), (4,'Dev','Goa');
INSERT INTO orders VALUES
(101,1,1200), (102,1,800), (103,2,300), (104,3,2500), (105,3,100);
Dev에는 주문이 없습니다. 이 세부 사항은 아래의 몇 가지 예에서 중요합니다.
서브쿼리 종류 한눈에 보기
| 유형 | 반품 | 일반적인 위치 | 일반 연산자 |
|---|---|---|---|
| 스칼라 | 하나의 값 | WHERE, SELECT |
=, >, < |
| 다중 행 | 하나의 열, 많은 행 | 어디서 |
IN, ANY, ALL |
| 테이블(파생) | 많은 열과 행 | 에서 |
테이블처럼 사용 |
| 상관관계 | 바깥쪽 행에 따라 다름 | WHERE, SELECT |
임의 및 EXISTS |
스칼라 하위 쿼리
스칼라 하위 쿼리는 정확히 하나의 값을 반환하므로 단일 값이 적합한 모든 곳에서 사용할 수 있습니다. 다음은 이전 쿼리와 그 결과입니다. 모든 주문의 평균은 980입니다.
SELECT id, total
FROM orders
WHERE total > (SELECT AVG(total) FROM orders);
-- 101 | 1200
-- 104 | 2500
WHERE에서는 집계가 직접 허용되지 않으므로 WHERE total > AVG(total)을 쓸 수 없습니다. 하위 쿼리는 값을 별도로 계산하여 이 문제를 해결합니다.
“스칼라” 하위 쿼리가 여러 행을 반환하면 어떻게 되나요? PostgreSQL, MySQL, SQL Server를 포함한 대부분의 데이터베이스에서는 오류가 발생합니다. SQLite는 그렇지 않습니다. 우리 테스트에서는 첫 번째 행만 자동으로 사용했는데, 이는 실제 버그를 숨길 수 있으므로 이 동작에 의존하지 마십시오.
IN과 NOT IN
내부 쿼리가 목록을 반환하는 경우 IN을 사용하세요. 1000개 이상의 주문이 하나 이상 있는 고객을 찾습니다.
SELECT name FROM customers
WHERE id IN (SELECT customer_id FROM orders WHERE total > 1000);
-- Asha
-- Chitra
NOT IN은 반대로 주문한 적이 없는 고객을 찾습니다.
SELECT name FROM customers
WHERE id NOT IN (SELECT customer_id FROM orders);
-- Dev
여기에서는 작동하지만 NOT IN에는 아래에서 다루는 위험한 극단적인 경우가 있습니다.
FROM의 하위 쿼리
FROM의 하위 쿼리는 종종 파생 테이블이라고 불리는 임시 테이블 역할을 합니다. 각 도시의 고객당 평균 지출에 대한 다음 쿼리에서와 같이 두 번 집계해야 할 때 유용합니다.
SELECT city, AVG(spent) AS avg_spent
FROM (
SELECT c.city, SUM(o.total) AS spent
FROM customers c
JOIN orders o ON o.customer_id = c.id
GROUP BY c.id, c.city
) AS per_customer
GROUP BY city;
-- Delhi | 300.0
-- Pune | 2300.0
내부 쿼리는 각 고객의 합계를 구하고, 외부 쿼리는 해당 합계의 평균을 계산합니다. 일부 데이터베이스에서 요구하는 것처럼 파생 테이블에 별칭을 지정하는 것은 좋은 습관입니다. GROUP BY이 처음이라면 SQL GROUP BY 및 HAVING을 참조하세요.
SELECT의 하위 쿼리
스칼라 하위 쿼리는 계산된 열을 추가할 수도 있습니다. 이것은 고객당 주문을 계산합니다.
SELECT name,
(SELECT COUNT(*) FROM orders o WHERE o.customer_id = c.id) AS order_count
FROM customers c;
-- Asha | 2
-- Ben | 1
-- Chitra | 2
-- Dev | 0
Dev는 0으로 나타납니다. Dev에 일치하는 행이 없기 때문에 내부 조인은 Dev를 완전히 삭제했을 것입니다. SQL 조인 설명에서 설명하는 LEFT JOIN과 GROUP BY를 사용하여 동일한 결과를 얻을 수 있습니다.
상관 하위 쿼리
이전 예제도 내부 쿼리가 외부 쿼리의 c.id을 참조하므로 상관 관계가 있습니다. 상관되지 않은 하위 쿼리는 단독으로 실행할 수 있습니다. 상관된 항목은 현재 외부 행의 값에 따라 달라지므로 그럴 수 없습니다.
이는 동일한 고객의 평균보다 높은 주문을 찾습니다.
SELECT o.id, o.customer_id, o.total
FROM orders o
WHERE o.total > (
SELECT AVG(i.total)
FROM orders i
WHERE i.customer_id = o.customer_id
);
-- 101 | 1 | 1200
-- 104 | 3 | 2500
읽는 방법은 다음과 같습니다. 주문 101의 경우 내부 쿼리는 고객 1의 주문(1200 및 800)을 평균화하여 1000을 제공합니다. 1200이 더 크므로 행이 유지됩니다. 주문 102의 경우 동일한 평균이 적용되지만 800은 더 크지 않으므로 삭제됩니다. 고객 2의 단일 주문은 자체 평균과 동일하므로 해당 주문도 삭제됩니다.
| 특징 | 상관관계 없음 | 상관관계 |
|---|---|---|
| 외부 쿼리 값을 사용합니까? | 아니요 | 예 |
| 자체적으로 실행할 수 있나요? | 예 | 아니요 |
| 논리적 실행 | 한 번 | 외부 행당 한 번 |
| 성능 위험 | 보통 낮음 | 큰 테이블에서는 높을 수 있음 |
“행당 한 번”은 논리를 설명하며 쿼리 최적화 프로그램은 종종 이를 훨씬 더 효율적인 것으로 다시 작성합니다. 그럼에도 불구하고 느린 상관 하위 쿼리는 조사해 볼 가치가 있습니다. 내부 열(여기서는 orders.customer_id)의 인덱스가 큰 차이를 만들 수 있습니다. SQL 인덱스 설명을 참조하세요.
존재하고 존재하지 않음
EXISTS은 예 또는 아니오 질문을 합니다. 내부 쿼리가 최소한 하나의 행을 반환합니까? 첫 번째 일치에서 멈출 수 있으며 내부에서 무엇을 선택하든 상관이 없기 때문에 사람들은 종종 SELECT 1를 씁니다.
SELECT c.name FROM customers c
WHERE EXISTS (SELECT 1 FROM orders o WHERE o.customer_id = c.id);
-- Asha, Ben, Chitra
SELECT c.name FROM customers c
WHERE NOT EXISTS (SELECT 1 FROM orders o WHERE o.customer_id = c.id);
-- Dev
NOT IN NULL 트랩
이것은 가장 일반적인 하위 쿼리 버그 중 하나입니다. 하나의 실제 ID와 하나의 NULL이 있는 테이블을 만든 다음 이에 대해 두 가지 양식을 모두 실행했습니다.
CREATE TABLE r (customer_id INT);
INSERT INTO r VALUES (1), (NULL);
SELECT name FROM customers
WHERE id NOT IN (SELECT customer_id FROM r);
-- (no rows at all)
SELECT c.name FROM customers c
WHERE NOT EXISTS (SELECT 1 FROM r WHERE r.customer_id = c.id);
-- Ben, Chitra, Dev
첫 번째는 왜 아무것도 반환하지 않습니까? id NOT IN (1, NULL)은 id <> 1 AND id <> NULL를 의미합니다. NULL과의 비교는 true가 아니라 알 수 없으므로 전체 조건이 true가 될 수 없습니다. 오류 메시지나 경고도 없고 그럴듯해 보이는 빈 결과만 표시됩니다.
팁: 기본적으로 안티 조인에는 NOT EXISTS를 사용하세요. NOT IN을 사용하는 경우 하위 쿼리 안에 WHERE customer_id IS NOT NULL를 추가하세요.
하위 쿼리 vs JOIN vs CTE
많은 쿼리는 여러 가지 방법으로 작성될 수 있습니다. 이전에는 IN을 사용하여 대량 주문 고객을 찾았습니다. 다음은 조인을 사용한 동일한 결과입니다.
SELECT DISTINCT c.name FROM customers c
JOIN orders o ON o.customer_id = c.id AND o.total > 1000;
-- Asha
-- Chitra
DISTINCT을 주목하세요. 고객이 일치하는 항목이 여러 개인 경우 조인을 통해 중복 항목이 생성될 수 있지만 IN와 EXISTS은 그럴 수 없습니다.
| 사용 | 언제 |
|---|---|
| 가입 | 두 테이블의 열이 필요합니다 |
| 있음 또는 존재함 | 일치하는 항목이 있는지 여부에 따라 필터링하면 됩니다. |
| 파생 테이블 | 먼저 집계해야 하며 시간이 짧습니다. |
| CTE | 논리에 여러 단계가 있거나 두 번 이상 사용됩니다. |
| 창 기능 | 각 행 옆에 그룹별 수치가 필요합니다. |
성능은 데이터베이스와 데이터에 따라 다르며 최신 최적화 프로그램은 종종 유사한 계획을 생성합니다. 따라서 가장 명확한 형식을 먼저 선택한 다음 느린 것으로 판명되면 EXPLAIN을 확인하십시오.
일반적인 실수
- 여러 행 결과에
=사용.IN을 사용하거나 내부 쿼리가 한 행을 반환하는지 확인하세요. - null 허용 열에서
NOT IN를 사용합니다. 모든 행을 자동으로 잃을 수 있습니다. - 불명확한 별칭을 사용합니다. 상관 쿼리에서는 모든 열을 한정해야 합니다. 그렇지 않으면 잘못된 테이블에 바인딩될 수 있습니다.
- 깊은 중첩. 세 가지 수준은 읽기 어렵기 때문에 CTE로 변환하세요.
- 내부에
ORDER BY를 추가합니다. 일반적으로 외부 결과에는 영향을 미치지 않으며 일부 데이터베이스에서는 이를 거부합니다.
마무리
하위 쿼리는 2단계 질문을 표현하는 자연스러운 방법입니다. 스칼라 하위 쿼리와 IN로 시작한 다음, 한 번에 하나의 외부 행을 통해 추론하여 상관 관계를 연습합니다. 그리고 NULL이 가능할 때마다 NOT EXISTS를 기억하세요. 연습하려면 하위 쿼리, 조인 및 CTE를 사용하여 세 가지 방법으로 하나의 질문을 작성하고 결과와 가독성을 모두 비교하십시오.
자주 묻는 질문
SQL의 하위 쿼리란 무엇입니까?
하위 쿼리는 다른 SQL 문 안에 괄호 안에 중첩된 SELECT 문입니다. 외부 명령문은 결과를 값, 목록 또는 테이블로 사용합니다.
상관 하위 쿼리란 무엇입니까?
외부 쿼리의 열을 참조하는 하위 쿼리입니다. 현재 외부 행에 따라 달라지므로 자체적으로 실행할 수 없습니다.
하위 쿼리와 JOIN 중 어느 것이 더 빠릅니까?
데이터베이스와 데이터에 따라 다르며 최적화 프로그램은 종종 유사한 계획을 생성합니다. 가장 명확한 버전을 먼저 작성한 다음 성능이 중요한 경우 실행 계획을 비교하십시오.
IN과 EXISTS의 차이점은 무엇인가요?
IN은 값을 결과 목록과 비교합니다. EXISTS는 행이 반환되는지 여부를 확인합니다. 부정되면 NULL과 다르게 동작합니다.
하위 쿼리가 여러 열을 반환할 수 있나요?
예, FROM에서 파생 테이블로 사용하는 경우 일부 데이터베이스에서는 행 비교도 허용합니다. 스칼라 하위 쿼리는 하나의 열과 하나의 행만 반환해야 합니다.
계속 학습하세요
테스트, WordPress 또는 SEO에 도움이 필요하십니까?
우리는 팀이 더 나은 소프트웨어를 출시하고 사이트를 성장시킬 수 있도록 돕습니다. 현재 진행 중인 작업을 알려주시면 명확한 다음 단계를 제안해 드리겠습니다.
추가 가이드 테스트, AI 및 최신 개발
이 기사가 마음에 드셨나요? 주제를 선택하고 최신 튜토리얼로 바로 이동하세요.
AI 환각 설명: 언어 모델이 사물을 구성하는 이유와 이를 줄이는 방법
AI 환각은 그것이 무엇인지, 언어 모델이 환각을 생성하는 이유, 일반적인 유형, 접지 및 프롬프트를 통해 환각을 줄이는 방법, 그리고 우리가 실행한 간단한 점검에 대해 설명했습니다.
기사 읽기 →DevOps환경 변수 설명: .env 파일, 비밀 및 구성이 올바르게 완료되었습니다.
우리가 실행한 Python 예제를 통해 설명된 환경 변수: 읽기 및 설정, 모든 값이 문자열인 이유, .env 파일, 프로세스 상속, 비밀 및 유효성 검사.
기사 읽기 →소프트웨어 개발API 속도 제한 설명: 알고리즘, 헤더 및 429 오류 처리
우리가 실행한 시뮬레이션을 통해 설명된 API 속도 제한: 토큰 버킷, 고정 창, 슬라이딩 창, 429 응답, 속도 제한 헤더, 백오프를 사용한 재시도 및 테스트 제한.
기사 읽기 →테스트 자동화Python에서 조롱: unittest.mock, 패치 및 테스트를 거짓말로 만드는 실수
Unittest.mock을 사용하여 Python에서 모의, 테스트됨: 모의 및 return_value, 부작용, 이름이 사용되는 패치, 사양 및 자동 사양, 모의 날짜 및 일반적인 실수.
기사 읽기 →소프트웨어 테스트코드 커버리지 설명: 회선 커버리지와 분기 커버리지 및 100%의 실제 의미
실제 Coverage.py 실행을 통해 설명되는 코드 적용 범위: 라인, 분기 및 조건 적용 범위, 보고서 읽기, 100% 적용 범위가 여전히 버그를 놓칠 수 있는 이유 및 합리적인 대상.
기사 읽기 →데이터베이스 및 SQLSQL의 DELETE vs TRUNCATE vs DROP: 차이점, 롤백 및 사용 시기
테스트된 SQL을 통해 DELETE 대 TRUNCATE 대 DROP에 대해 설명합니다. 각각의 제거, 롤백, 트리거, ID 재설정, 속도 및 PostgreSQL, MySQL, SQL Server 및 SQLite의 차이점.
기사 읽기 →데이터베이스 및 SQLSQL 뷰 설명: 예제를 통해 함정 생성, 사용 및 방지
우리가 실행한 쿼리로 설명된 SQL 뷰: 뷰 생성, 실시간 결과, 열 숨기기, 성능, 업데이트 가능하고 구체화된 뷰, 손상된 종속성 및 모범 사례.
기사 읽기 →소프트웨어 개발TypeScript 인터페이스와 유형: 실제 차이점, 컴파일러로 테스트
TypeScript 인터페이스 대 유형, 실제 컴파일러로 확인: 둘 다 할 수 있는 것, 하나만 할 수 있는 것, 선언 병합, 확장 대 교차점 및 따라야 할 간단한 규칙.
기사 읽기 →소프트웨어 개발Python *args 및 **kwargs 설명: 명확한 예가 포함된 유연한 함수
Python *args 및 **kwargs는 우리가 실행한 코드(패킹 및 언패킹, 매개변수 순서, 키워드 전용 및 위치 전용 인수, 데코레이터 및 일반적인 오류)를 설명했습니다.
기사 읽기 →소프트웨어 개발Python Lambda 함수: 구문, 실제 사용 및 사용하지 말아야 할 경우
Python 람다 함수는 구문, 키를 사용한 정렬, 맵 및 필터, 클로저, 후기 바인딩 트랩, 일반 def가 더 나은 선택인 경우 등 우리가 실행한 코드로 설명되었습니다.
기사 읽기 →인공지능AI 에이전트란 무엇입니까? 작동 방식, 간단한 에이전트 루프를 사용하여 실행할 수 있음
AI 에이전트란 무엇입니까? 우리가 실행한 작은 Python 루프, 실제 위험 및 간단한 챗봇이 더 나은 선택일 때 에이전트 루프, 도구, 메모리 및 가드레일에 대한 일반 가이드입니다.
기사 읽기 →DevOps모니터링과 관찰 가능성: 로그, 지표, 추적을 통한 실제 차이점
모니터링과 관찰 가능성 설명: 알려진 오류와 알려지지 않은 오류, 로그, 지표 및 추적, 결제 사건 안내, 골든 신호, OpenTelemetry 및 유용한 경고.
기사 읽기 →DevOpsDocker 볼륨과 바인딩 마운트: 컨테이너 데이터를 올바른 방식으로 유지
Docker 볼륨과 바인드 마운트 설명: 컨테이너 데이터가 사라지는 이유, 명명된 볼륨, 바인드 마운트, tmpfs, Compose 예제, 백업, 권한 및 각 사용 시기.
기사 읽기 →테스트 자동화TDD와 BDD: 주요 차이점, 두 가지 방식으로 구축된 하나의 기능 및 각 사용 시기
TDD와 BDD는 두 가지 방식으로 구축된 하나의 할인 기능, 즉 우리가 실행한 코드를 사용한 적록 리팩토링, 주어진 시점 시나리오, 도구, 장단점 및 각 사용 시기를 설명합니다.
기사 읽기 →소프트웨어 테스트UAT(사용자 승인 테스트): 프로세스, 체크리스트 및 실제 사례
사용자 승인 테스트는 누가 실행하는지, QA와 어떻게 다른지, 7단계 프로세스, UAT 테스트 사례 템플릿, 체크리스트, 승인 기준 및 일반적인 실수에 대해 설명했습니다.
기사 읽기 →데이터베이스 및 SQLSQL NULL 값 설명: IS NULL, COALESCE, NULLIF 및 피해야 할 함정
우리가 실행한 쿼리를 통해 설명된 SQL NULL 값: 3개 값 논리, IS NULL, COALESCE, NULLIF, 집계, 조인 및 정렬이 NULL을 처리하는 방법 및 조용히 발생하는 버그.
기사 읽기 →데이터베이스 및 SQLSQL CASE WHEN 문: 구문, 실제 예 및 일반적인 실수
우리가 실행한 쿼리로 설명된 SQL CASE: 단순 및 검색 양식, 조건 순서, SUM이 있는 피벗, COUNT 트릭, 사용자 정의 정렬, 업데이트 및 피해야 할 NULL 트랩.
기사 읽기 →소프트웨어 개발JWT란 무엇입니까? 실제 예제로 설명되는 JSON 웹 토큰
JWT란 무엇입니까? JSON 웹 토큰은 세 부분, 즉 우리가 실행한 코드에서 구축 및 변조된 토큰, JWT 대 세션, 저장소, 새로 고침 토큰 및 보안 실수를 설명했습니다.
기사 읽기 →소프트웨어 개발JavaScript 이벤트 루프 설명: 예제가 포함된 호출 스택, 마이크로태스크 및 타이머
호출 스택, 작업 및 마이크로태스크 대기열, setTimeout 0이 즉시 실행되지 않는 이유, 차단, 기아 및 인터뷰 퀴즈 등 우리가 실행한 코드로 JavaScript 이벤트 루프를 설명했습니다.
기사 읽기 →소프트웨어 개발Python 생성기 및 수율 설명: 실제 예제로 메모리 절약
Python 생성기와 항복은 우리가 실행한 코드로 설명됩니다. 일시 중지 및 재개 방법, 측정된 메모리 절약, 파이프라인, 무한 시퀀스, 항복, 전송 및 공통 트랩.
기사 읽기 →인공지능임베딩이란 무엇입니까? 벡터와 코사인 유사성을 간단하게 설명
임베딩이란 무엇입니까? 벡터, 코사인 유사성 및 의미론적 검색에 대한 일반 언어 가이드로, 우리가 실행한 작은 예, 일반적인 용도, 모델 선택 및 알려진 한계를 제공합니다.
기사 읽기 →DevOps블루-그린 배포와 카나리아 배포: 차이점, 장단점 및 선택 방법
블루-그린 배포와 카나리아 배포에 대한 설명: 각각의 작동 방식, 비용, 위험 및 롤백, 테스트한 안정적인 사용자 버킷팅, 데이터베이스 마이그레이션, 롤링 업데이트 및 선택 방법.
기사 읽기 →테스트 자동화불안정한 테스트: 원인과 해결 방법
우리가 실행한 데모를 통해 불안정한 테스트에 대해 설명했습니다. 주요 원인, 확인 및 진단 방법, 시기, 공유 상태 및 날짜, 격리 프로세스에 대한 적절한 수정 사항.
기사 읽기 →소프트웨어 테스트부하 테스트와 스트레스 테스트 비교: 차이점, 측정항목 및 k6 예
부하 테스트와 스트레스 테스트 비교 설명: 각각의 증명, 스파이크 및 흡수 테스트, 중요한 측정항목, 평균이 잘못된 이유, k6 예 및 테스트 계획 방법.
기사 읽기 →소프트웨어 테스트테스트 케이스와 테스트 시나리오: 주요 차이점, 예 및 각각의 사용 시기
테스트 케이스와 테스트 시나리오 설명: 명확한 정의, 병렬 테이블, 시나리오에서 케이스로 가져온 하나의 비밀번호 재설정 기능, 템플릿 및 각 사용 시기.
기사 읽기 →데이터베이스 및 SQLSQL 쿼리 최적화: 타이밍에 따라 실행 계획을 읽고 느린 쿼리를 수정합니다.
백만 개의 행에서 테스트된 SQL 쿼리 최적화: 실행 계획 읽기, 올바른 인덱스 추가, 분할할 수 없는 필터 수정, 복합 인덱스 및 키 세트 페이지 매김 사용.
기사 읽기 →데이터베이스 및 SQLSQL UNION 대 UNION ALL: 테스트된 차이점, 예 및 성능
SQL UNION과 UNION ALL은 우리가 실행한 쿼리(중복, 둘 다 따르는 규칙, 실제 데이터 버그, 측정된 성능, INTERSECT 및 EXCEPT, 각각의 사용 시기)를 설명합니다.
기사 읽기 →소프트웨어 개발JavaScript Fetch API 튜토리얼: GET, POST, 오류 처리 및 시간 초과
로컬 서버에 대해 테스트된 JavaScript Fetch API 튜토리얼: GET 및 POST, 404가 발생하지 않는 이유, 재사용 가능한 도우미, 쿼리 문자열, 시간 초과, CORS 및 일반적인 실수.
기사 읽기 →소프트웨어 개발Python 파일 처리: 읽기, 쓰기, CSV, JSON 및 pathlib 예제 포함
우리가 실행한 코드로 설명된 Python 파일 처리: 개방형 모드, 대용량 파일 읽기, CSV, JSON, pathlib, 바이너리 파일, 안전한 쓰기, 오류 처리 및 일반적인 실수.
기사 읽기 →소프트웨어 개발Python 클래스 및 객체: 실제 예제가 포함된 OOP 튜토리얼
우리가 실행한 코드로 설명된 Python 클래스와 객체: __init__, 메소드, 클래스 대 인스턴스 속성, 상속, 속성, 던더 메소드, 데이터 클래스 및 일반적인 실수.
기사 읽기 →인공지능대규모 언어 모델이란 무엇입니까? LLM의 작동 방식, 과대광고 없이 설명
대규모 언어 모델이란 무엇입니까? LLM은 토큰, 임베딩, 주의, 훈련, 온도 및 컨텍스트 창, 작은 다음 단어 데모 및 실제 한계 등 일반 언어로 설명됩니다.
기사 읽기 →DevOps초보자를 위한 Linux 명령: 예제가 포함된 필수 터미널 가이드
탐색, 파일, 로그 보기, grep, 파이프, 권한, 프로세스 및 아카이브 등 작업별로 그룹화된 초보자를 위한 Linux 명령과 실용적인 로그 분석 예제가 포함되어 있습니다.
기사 읽기 →테스트 자동화셀레늄 대 극작가: 주요 차이점, 코드 비교 및 선택할 항목
Selenium과 Playwright 비교: 아키텍처, 대기, 브라우저 및 언어 지원, 디버깅, 두 도구 모두에서 동일한 테스트, 마이그레이션 조언 및 선택 방법.
기사 읽기 →소프트웨어 테스트등가 분할: 실제 예제를 통해 설명되는 테스트 설계 기법
등가 분할 설명: 유효한 파티션과 유효하지 않은 파티션을 찾는 방법, 연령, 비밀번호 및 쿠폰에 대한 작업 예제, 실행한 테스트, 경계와 쌍을 이루는 이유.
기사 읽기 →소프트웨어 테스트소프트웨어 테스팅의 심각도와 우선순위: 차이점, 매트릭스 및 실제 사례
소프트웨어 테스팅의 심각도와 우선순위에 대한 설명: 명확한 정의, 예제가 포함된 4방향 매트릭스, 수준 척도, 각 항목을 설정하는 사람 및 버그 분류 실행 방법.
기사 읽기 →데이터베이스 및 SQLSQL 하위 쿼리 자습서: 유형, 상관 하위 쿼리 및 EXISTS(예제 포함)
스칼라, IN, FROM 및 SELECT 하위 쿼리, 상관 하위 쿼리, EXISTS, NOT IN NULL 트랩 및 하위 쿼리 대 JOIN 대 CTE 등 우리가 실행한 쿼리가 포함된 SQL 하위 쿼리 자습서입니다.
기사 읽기 →데이터베이스 및 SQLSQL 트랜잭션 및 ACID 설명: COMMIT, ROLLBACK 및 격리 수준
COMMIT, ROLLBACK, 저장점, 잠금, 격리 수준, 더티 읽기, 교착 상태 및 모범 사례 등 우리가 실행한 은행 이체를 통해 SQL 트랜잭션 및 ACID를 설명했습니다.
기사 읽기 →소프트웨어 개발Git merge vs rebase: 차이점, 예제, 언제 무엇을 쓸까
Git merge vs rebase를 실제 로그 출력, 비교표, rebase의 황금률, 안전한 팀 워크플로로 설명합니다.
기사 읽기 →소프트웨어 개발파이썬 리스트 컴프리헨션: 문법, 예제, 피해야 할 때
파이썬 리스트 컴프리헨션 설명: 문법, 필터링, if-else, 중첩 반복문, 실제 측정 시간, 그리고 일반 for 반복문이 더 나은 경우.
기사 읽기 →데이터베이스 및 SQL예제로 쉽게 배우는 SQL JOIN (Inner, Left, Right, Full)
샘플 테이블과 쿼리로 SQL JOIN을 단계별로 이해하세요. INNER, LEFT, RIGHT, FULL, CROSS, SELF와 흔한 실수, 성능 팁까지 정리했습니다.
기사 읽기 →