데이터 리터러시

[백문이불여일타] 데이터 분석을 위한 기초 SQL (2)

Cherryl 2024. 8. 4. 14:23

해당 포스팅은 강의에 대한 내용과 개인 노트(GPT-4o 의 도움을 받음)가 포함되어 있습니다.

 

WHERE

테이블은 컬럼과 로우로 이루어져 있다. (엑셀을 떠올리면 된다.) 우리는 모든 칼럼의 데이터를 가져오지는 않는다.

오히려 customerID가 30번 이상인 데이터를 가져오거나 특정 이름을 가진 Customer를 가져오거나

또는 특정 가격 이상인 물건들을 출력해서 본다거나 한다.

 

‘=’가 비교연산자에 해당

WHERE절에서 특정 조건에 만족하는 데이터를 불러오다보니 여기다 조건식을 써주게 된다.

 

더보기

같다 =

다르다 <>

작거나 같다 <=

크거나 같다 >=

작다 <

크다 >


Note

SQL 명령문에서 문법 오류가 발생하는 이유는 WHERE 절에서 조건을 결합할 때 올바른 구문을 사용하지 않았기 때문입니다. WHERE 절에서는 조건을 결합할 때 쉼표(,) 대신 논리 연산자 AND 또는 OR를 사용해야 합니다.


 

 

customer ID가 50보다 작다

SELECT *
FROM Customers
WHERE Country = 'USA' AND CustomerID < 50

 

 

customer ID가 50보다 크다

SELCET *
FROM Customers
WHERE Country = 'USA' AND CustomerID > 50

 

비교 연산자가 숫자가 아닌 경우

비교 연산자는 특정컬럼이 특정 값을 가지는 데이터만 불러오기 위할 때

비교 연산자는 숫자 뿐만 아니라 문자를 불러올 때도 사용할 수 있다.

숫자는 감싸지 않아도 되지만 알파벳 같은경우 ‘ ‘ 나 “ “ 로 감싸야한다.

 

 

AND/OR

AND 논리연산자 둘 다 만족하는 결과값

두가지 조건 중에 하나만 만족하면 되는 경우는 OR


Note

SELECT * FROM Customers WHERE Country = 'USA' LIMIT 10; 이 명령문이 왜 틀린 걸까?

 

 

SQL에서 주어진 명령문은 대부분의 SQL 데이터베이스 시스템에서 올바르게 작동하지만, 몇 가지 데이터베이스 시스템에서는 LIMIT 절이 WHERE 절 다음에 올 수 없다. 이는 특정 데이터베이스 시스템의 구문 규칙에 따라 다를 수 있다. 예를 들어, Microsoft SQL Server의 경우 LIMIT 대신 TOP을 사용해야 한다.

 

  1. MySQL 및 PostgreSQL에서는 LIMIT 절이 WHERE 절 다음에 올 수 있습니다:
  2. sql코드 복사 SELECT * FROM Customers WHERE Country = 'USA' LIMIT 10;
  3. Microsoft SQL Server에서는 LIMIT 대신 TOP을 사용해야 합니다:
  4. sql코드 복사 SELECT TOP 10 * FROM Customers WHERE Country = 'USA';
  5. Oracle에서는 ROWNUM을 사용해야 합니다:
  6. sql코드 복사 SELECT * FROM Customers WHERE Country = 'USA' AND ROWNUM <= 10;

따라서 사용하는 데이터베이스 시스템에 따라 구문을 적절히 변경해야 한다.

현재 구문이 MySQL이나 PostgreSQL에서 사용하는 것이라면, 

sql코드 복사
SELECT *
FROM Customers
WHERE Country = 'USA'
LIMIT 10;

Microsoft SQL Server라

sql코드 복사
SELECT TOP 10 *
FROM Customers
WHERE Country = 'USA';

Oracle의 경우

sql코드 복사
SELECT *
FROM Customers
WHERE Country = 'USA' AND ROWNUM <= 10;