✔️ SQL기초

yeeun lee·2020년 4월 9일
1

Postgresql을 독학할 때 잠깐 배우긴 했지만, 데이터베이스 관련 지식이나 언어는 또 다른 어려움인 것 같다 🥺 우선 기본 개념과 명령어를 정리해보자!

SQL

Structured Query Language. MySQL같은 관계형 데이터베이스에서 데이터를 읽거나 생성 및 수정하기 위해 사용하는 언어다.

1. CRUD

CRUD는 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능을 묶어서 일컫는 말이다. 사용자 인터페이스가 갖추어야 할 기능(정보의 참조/검색/갱신)을 가리키는 용어로서도 사용된다.

이름조작SQL
Create생성INSERT
Read읽기SELECT
Update갱신UPDATE
Delete삭제DELETE

2. Command

select

데이터를 읽어들일 때 사용한다. where 구문을 사용해 검색도 가능하다.

SELECT 
    id,
    name,
    age,
    gender
FROM users
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 문. 예를 들어, 특정 user_name이 이미 존재하는지 확인 하고 싶을 때 쓴다.

SELECT 1
FROM users
WHERE EXISTS (SELECT * 
              FROM users
              WHERE user_name = '아이유');

NOT EXIST 를 사용하여 반대의 경우도 체크 할 수 있다.

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`)
);

3. join

Foreign key(외부키)로 걸려있는 2개의 table들을 join(연결)해서 양쪽 table에서 모두 row를 읽어 들이고 싶을 때는 join 문을 사용해야 한다. 즉, join은 교집합 이라고 생각하면 된다.

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 유형

w3school [이미지 및 설명](https://www.w3schools.com/sql/sql_join.asp\)을 가져왔다.

  • (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이 걸리는 테이블(right table)의 모든 row와 기준이 되는 테이블 (left table)에서 right table과 matching되는 row만 select가 됨.

  • FULL (OUTER) JOIN: 기준이 되는 테이블 (left table)과 join이 걸리는 테이블(right table) 양쪽 모두의 모든 row를 select 한다.

profile
이사간 블로그: yenilee.github.io

0개의 댓글