[Database] SQL 기초

황인용·2020년 1월 23일
0

Database

목록 보기
2/16
post-thumbnail

SQL(Structured Query Language)

  • MySQL 같은 관계형 데이터베이스에서 데이터를 읽거나 생성 및 수정하기 위해 사용하는 언어
  • CRUD
    • create
    • Read
    • Update
    • Delete

SELECT

  • 데이터를 읽어 들일때 사용
SELECT 
    id,
    name,
    age,
    gender
FROM users

WHERE

  • WHERE구문을 사용하여 검색
SELECT 
    id,
    name,
    age,
    gender
FROM users
WHERE name = "아이유"

INSERT

  • 데이터를 생성할 때 사용
INSERT INTO users (
    id,
    name,
    age,
    gender
) VALUES (
    1,
    "아이유",
    27,
    "여자"
), (
    2,
    "제인",
    19,
    "여자"
)

UPDATE

  • 데이터를 수정할 때 사용
UPDATE users SET age = 25 WHERE name = "아이유"

DELETE

  • 데이터를 삭제할 때 사용
DELETE FROM users WHERE gender = "남자"

Exist

  • 어떠한 조건이 존재 하는지 확인 할 때 사용하는 SQL문
    (ex. 특정 user_name 이 이미 존재하는지 확인 하고 싶을 때)
SELECT 1
FROM users
WHERE EXISTS (SELECT * 
              FROM users
              WHERE user_name = '아이유');

NOT Exist

  • 반대로 어떠한 조건이 존재 하지 않은지 확인 할 때 사용하는 SQL문
SELECT lname, fname
FROM customer
WHERE NOT EXISTS (SELECT * 
                  FROM orders 
                  WHERE customers.customer_id = orders.c_id);

CREATE TABLE

  • 테이블을 생성할 때 사용
CREATE TABLE accounts(
   id INT NOT NULL AUTO_INCREMENT,
   account_type VARCHAR(100) NOT NULL,
   PRIMARY KEY (id)
);

CREATE TABLE users(
   id INT NOT NULL AUTO_INCREMENT,
   name VARCHAR(255) NOT NULL,
   email VARCHAR(255) NOT NULL,
   hashed_password VARCHAR(255) NOT NULL,
   account_id INT NOT NULL,
   PRIMARY KEY (id),
   UNIQUE KEY email (email),
   CONSTRAINT `users_account_fkey` FOREIGN KEY (`account_id`) REFERENCES `accounts` (`id`)
);

Join

  • Foreign key(외부키)로 걸려있는 2개의 table들을 join(연결)해서 양쪽 table에서 모두 row를 읽어 들이고 싶을 때 join구문을 사용함
  • 즉, 두 table의 교집합

Join 기본 문법

SELECT
  테이블별칭.조회할칼럼,
  테이블별칭.조회할칼럼
FROM 기준테이블 별칭
INNER JOIN 조인테이블 별칭 ON 기준테이블별칭.기준키 = 조인테이블별칭.기준키

Join 실제 예시

SELECT 
    users.id,
    users.name,
    users.age,
    users.gender,
    accounts.account_type
FROM users
JOIN accounts ON accounts.id = users.account_id

Join의 여러 유형들

(Inner) Join

  • 일반적인 join문.
  • 기준이 되는 테이블(left table)과 join이 걸리는 테이블(right table) 양쪽 모두에 matching되는 row만 select 됨.

Left (Outer) Join

  • 기준이 되는 테이블(left table)의 모든 row와 join이 걸리는 테이블(right table)중 left table과 matching되는 row만 select 됨.

Right (Outer) Join

  • Join이 걸리는 table(right table)의 모든 row와 기준이 되는 테이블(left table)에서 right table과 matching되는 row만 select 됨.

FULL (Outer) Join

  • 기준이 되는 테이블(left table)과 Join이 걸리는 테이블(right table) 양쪽 모두의 모든 row를 select 함.

profile
dev_pang의 pang.log

0개의 댓글