가수면

SQL 쿼리 본문

웹 개발/웹 개발

SQL 쿼리

니비앙 2024. 3. 27. 13:34

기본 쿼리

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라는 이름 부여

Comments