📌 Select
SQL 기본 쿼리 형식 (종합) :
SELECT 컬럼1, 컬럼2, 집계함수(컬럼명) AS 별칭
FROM 테이블명
WHERE 조건1
AND 조건2
OR 조건3
GROUP BY 그룹화할_컬럼
HAVING 집계함수_조건
ORDER BY 정렬할_컬럼 ASC | DESC;
SQL의 실행 순서는 작성 순서와 약간 다릅니다:
- FROM: 데이터가 포함된 테이블을 지정하고 불러옵니다.
- WHERE: 조건에 맞는 개별 행만 필터링합니다.
- GROUP BY: 데이터를 그룹화합니다.
- HAVING: 그룹화된 데이터에 조건을 적용하여 필터링합니다.
- SELECT: 최종적으로 조회할 열과 계산식을 선택합니다.
- ORDER BY: 결과 데이터를 정렬합니다.
1️⃣ SELECT
SELECT는 SQL 쿼리에서 가장 기본적인 명령어로, 데이터베이스에서 원하는 컬럼을 선택하고 조회할 때 사용됩니다.
SELECT name, age FROM users;
위 쿼리는 users 테이블에서 name과 age 컬럼의 데이터를 선택하여 출력합니다.
2️⃣ FROM
FROM은 데이터를 조회할 테이블을 지정하는 데 사용됩니다. 여러 테이블을 사용할 때는 조인(Join)을 통해 여러 테이블을 결합하여 사용할 수도 있습니다.
SELECT * FROM employees;
이 쿼리는 employees 테이블에서 모든 컬럼의 데이터를 조회합니다.
3️⃣ WHERE
WHERE는 조건을 지정하여 원하는 데이터를 필터링하는 데 사용됩니다. 조건에 맞는 행만 결과로 반환합니다.
SELECT * FROM products WHERE price > 1000;
이 쿼리는 products 테이블에서 price가 1000보다 큰 제품만 조회합니다.
4️⃣ AND/OR
AND와 OR은 WHERE 절에서 여러 조건을 결합할 때 사용됩니다. AND는 모든 조건이 참일 때 데이터를 반환하며, OR은 조건 중 하나라도 참이면 데이터를 반환합니다.
SELECT * FROM students WHERE grade = 'A' AND age > 20;
이 쿼리는 grade가 'A'이면서 age가 20을 초과하는 학생들만 조회합니다.
SELECT * FROM employees WHERE department = 'HR' OR salary > 5000;
이 쿼리는 employees 테이블에서 부서가 'HR'이거나 또는 급여가 5000을 초과하는 직원들을 조회합니다.
5️⃣ GROUP BY
GROUP BY는 데이터를 특정 컬럼을 기준으로 그룹화할 때 사용됩니다. GROUP BY를 사용하여 특정 컬럼의 값에 따라 데이터를 묶을 수 있습니다. 주로 집계 함수와 함께 사용됩니다. 자주 사용되는 집계 함수로는 COUNT(), SUM(), AVG(), MAX(), MIN() 등이 있습니다.
SELECT department, COUNT(*)
FROM employees
GROUP BY department;
위 쿼리는 employees 테이블에서 department(부서) 컬럼을 기준으로 데이터를 그룹화하고, 각 부서에 속한 직원 수를 반환합니다. COUNT(*)는 각 그룹에 속한 데이터의 개수를 세는 함수입니다.
예시
- 이 데이터에서 GROUP BY department를 하면, 'HR'과 'IT'라는 두 개의 그룹이 생성됩니다.
- 그 후, COUNT(*)를 사용하여 각 부서에 몇 명의 직원이 있는지 계산합니다.
이렇게 GROUP BY는 데이터를 그룹으로 묶어 집계된 결과를 반환합니다.
6️⃣ HAVING
HAVING은 GROUP BY로 그룹화된 데이터에 조건을 적용할 때 사용됩니다. WHERE 절과 비슷하지만, 중요한 차이점은 HAVING은 그룹화된 결과에 조건을 걸고, WHERE은 그룹화되기 전의 개별 행에 조건을 적용한다는 점입니다.
SELECT department, AVG(salary)
FROM employees
GROUP BY department
HAVING AVG(salary) > 5000;
이 쿼리는 employees 테이블에서 department(부서)별로 salary(급여)의 평균을 계산하고, 그 중 평균 급여가 5000을 초과하는 부서만 결과로 반환합니다. HAVING 절은 AVG(salary)가 5000을 초과하는 부서들만 필터링하는 역할을 합니다.
예시
- GROUP BY department로 'HR'과 'IT' 두 개의 그룹이 만들어지고, 각 그룹에 대해 AVG(salary)가 계산됩니다.
- 'HR'의 평균 급여는 (6000 + 5000) / 2 = 5500, 'IT'의 평균 급여는 (7000 + 3000) / 2 = 5000입니다.
HAVING AVG(salary) > 5000 조건에 의해, 'HR' 부서만 결과로 반환됩니다. 'IT' 부서는 평균 급여가 5000이므로 조건에 맞지 않아서 제외됩니다.
7️⃣ ORDER BY
ORDER BY는 쿼리 결과를 정렬할 때 사용됩니다. 기본적으로 오름차순으로 정렬되며, DESC 키워드를 사용하면 내림차순 정렬이 가능합니다.
SELECT name, age FROM users ORDER BY age DESC;
이 쿼리는 users 테이블에서 나이 순으로 내림차순 정렬된 결과를 조회합니다.
📌 Insert into
INSERT 구문은 SQL 데이터베이스에서 테이블에 새 데이터를 삽입할 때 사용하는 명령문입니다.
이를 통해 데이터베이스 테이블에 한 행(Row) 또는 여러 행을 추가할 수 있습니다.
INSERT INTO 테이블명 (열1, 열2, ...)
VALUES (값1, 값2, ...);
- 테이블명: 데이터를 삽입할 대상 테이블의 이름.
- 열1, 열2, ...: 삽입할 값이 들어갈 열(Column)의 이름들. 생략 가능(아래 참고).
- 값1, 값2, ...: 테이블의 각 열에 들어갈 데이터 값.
1️⃣ 특정 열에 데이터를 지정하여 삽입
INSERT INTO Students (Name, Age, Grade)
VALUES ('John Doe', 15, '10th');
- Students 테이블의 Name, Age, Grade 열에 각각 'John Doe', 15, '10th' 데이터가 삽입됩니다.
2️⃣ 모든 열에 데이터를 삽입
INSERT INTO Students
VALUES ('Jane Smith', 16, '11th');
- 열 이름 생략 시, 테이블의 모든 열에 순서대로 데이터를 삽입합니다.
- 테이블의 모든 열에 값이 제공되어야 하며, 순서가 테이블 정의와 일치해야 합니다.
3️⃣ 여러 행 삽입
INSERT INTO Students (Name, Age, Grade)
VALUES
('Alice', 14, '9th'),
('Bob', 17, '12th');
- 여러 행을 한 번에 삽입하여 작업 효율성을 높입니다.
📌 Update
UPDATE 구문은 SQL 데이터베이스에서 테이블에 저장된 기존 데이터를 수정할 때 사용됩니다.
특정 조건에 맞는 행(Row)의 데이터를 변경하거나, 테이블의 모든 데이터를 수정할 수 있습니다.
UPDATE 테이블명
SET 열1 = 값1, 열2 = 값2, ...
WHERE 조건;
- 테이블명: 데이터를 수정할 대상 테이블의 이름.
- SET: 수정할 열과 새로운 값을 지정.
- WHERE: 수정할 대상 행을 지정하는 조건문. 생략 시 테이블의 모든 행이 수정되니 주의!
1️⃣ 특정 조건에 따라 데이터 수정
UPDATE Employees
SET Salary = 50000
WHERE EmployeeID = 101;
- EmployeeID가 101인 직원의 Salary를 50000으로 변경.
2️⃣ 모든 행 수정
UPDATE Employees
SET Department = 'General';
- WHERE 조건이 없으면 모든 행이 영향을 받으므로 신중히 사용해야 합니다.
- Employees 테이블의 모든 행에서 Department 열 값을 'General'로 변경.
3️⃣ 여러 열의 값을 동시에 수정
UPDATE Employees
SET Salary = 60000, Department = 'HR'
WHERE EmployeeID = 102;
- EmployeeID가 102인 직원의 Salary를 60000으로, Department를 'HR'로 변경.
📌Delete from
DELETE 구문은 SQL 데이터베이스에서 테이블의 특정 행(Row) 또는 모든 행을 삭제하는 데 사용됩니다.
이 명령은 데이터를 삭제하지만, 테이블의 구조(Schema)나 정의는 유지됩니다.
DELETE FROM 테이블명
WHERE 조건;
- 테이블명: 데이터를 삭제할 대상 테이블의 이름.
- WHERE 조건: 삭제할 행을 지정하는 조건문. 생략 시 테이블의 모든 행이 삭제되니 주의!
1️⃣ 특정 조건에 맞는 데이터 삭제
DELETE FROM Orders
WHERE OrderID = 102;
- OrderID가 102인 행을 Orders 테이블에서 삭제.
2️⃣ 여러 조건에 맞는 데이터 삭제
DELETE FROM Orders
WHERE OrderDate < '2024-01-01' AND Status = 'Cancelled';
- OrderDate가 2024년 1월 1일 이전이고 상태가 'Cancelled'인 모든 행을 삭제.
3️⃣ 테이블의 모든 데이터 삭제
DELETE FROM Employees;
- Employees 테이블의 모든 행을 삭제.
- WHERE 조건이 없으면 테이블의 모든 데이터가 삭제됩니다.
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."