가수면
SQL 쿼리 본문
기본 쿼리
SELECT
데이터를 조회할 때 사용
기본 형태 - SELECT column1, column2 FROM table_name;
SELECT name, age FROM users; //users 테이블에서 name과 age 컬럼을 조회
INSERT
새로운 데이터를 삽입할 때 사용
기본 형태 - INSERT INTO table_name (column1, column2) VALUES (value1, value2);
INSERT INTO users (name, age) VALUES ('John Doe', 30); //users 테이블에 새로운 사용자를 추가
UPDATE
기존 데이터를 수정할 때 사용
기본 형태 - UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;
UPDATE users SET age = 31 WHERE name = 'John Doe'; //users 테이블에서 name이 'John Doe'인 사용자의 age를 31로 업데이트
UPDATE post SET view = 0; // post 테이블의 모든 view를 0으로 수정
DELETE
데이터를 삭제할 때 사용
기본 형태 - DELETE FROM table_name WHERE condition;
DELETE FROM users; //users 테이블의 모든 행 삭제
DELETE FROM users WHERE name = 'John Doe'; //users 테이블에서 name이 'John Doe'인 사용자를 삭제
CASE
~~~
기본 형태 - CASE; WHEN 대상 IN 조건 THEN 결과1 ELSE 결과 END; // IN절 생략 가능
CASE
WHEN ik.kwd_nm IN
<foreach item="swd" index="index" collection="stopwords" open="(" separator="," close=")">
#{swd}
</foreach>
THEN true
ELSE false
END AS isSwd
CTE(Common Table Expression)
쿼리 실행 시 임시로 생성되는 임시 테이블
CTE 정의 예제)
WITH cte_name AS (
SELECT column1, column2
FROM table_name
WHERE condition
)
SELECT *
FROM cte_name;
- WITH - CTE를 정의하기 위한 시작점
- cte_name - CTE의 이름. 메인 쿼리에서 마치 테이블 이름처럼 사용할 수 있음
- AS - 서브쿼리의 결과를 참조하도록 하는 역할
- 서브쿼리 - CTE에 포함될 데이터를 정의
- SELECT * FROM cte_name - 정의된 CTE를 참조하여 데이터를 조회
GROUP_CONCAT
특정 그룹 내에서 여러 행의 값을 하나의 문자열로 결합하는 쿼리
GROUP_CONCAT과 AS 정리 예제)
SELECT
GROUP_CONCAT(column_name ORDER BY column_name SEPARATOR ',') AS concatenated_column
FROM
table_name
GROUP BY
another_column;
- GROUP_CONCAT - 특정 그룹 내에서 여러 행의 값을 하나의 문자열로 결합하는 쿼리
- column_name - 결합할 컬럼의 이름
- ORDER BY column_name - 결합된 값을 정렬하기 위한 기준 지정
- SEPARATOR ',' - 결합된 값 사이에 삽입할 구분자를 지정
- AS - 특정 컬럼이나 결과에 별칭(alias)을 부여하는 역할
- concatenated_column - GROUP_CONCAT 함수의 결과에 부여된 별칭(GROUP_CONCAT의 결과로 생성할 컬럼 이름)
- GROUP BY: 컬럼의 중복되는 값들을 데이터를 그룹화
- another_column: 그룹화할 기준이 되는 컬럼
- GROUP BY에 두 개의 컬럼을 지정하면 두 컬럼의 값이 모두 동일한 행들만 하나의 그룹으로 묶임
- GROUP BY로 '학급' 컬럼을 적용한 예시)
LEFT JOIN
SELECT
students.student_id,
students.student_name,
enrollments.course
FROM
students
LEFT JOIN
enrollments
ON
students.student_id = enrollments.student_id;
- LEFT JOIN - enrollments 테이블을 왼쪽 테이블에 조인
- ON - students 테이블의 student_id 컬럼과 enrollments 테이블의 student_id 컬럼이 일치하는 행들을 조인 (조인 조건 설정)
그 외
SELECT AS
- AS - 컬럼 이름 지정
SELECT GROUP_CONCAT(irk.kwd_nm SEPARATOR ',') AS kwd_nm_concat
GROUP_CONCAT한 결과인 컬럼에 kwd_nm_concat라는 이름 부여
'웹 개발 > 웹 개발' 카테고리의 다른 글
Vercel의 배포 방식과 느릴 수밖에 없는 이유 (1) | 2024.04.12 |
---|---|
조회수 어뷰징 방지 방법들 (0) | 2024.04.11 |
쿠키 보안 설정하기 (withCredentials, httpOnly 등) (0) | 2024.02.28 |
EC2로 Docker를 이용해 배포하기 (feat. Mysql) (0) | 2024.01.12 |
IntelliJ 단축키 정리 (1) | 2024.01.09 |
Comments