SQL이란 무엇인가?

이지연·2020년 8월 6일
0

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

  • CRUD가 존재, Create,Read,Update,Delete

1. SELECT

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

위의 구문은 users테이블에서 id,name,age,gender를 찾겠다는 것을 쓴것

  • where 구문을 사용해서 검색도 가능하다.
SELECT id,name,age,gender
FROM users
WHERE name = "아이유"

위의 구문과 비슷한데 users테이블에서 id,name,age,gender를 찾을 건데 name은 꼭 아이유여야만한다.

INSERT

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

users테이블에서 id,name,age,gender속성에 값을 (1,"아이유",27,"여자"), (2,"제인",19,"여자") 이와 같이 생성하라는 구문이다.

UPDATE

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

users테이블에 where을 이용해 name이 "아이유"인 사람만 age값을 25라 바꾸라는 말

DELETE

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

users테이블에 where을 이용해 gender가 "남자"를 삭제하라는 말

Exist

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

users테이블에서 서브쿼리로 "users테이블에 user_name이 '아이유'인 정보를 다 불러와라"에서 온 구문에서 그 중에서 1이 존재한다면 갖고오라는 구문

해당 레코드에 대해서 EXISTS 이하의 서브쿼리를 실행하고 서브쿼리에 대한 결과가 '존재하는지'를 확인합니다.

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

Join

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

문법

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

아래는 실제코드를 넣은 것이다.

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

users테이블에서 accounts테이블에 컬럼으로 있는 accounts.id와 users.account_id join을 이용해 같으면 그 같은 값만 users.id, users.name, users.age, users.gender, accounts.account_type를 select해라라는 구문이다.

일반적으로 제일 많이 쓰이는 join구문으로,inner join입니다.

그외에 여러 유형들이 있습니다.

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


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

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


















profile
Everyday STEP BY STEP

0개의 댓글