발행일 : 03/10/2025

SQL(Structured Query Language): 참조

다음 섹션에서는 SQL에 대해 간략히 소개합니다. 이러한 섹션은 쿼리의 기능을 파악하기 위한 것일 뿐, 포괄적인 참조 자료로 활용할 수 있는 것은 아닙니다.

SELECT 문 사용

JMP의 기본적인 SQL 문은 SELECT 문입니다. 이 문은 데이터 소스에서 페치할 행을 데이터베이스에 알려 줍니다. Solubility.jmp 샘플 데이터 테이블을 사용하여 데이터베이스 쿼리를 위한 SQL 문 작성의 절차를 완료했다면 실제로는 다음과 같은 SQL 문을 데이터 소스로 보낸 것입니다.

SELECT * FROM "Solubility"

* 연산자는 "모든 열"을 나타내는 약식 표현입니다. 따라서 이 문은 지정된 데이터 테이블의 모든 열을 반환하라는 요청을 데이터베이스에 보냅니다.

모든 행을 반환하는 대신, *를 데이터 테이블의 특정 열 이름으로 바꿀 수 있습니다. Solubility 데이터 테이블 예의 경우 다음 문을 전송하여 ETHER, OCTANOLCHLOROFORM 열만 선택할 수 있습니다.

SELECT ETHER, OCTANOL, CHLOROFORM FROM "Solubility"

참고: JMP에서는 SQL 문을 세미콜론으로 끝내지 않아도 됩니다.

JMP에서는 실제 SQL을 입력할 필요 없이 그래픽 인터페이스를 통해 간단한 SELECT 문을 생성할 수 있습니다. 데이터 소스에서 특정 열을 선택하려면 열 목록에서 해당 열을 강조 표시하십시오.

일부 행을 강조 표시하려면

Shift 키를 누른 채 열 이름 범위를 클릭하여 선택

Ctrl 키를 누른 채로 클릭 (Windows)하거나 Command 키를 누른 채로 클릭(macOS)하여 개별 열 이름을 선택합니다.

그러면 선택한 항목에 맞게 SQL 문이 변경됩니다.

때로는 데이터 소스에서 고유한 레코드만 페치하려는 경우가 있습니다. 즉, 중복 레코드를 제거하려고 합니다. 이를 위해서는 DISTINCT 키워드를 사용합니다.

SELECT DISTINCT ETHER, OCTANOL, CHLOROFORM FROM "Solubility"

결과 정렬

데이터베이스에 있는 하나 이상의 필드를 기준으로 결과를 정렬할 수 있습니다. 정렬할 변수는 ORDER BY 명령을 사용하여 지정합니다.

SELECT * FROM "Solubility" ORDER BY LABELS

이 문은 모든 필드를 선택하고, 결과 데이터 테이블을 LABELS 변수를 기준으로 정렬합니다. 정렬 기준 변수를 추가로 지정하려면 쉼표로 구분된 목록으로 변수를 추가합니다.

SELECT * FROM "Solubility" ORDER BY LABELS, ETHER, OCTANOL

WHERE 문 사용

WHERE 문을 사용하면 조건에 따라 데이터 테이블의 일부 행만 페치할 수 있습니다. 예를 들어 ETHER 열의 값이 1보다 큰 모든 행을 선택할 수 있습니다.

SELECT * FROM "Solubility" WHERE ETHER > 1

WHERE 문은 FROM 문 다음에 배치되며 다음과 같은 논리 연산자를 사용할 수 있습니다.

표 3.4 WHERE 연산자

연산자

의미

=

같음

!= 또는 < >

같지 않음

>

보다 큼

<

보다 작음

>=

보다 크거나 같음

<=

보다 작거나 같음

NOT

논리적 NOT

AND

논리적 AND

OR

논리적 OR

조건을 평가할 때는 전체 문에 대해 NOT 문이 먼저 처리된 후 AND 문과 OR 문이 처리됩니다. 따라서

SELECT * FROM "Solubility" WHERE ETHER > -2 OR OCTANOL < 1 AND CHLOROFORM > 0

이 문은 다음 문과 동등합니다.

SELECT * FROM "Solubility" WHERE ETHER > -2 OR (OCTANOL < 1 AND CHLOROFORM > 0)

IN 및 BETWEEN 문 사용

페치할 값 범위를 지정하려면 INBETWEEN 문을 WHERE와 함께 사용합니다. IN 문은 값 목록을 지정하며 BETWEEN은 값 범위를 지정하는 데 사용할 수 있습니다. 예를 들면 다음과 같습니다.

SELECT * FROM "Solubility" WHERE LABELS IN (’Methanol’, ’Ethanol’, 
’Propanol’)

이 문은 LABELS 열의 값이 Methanol, Ethanol 또는 Propanol인 모든 행을 페치합니다.

SELECT * FROM "Solubility" WHERE ETHER BETWEEN 0 AND 2

이 문은 ETHER 값이 0부터 2 사이인 모든 행을 페치합니다.

LIKE 문 사용

LIKE 문을 사용하여 지정한 문자열과 유사한 값을 선택할 수 있습니다. 임의의 값을 취할 수 있는 여러 문자로 된 문자열을 나타내려면 %를 사용합니다. 예를 들어 Solubility 데이터에서 알코올 화합물, 즉 OL로 끝나는 화합물을 선택할 수 있습니다. 다음 SQL 문은 이 작업을 수행합니다.

SELECT * FROM "Solubility" WHERE LABELS LIKE ‘%OL’

% 연산자는 LIKE 문의 어느 곳에나 배치할 수 있습니다. 다음 예에서는 라벨이 M으로 시작하고 OL로 끝나는 모든 행을 추출합니다.

SELECT * FROM "Solubility" WHERE LABELS LIKE ‘M%OL’

집계 함수 사용

집계 함수는 데이터 자체가 아니라 데이터의 요약을 페치하는 데 사용됩니다. SELECT 문에서는 다음과 같은 집계 함수를 사용합니다.

표 3.5 SELECT 문 함수

함수

의미

SUM( )

열의 합

AVG( )

열의 평균

MAX( )

열의 최대값

MIN( )

열의 최소값

COUNT( )

열의 행 수

다음은 몇 가지 예입니다.

다음 문은 ETHEROCTANOL 열의 합을 요청합니다.

SELECT SUM(ETHER), SUM(OCTANOL) FROM "Solubility"

다음 문은 ETHER 값이 1보다 큰 행의 개수를 반환합니다.

SELECT COUNT(*) FROM "Solubility" WHERE ETHER > 1

다음 문을 사용하면 알코올에 해당하는 데이터의 OCTANOL 값을 알 수 있습니다.

SELECT AVG(OCTANOL) FROM "Solubility" WHERE LABELS LIKE ‘%OL’

참고: 집계 함수를 사용할 경우 결과 JMP 데이터 테이블에서 열 이름은 Expr1000, Expr1001 등이 됩니다. 페치가 완료된 후 열 이름을 바꿀 수 있습니다.

GROUP BY 및 HAVING 명령

집계 함수와 GROUP BYHAVING 명령을 함께 사용하면 특히 유용합니다. 이러한 명령을 사용하면 데이터 집합의 필드 값에 따라 집계 함수를 여러 번 실행할 수 있습니다.

예를 들어 데이터 테이블에서 각 ETHER 값에 대해 ETHER=0, ETHER=1 등인 레코드의 개수를 계산할 수 있습니다.

SELECT COUNT(ETHER) FROM "Solubility" GROUP BY (ETHER)는 각 항목이 ETHER의 한 수준에 해당하는 단일 데이터 열을 반환합니다.

SELECT COUNT(ETHER) FROM "Solubility" WHERE OCTANOL > 0 GROUP BY (ETHER)는 위의 문과 동일한 작업을 수행하되 단 OCTANOL이 0보다 큰 행만 대상으로 합니다.

열 집계 함수와 함께 GROUP BY를 사용할 때는 해당 열 자체를 SELECT 문에 포함합니다. 예를 들면 다음과 같습니다.

SELECT ETHER, COUNT(ETHER) FROM "Solubility" GROUP BY (ETHER)

이 문은 개수 외에도 ETHER의 수준이 포함된 열을 반환합니다.

하위 쿼리 사용

집계 함수는 WHERE 문에서 사용할 값을 계산하는 데도 유용합니다. 예를 들어 ETHER의 평균 값보다 큰 모든 값을 페치할 수 있습니다. 즉, ETHER의 평균 값을 구한 후 이 평균보다 큰 값을 가진 레코드만 선택할 수 있습니다. 원하는 평균을 페치하는 데는 SELECT AVG(ETHER) FROM "Solubility"를 사용합니다. 따라서 적절한 SQL 명령은 WHERE 조건에서 이 문을 사용하는 것입니다.

SELECT * FROM "Solubility" WHERE ETHER > (SELECT AVG(ETHER) FROM "Solubility")

SQL 쿼리 저장 및 로드

쿼리를 생성한 후 나중에 이 쿼리를 반복하려고 할 수 있습니다. 이 경우 쿼리를 사용하려고 할 때마다 매번 쿼리를 입력할 필요가 없습니다. 대신 쿼리를 외부 파일로 내보낼 수 있습니다. 이렇게 하려면 Figure 3.56에 표시된 창에서 SQL 내보내기 버튼을 클릭합니다. 그러면 SQL 쿼리를 텍스트 파일로 저장할 수 있는 창이 나타납니다.

저장된 쿼리를 로드하려면 Figure 3.56에 표시된 창에서 SQL 가져오기 버튼을 클릭합니다. 그러면 저장된 쿼리로 이동할 수 있는 창이 나타납니다. 쿼리를 열면 해당 쿼리가 창에 로드됩니다.

WHERE 절 편집기 사용

JMP에서는 ODBC 가져오기 도중 SQL 쿼리의 WHERE 절을 작성하기 위한 도움말이 제공됩니다. 또한 일반적인 SQL 기능을 사용하여 기본적인 표현식을 작성하는 데 유용한 WHERE 절 편집기도 제공되므로 벤더에 맞는 함수를 작성할 수 있습니다. 예를 들어 SQL에서 비교에 '='을 사용하는지 '=='을 사용하는지, 또는 평균 계산에 avg()를 사용하는지 average()를 사용하는지 몰라도 됩니다.

또한 문자열 리터럴은 큰따옴표("string")가 아니라 작은따옴표('string')로 묶어야 합니다.

WHERE 절 편집기를 열려면

1. 테이블 열기를 사용하여 데이터베이스에 연결의 단계를 따라 데이터베이스에 연결합니다.

2. 데이터베이스 테이블 열기 창에서 고급 버튼을 클릭합니다.

3. Where 버튼을 클릭합니다.

작업 패널에서 표현식, 함수 및 항을 추가하려면 WHERE 절 편집기를 사용합니다. 해당 항목은 강조 표시된 파란색 상자에 적용됩니다.

1. 테이블 이름 브라우저를 클릭하여 테이블을 선택합니다. 해당 테이블의 열이 목록에 나타납니다.

2. SQL 벤더 이름 브라우저를 클릭하여 사용할 SQL의 유형(GenericSQL, Access, DB2, MySQL, Oracle, SQL Server 또는 이 유형 모두)을 선택합니다. 목록에서 함수 또는 연산자를 클릭하고 나타나는 목록에서 연산자를 선택하여 작업을 수행합니다.

참고: SQL Server 데이터 유형 Binary, Geography 및 Geometry는 지원되지 않습니다.

3. 계산식 편집 영역에서 빈 계산식 요소를 클릭하여 선택합니다. 선택한 요소 주위에는 빨간색 외곽선이 표시됩니다. 클릭한 위치를 기준으로 가장 작은 내포 상자 내의 모든 항이 선택됩니다. 이후 작업은 이러한 결합된 요소에 적용됩니다.

4. 키패드의 버튼을 클릭하여 표현식에 연산자를 추가합니다.

5. (선택 사항) WHERE 절을 사용자 정의하려면 계산식 편집기에서 빨간색 삼각형 메뉴의 다음 옵션 중 하나를 선택합니다.

상자 표시

WHERE 절의 항을 둘러싸는 상자를 표시하거나 숨깁니다.

큰 글꼴

계산식의 글꼴 크기를 늘립니다.

작은 글꼴

계산식의 글꼴 크기를 줄입니다.

단순화

WHERE 절의 문을 가능한 한 최대로 단순화합니다.

패널 레이아웃 재설정

Figure 3.57에 표시된 것과 같이 패널을 표시합니다.

WHERE 절 편집기는 계산식 편집기(JMP에서 계산식 생성 참조)와 유사하게 작동합니다.

그림 3.57 WHERE 절 편집기 

The WHERE Clause Editor

더 많은 정보를 원하십니까? 질문이 있습니까? JMP 사용자 커뮤니티에서 답변 받기 (community.jmp.com).