개발일지/TIL(Today I Learned)

2024-11-20

프린스 알리 2024. 11. 20.

내일배움캠프 Node.js 트랙 17일차

1. ZEP에서 이루어진 Node.js 입문 스터디

SQL이란?

'Structured Query Language'의 약자

데이터베이스(DB)에서 데이터를 추출하고 조작하는 데에 사용하는 데이터 처리 언어

DB에 저장된 정보를 쉽게 찾고 정리하는 데에 도움을 주는 도구

1. 데이터베이스(Database)와 테이블(Table)

  • 데이터베이스(Database) : 서로 연관된 여러 테이블을 포함하는 큰 틀
  • 테이블(Table) : 데이터가 행(row)과 열(column)로 구성되어 저장되는 곳. 각 행은 하나의 데이터 [[레코드]]를 나타내며, 각 열은 데이터의 속성을 나타낸다.

2. SQL 기본 명령어

SQL에서는 데이터베이스와 테이블을 생성하고 데이터를 조회, 삽입, 수정, 삭제 등의 작업을 수행할 수 있다.

2.1. 데이터베이스 생성

데이터베이스를 새로 생성할 때는 CREATE DATABASE 명령어를 사용

CREATE DATABASE 데이터베이스이름;

2.2. 테이블 생성

테이블을 생성할 때는 CREATE TABLE 명령어를 사용

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

예시

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

해석 : students라는 이름의 테이블을 생성합니다. 이 테이블에는 세 개의 열이 있습니다:

  • id: 정수형 데이터를 저장하는 열 (INT).
  • name: 최대 50자까지의 문자열을 저장할 수 있는 열 (VARCHAR(50)).
  • age: 정수형 데이터를 저장하는 열 (INT).

2.3. 데이터 조회(SELECT)

테이블에서 데이터를 조회할 때는 SELECT 명령어를 사용

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

예시

SELECT name
    , age 
FROM students;
SELECT 응용 문법
(1) WHERE절 : 특정 조건에 맞는 데이터만 조회
SELECT name
    , age 
FROM students 
WHERE age > 20;
(2) ORDER BY 절 : 조회한 데이터를 정렬
SELECT name 
FROM students 
ORDER BY age 
DESC;
/* students 테이블에서 name과 age를 조회하되, age를 기준으로 내림차순(Descending order)으로 정렬합니다. 즉, 나이가 많은 학생부터 순서대로 정렬됩니다.*/
(3) LIMIT 절 : 조회할 데이터의 개수를 제한
  • LIMIT {건너뛸 갯수}, {가져올 갯수}로 사용하여, 원하는 위치에서 원하는 만큼만 데이터를 가져올 수도 있다.
    SELECT name
      , age 
    FROM students 
    LIMIT 5;
    /*students 테이블에서 name과 age를 조회하되, 최대 5개의 행만 조회합니다.*/

2.4. 데이터 삽입(INSERT)

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

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

예시

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

2.5. 데이터 수정(UPDATE)

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

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

예시

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

2.6. 데이터 삭제(DELETE)

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

DELETE FROM 테이블이름 
WHERE 조건;

예시

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

2.7. 주석 달기

SELECT * 
FROM Customers; -- 이와 같이 주석을 달 수 있습니다.

3. 기본 키와 외래 키

기본 키(Primary Key) : 테이블에서 각 행을 고유하게 식별하는 열(또는 열의 조합)

  • 외래 키(Foreign Key) : 다른 테이블의 기본 키를 참조하는 열. 테이블 간의 관계를 나타낸다.

 

CREATE TABLE order (
    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;

5. SQL 조건문

  • AND : 두 조건이 모두 참일 때
  • SELECT * FROM students WHERE age > 20 AND name = 'Alice';
  • OR : 두 조건 중 아무거나 참이어도 될 때
  • SELECT * FROM students WHERE age > 20 OR name = 'Bob';
  • NOT : 조건이 거짓일 때
  • SELECT * FROM students WHERE NOT age > 20;

'개발일지 > TIL(Today I Learned)' 카테고리의 다른 글

2024-11-22  (3) 2024.11.22
2024-11-21  (0) 2024.11.21
2024-11-19  (1) 2024.11.19
2024-11-18  (2) 2024.11.18
2024-11-15  (1) 2024.11.15

댓글