2020. 5. 10. 23:50ㆍBACKEND/Database
안녕하세요.
지난 포스팅에서 DBMS가 무엇인지, 데이터 베이스의 개념에 대해 알아보았습니다.
이번에는 데이터베이스를 다루는 언어인 SQL문에 대해 더 깊이 알아보도록 하겠습니다❗️
오늘은 간단한 명령어를 알아보겠습니다.
***************** INDEX *****************
🗂 INDEX
🤖 DML
- INSERT -
- SELECT -
- UPDATE -
- DELETE -
[ 2장 ]
🤙🏻 CONSTRAINT
✍🏻 DDL
********************************************
🗂 첫 번째, INDEX
Index는 관계형 데이터베이스에서 검색 속도를 높이기 위한 도구입니다.
말 그대로, 데이터의 색인기능을 합니다.
책을 읽을 때 흔히 목차를 먼저 읽고 해당하는 주제에 대해 알아보곤합니다.
데이터베이스에서 사용하는 Index도 비슷한 기능을 합니다.
필요한 데이터를 바로 찾기위해 Index를 사용합니다.
Index가 필요한 이유를 더 알아볼게요.
유저데이터가 필요해서 데이터베이스에 접근합니다.
이름이 '박보검'이고, 출생년도가 1993인 사람입니다.
이름이나, 출생년도를 통해 가져와도 데이터를 얻을 수 있습니다.
하지만 문제가 생기죠. 동명이인이면 어떻게 해야할까요❓
혹은, 동명이인이면서 출생년도까지 같으면 구별할 수 없어 다른 정보까지 가져와야겠죠❓
그래서, Index는 Unique하면서 특정 데이터를 대표하는데 사용할 수 있습니다.
주로, 정수를 사용합니다. 또한, Primary키로 사용하는데 굉장히 적합하죠.
Index가 필요한 경우를 적절히 사용하면 데이터를 다루기에 어려움이 없을 것입니다.
이제, 데이터를 가져오는 명령어를 알아보도록 하겠습니다.
위의 그림은 추가적으로 만든 그림이니, 참고하면 좋을 것 같아요.
이름이 굉장히 직관적이라서 기억해내는데 어려움은 없을 것 같아요 〰️
✍🏻 두 번째, DML
지난 포스팅에서 간단히 표시해두었던 개념입니다.
DML은 Data Manipulation Language 의 약자입니다.
데이터 정의 언어를 뜻하고 있는데,
데이터를 조작하는 소프트웨어가 요청하는 데이터의 "삽입, 수정, 삭제 작업"을 지원
을 의미합니다.
정의보다는 직접 어떤 것들이 있는지 알아보는게 더 확실하겠네요.
DDL에는 INSERT, SELECT, UPDATE, DELETE 등이 있습니다.
하나씩 살펴보도록 하겠습니다!
✔️ SELECT, 데이터 조회
가장 먼저, 데이터를 조회하는 방법에 대해 알아보겠습니다.
SELECT <select_columns>
FROM <table>
[ WHERE condition ]
[ GROUP BY <column_name | expr | position> ]
[ HAVING condition ]
[ ORDER BY <column_name | expr | position> ];
<>는 변경될 이름, []는 옵션입니다.
sql 명령어를 사용할 때에는 약속이 하나 있습니다.
명령어만 모두 대문자로 사용하는 것이죠. 예를 들어 `select age` 가 아닌 `SELECT age`로 쓰면 됩니다.
예시를 들어 한 번 보도록하겠습니다.
제가 만약, 데이터베이스 중 user이라는 이름을 가진 테이블을 조회하고 싶을 때에는 어떻게 할까요?
// * 는 '전체'를 의미합니다
SELECT *
FROM user;
위와 같이 입력하게 되면, user 테이블에 있는 모든 데이터를 조회하겠다는 의미입니다.
혹은 user의 이름만을 가져오고 싶다면 어떻게 해야 할까요❓
SELECT first_name
FROM user;
// or
// 이름 전체를 가져오고 싶다면
SELECT first_name, last_name
FROM user;
위와 같이 적어주면
순서대로 위와 같은 모습을 조회합니다.
그렇다면 where 조건절은 무엇일까요❓
데이터를 필터링하여 가져오고 싶을 때는 WHERE을 사용하면 됩니다.
예를 들어, 만약 사용자들 중에 여성 혹은 남성만 가지고 오고 싶다면, where을 같이 쓰면 됩니다.
SELECT first_name
FROM user
WHERE gender = 'Female';
✔️ INSERT, 데이터 추가
이번엔, 데이터를 입력하는 방법에 대해 알아보겠습니다.
INSERT INTO <table_name> (COLUMN_LIST)
VALUES (COLUMN_LIST 순서에 맞게 VALUE_LIST);
// or
INSERT INTO <table_name>
VALUES (COLUMN 순서에 맞게 VALUE_LIST);
위와 같이 두 가지 방법으로 만들 수 있습니다.
사실, 같은 모양인데 굳이 따지면 두 가지 모양으로 볼 수 있을 것 같아서 나누어 두었습니다.
이번에도 예시를 보면서 해볼까요❓
만약, 제가 15번째 줄의 데이터를 넣고 싶다면 어떤 명령어를 시용해야 할까요❓
INSERT INTO user (id, first_name, last_name, email, gender, ip_address)
VALUES ("15", "Alameda", "Van der Spohr", "avanderspohre@nymag.com", "Female", 145.146.49.221);
위와 같이 적어주시면 됩니다.
다음 포스팅에 다루겠지만, AI(Auto Increment)를 사용하거나, Null을 허용해뒀다면 VALUES 에 포함하지 않으셔도 됩니다.
만약 id, first_name, last_name만이 새로운 데이터라면
// 제외한 column은 Null 이 가능하다고 가정합니다.
INSERT INTO user (id, first_name, last_name)
VALUES ("15", "Alameda", "Van der Spohr");
위와 같이 사용해주면 됩니다.
user 다음에는 어떤 column에 데이터를 넣는지 표시해 두었는데요,
만약 모든 column에 순차적으로 데이터를 넣는 것이라면 생략하셔도 됩니다.
예를 들어 위의 쿼리문 (sql문을 칭함)은 모든 column을 적어둔 것이기 때문에
INSERT INTO user
VALUES ("15", "Alameda", "Van der Spohr", "avanderspohre@nymag.com", "Female", 145.146.49.221);
위와 같이 사용해도 똑같은 결과가 나옵니다.
이게 바로 INSERT의 두 번째 모양이죠!
✔️ UPDATE, 데이터 수정
이번엔, 데이터를 수정하는 방법에 대해 알아보겠습니다.
UPDATE <table_name>
SET column1='value1', column2='value2', ...
WHERE condition;
위와 같이 수정합니다.
간단하죠?
이것도 예시를 한 번 들어볼까요❓
위와 같이 변경하고 싶으면 어떻게 할까요❓
일단, first_name은 Alemeda로, ip_address를 145.29.86.211로 설정해야겠다는 생각이 드시나요?
맞습니다 ~ 그럼 Alameda를 Alemeda로 변경시키려면 Alameda를 찾아야해요.
이 때, index를 사용하게 되죠. 특정 인물을 가져와 변경시켜야 하니까요❗️
UPDATE user
SET first_name = "Alemeda", ip_address = "145.29.86.211"
WHERE id = 15;
이렇게 적어주면 됩니다 ❗️
예시를 보니 조금 이해가 가시나요❓
✔️ DELETE, 데이터 삭제
이번엔 마지막으로 삭제를 해보겠습니다.
굉 - 장히 쉬워요❗️
DELETE FROM <table_name>
WHERE <condition>
select 문이랑 비슷하게 생겼죠?
삭제할 테이블을 지정하고 어떤 데이터를 삭제할지 조건을 걸어주면 됩니다.
예시를 한 번 보죠!
update문과 같이 id 값으로 참조해 삭제해주면 됩니다.
DELETE FROM usr
WHERE id = 15;
이렇게 쿼리를 입력하면 됩니다 🙌🏻
자, 이렇게 정말 단순한 sql문을 살펴보았습니다.
다음에는 조금 더 복잡한 개념들을 알아볼 예정이에요!
ps. 포스팅에서 사용한 데이터는 테스트 데이터를 제공해주는
사이트에서 참고했습니다.
'BACKEND > Database' 카테고리의 다른 글
SQL SELECT, 제대로 사용하기 - where 조건절 (0) | 2020.06.20 |
---|---|
정규화, 어렵지 않게 시작하기 (6) | 2020.06.15 |
SQL, 어렵지 않게 사용하기 - Constaint (0) | 2020.05.11 |
MongoDB, 어렵지 않게 시작하기 (0) | 2020.03.15 |
SQL, 어렵지 않게 시작하기 - 개념 (0) | 2020.03.01 |
Backend Software Engineer
𝐒𝐮𝐧 · 𝙂𝙮𝙚𝙤𝙣𝙜𝙨𝙪𝙣 𝙋𝙖𝙧𝙠