본문 바로가기
스파르타 내일배움캠프/TIL(Today I learned)

25.02.13 사전캠프 TIL - SQL 기초

by pandastic 2025. 2. 13.
반응형

 

목차

     

    1. SQL 기초

    * 데이터베이스란?

       - 여러 테이블을 포함하는 큰 틀.

     

    * 테이블

       - 데이터가 행(row)과 열(column)로 구성된 구조.

       - 각 행은 하나의 데이터 레코드를 나타내며, 각 열은 데이터의 속성을 나타냄.

     - 빨간 칸이 행(row), 파란 칸이 열(column)이다.

     

     

     

    2. SQL 기본 명령어

     

    * 데이터베이스 생성

    CREATE DATABASE 데이터베이스명;

     

     

    * 테이블 생성

    CREATE TABLE 테이블이름 (
        컬럼1 데이터타입,
        컬럼2 데이터타입,
        ...
    );

     

    예시)

    CREATE TABLE students (
        id INT,
        name VARCHAR(50),
        age INT
    );

     - id : 정수형 데이터를 저장하는 열(INT).

     - name : 최대 50자까지의 문자열을 저장할 수 있는 열 (VARCHAR(50)). → 50글자까지 저장 가능함.

     - age: 정수형 데이터를 저장하는 열 (INT).

     

     

     

    * 데이터 조회(SELECT)

      - 데이터를 가져오는 기본 명령어.

      - 테이블에서 데이터 조회 시 SELECT 사용.

      - FROM 은 데이터를 가져올 테이블을 특정해주는 문법.

    SELECT 컬럼1, 컬럼2, ...
    FROM 테이블이름;

     

     

    예시)

    -- students 테이블에서 name과 age 열의 데이터를 조회합니다.
    SELECT name, age
    FROM students;
    -- Payments 테이블의 데이터 조회하기
    SELECT *
    FROM payments

     - * 는 모든 컬럼을 가져온다는 의미.

     

     

    * WHERE 절

      - 특정 조건에 맞는 데이터만 조회.

    -- students 테이블에서 age 값이 20보다 큰 학생들의 name과 age를 조회합니다.
    SELECT name, age
    FROM students
    WHERE age > 20;

     

     

    * GROUP BY절

      - 주로 집계함수(SUM(), COUNT() 등) 와 같이 쓰이며 카테고리별로 계산.

    SELECT 카테고리 컬럼명, SUM(계산할 컬럼)
    FROM 테이블명
    GROUP BY 카테코리 컬럼명
    SELECT cuisine_type,
           SUM(price) sum_of_price
    FROM food_orders
    GROUP BY cuisine_type

     

    * ORDER BY절

      - 조회한 데이터를 정렬.

    -- students 테이블에서 name과 age를 조회하되, age를 기준으로 내림차순(DESC)으로 정렬합니다.
    -- 즉, 나이가 많은 학생부터 순서대로 정렬됩니다.
    SELECT name, age
    FROM students
    ORDER BY age DESC;

    - ORDER BY ASC : 오름차순

    (ASC 생략 가능)

    - ORDER BY DESC : 내림차순

    - ORDER BY 절에 두 가지 이상의 컬럼을 이용가능. 쉼표(,)를 이용.

     

    * LIMIT절

      - 조회할 데이터의 개수를 제한.

    -- students 테이블에서 name과 age를 조회하되, 최대 5개의 행만 조회합니다.
    SELECT name, age
    FROM students
    LIMIT 5;

     

     

    * 데이터 삽입(INSERT)

       -  테이블에 새로운 데이터를 추가할 때는 INSERT INTO 명령어 사용.

    INSERT INTO 테이블이름 (컬럼1, 컬럼2, ...) VALUES (값1, 값2, ...)

     

     

    예시)

    INSERT INTO students (id, name, age) VALUES (1, 'Alice', 23);

     

     

    * 데이터 수정(UPDATE)

      - 기존 데이터를 수정할 때는 UPDATE 명령어 사용.

    UPDATE 테이블이름 SET 컬럼1 = 값1, 컬럼2 = 값2 WHERE 조건;

     

     

    예시)

    -- students 테이블에서 id가 1인 학생의 age 값을 24로 수정
    UPDATE students SET age = 24 WHERE id = 1;

     

     

    * 데이터 삭제(DELETE)

      - 테이블에서 데이터를 삭제할 때는 DELETE FROM 명령어 사용.

    DELETE FROM 테이블이름 WHERE 조건;

     

    예시)

    -- students 테이블에서 id가 1인 행을 삭제
    DELETE FROM students WHERE id = 1

     

     

    3. 기본키와 외래키

     

    * 기본 키(Primary Key)

       - 테이블에서 각 행을 고유하게 식별하는 열(또는 열의 조합)임.

     

     

    * 외래 키(Foreign Key)

       - 다른 테이블의 기본 키를 참조하는 열로, 테이블 간의 관계를 나타냄.

     

     

    예시)

    CREATE TABLE orders (
        order_id INT PRIMARY KEY,
        student_id INT,
        FOREIGN KEY (student_id) REFERENCES students(id)
    );

     - orders 라는 테이블 생성.

     - order_id: 정수형 데이터를 저장하는 열로, 이 열이 기본 키(PRIMARY KEY)니다. 즉, orders 테이블의 각 행을 고유하게 식별합니다.

     - student_id: 정수형 데이터를 저장하는 열로, students 테이블의 id를 참조하는 외래 키(FOREIGN KEY)입니다. 이를 통해 orders 테이블의 각 주문이 어떤 학생과 관련이 있는지를 나타낼 수 있습니다.

     

     

     

    4. 집계 함수(Aggregate Functions)

     

    * COUNT()

      - 행의 개수를 셈.

    SELECT COUNT(*) FROM students;

     

    * SUM()

       - 숫자 값의 합 계산.

    SELECT SUM(age) FROM students;

     

    * AVG()

      - 숫자 값의 평균 계산.

    SELECT AVG(age) FROM students;

     

    * MAX()

      - 최댓값을 찾음.

    SELECT MAX(age) FROM students;

     

    * MIN()

       - 최솟값을 찾음.

    SELECT MIN(age) FROM students;

     

     

     

    반응형