본문 바로가기
데이터 엔지니어링

DB (SQL 쿼리, postman api 연동하기)

by eun5098 2025. 5. 17.
728x90

DB 제어 기본 명령어

CREATE TABLE users (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(100),
  email VARCHAR(100) UNIQUE,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
  • CREATE TABLE: 새로운 테이블을 생성하는 명령입니다.
  • id INT PRIMARY KEY AUTO_INCREMENT:
    • id는 정수형(INT)이며, 기본 키입니다(PRIMARY KEY).
    • AUTO_INCREMENT는 새 레코드가 추가될 때마다 자동으로 1씩 증가하는 숫자를 부여합니다.
  • name VARCHAR(100): 최대 100자의 이름을 저장할 수 있는 문자열 칼럼입니다.
  • email VARCHAR(100) UNIQUE: 이메일 주소를 저장합니다.
  • UNIQUE 제약 조건을 사용하여 중복된 이메일은 저장 불가하도록 설정합니다.
  • created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP:
    • 사용자가 등록될 때의 시각(TIMESTAMP)을 저장하며, 기본값은 현재 시간입니다.

분산환경에서는 고유키를 가지고 있다고 고유해지는 게 아님.

id값이 숫자이기 때문

 

INSERT INTO users (name, email)
VALUES
  ('Alice', 'alice@example.com'),
  ('Bob', 'bob@example.com');
  • INSERT INTO: 테이블에 새로운 데이터를 삽입하는 SQL 명령어입니다.
  • (name, email): 어떤 컬럼에 데이터를 넣을 것인지 명시합니다.
  • VALUES (...): 실제로 삽입될 값을 지정합니다.
  • 각각의 괄호는 한 개의 사용자 데이터입니다.
  • id는 AUTO_INCREMENT, created_at은 DEFAULT CURRENT_TIMESTAMP이므로 자동 처리됩니다.

-- 전체 조회
SELECT * FROM users;
  • SELECT: 데이터를 조회할 때 사용합니다.
  • : 모든 컬럼을 의미합니다. (id, name, email, created_at)
  • 결과는 전체 사용자 데이터를 모두 보여줍니다.

-- 조건부 조회
SELECT * FROM users WHERE name = 'Alice';
  • WHERE: 조건절로 특정 조건을 만족하는 행만 조회합니다.
  • 위 쿼리는 이름이 'Alice'인 사용자만 가져옵니다.

-- 특정 컬럼만
SELECT name, email FROM users;
  • 대신 특정 컬럼만 명시하여 필요한 데이터만 가져옵니다.
  • 이 경우, name과 email 정보만 보여주며, id와 created_at은 제외됩니다.

UPDATE users
SET email = 'alice@newdomain.com'
WHERE name = 'Alice';
  • UPDATE: 테이블 내 데이터를 수정할 때 사용합니다.
  • SET: 어떤 값을 바꿀 것인지 지정합니다.
  • WHERE: 어떤 조건에 해당하는 데이터만 수정할지 지정합니다.
  • 이 쿼리는 이름이 'Alice'인 사용자의 이메일을 변경합니다.
  • WHERE 절이 빠지면 모든 사용자의 이메일이 바뀝니다.

대문자 소문자 상관 없을 무

-- 최근 가입자 1명만
SELECT * FROM users ORDER BY created_at DESC LIMIT 1;

대문자 소문자 상관 없을 무

  • ORDER BY created_at DESC: 가입 시간 기준으로 최신 순 정렬합니다. (DESC: 내림차순)
  • LIMIT 1: 상위 1개만 가져옵니다.
  • 결과는 가장 최근에 가입한 사용자 1명입니다.

SELECT COUNT(*) AS user_count FROM users;
  • COUNT(*): 행의 개수를 셉니다.
  • AS user_count: 결과 컬럼 이름을 user_count로 지정합니다.
  • 결과는 사용자 수를 숫자로 반환합니다.

CREATE TABLE orders (
  id INT PRIMARY KEY AUTO_INCREMENT,
  user_id INT,
  item_name VARCHAR(100),
  FOREIGN KEY (user_id) REFERENCES users(id)
);
  • orders: 사용자의 구매 정보를 저장하는 테이블입니다.
  • user_id: users 테이블의 id를 참조합니다.
  • FOREIGN KEY (user_id) REFERENCES users(id):
    • user_id는 users.id와 연결되어 있어야 합니다.
    • 즉, 존재하지 않는 사용자에게 주문을 넣을 수 없습니다.
    • 이것을 **참조 무결성 제약조건(Foreign Key Constraint)**이라고 부릅니다.

insert into orders (user_id, item_name)
values (
	(select id from users where email = 'alice@newdomain.com'),
	'electronic keyboard'
);

 

-- 조인 조회
SELECT users.name, orders.item_name
FROM users
JOIN orders ON users.id = orders.user_id;
  • JOIN: 두 테이블을 연결할 때 사용합니다.
  • users.id = orders.user_id: 연결 조건. 사용자 ID와 주문 내 사용자 ID가 일치하는 경우를 의미합니다.
  • 결과는 각 주문에 대해 주문한 사람의 이름과 **상품명(item_name)**을 보여줍니다.

 

 

 

 

 

postman API 테스트 구성하기

 

Send를 누르면 FastAPI의 marketing 도메인의 Controller가 요청을 수신하여 DB에 가상 마켓팅 정보 배치

 

이후 정상적으로 가상 마켓팅 정보가 배치되었는지 DB에서 아래 명령으로 확인 가능