https://www.w3schools.com/sql/default.asp
w3schoos 사이트로 기본적인 내용이 전부 있습니다.
DATABASE
명령어 | 설명 |
CREATE DATABASE database_name |
데이터베이스 database_name를 생성 |
DROP DATABASE database_name |
데이터베이스 database_name를 삭제 |
USE database_name |
데이터베이스 database_name를 선택 |
TABLE
명령어 | 설명 |
CREATE TABLE table_name |
해당 테이블 table_name을 생성 |
SHOW TABLES |
선택한 데이터 베이스중 모든 테이블을 목록화 하여 보여줌 |
DESCRIBE table_name DESC table_name |
해당 테이블을 보여줌 DESC 줄여서 사용 가능 |
DROP TABLE table_name |
해당 테이블 table_name을 삭제 |
ALTER TABLE table_name ADD column_name datatype |
테이블에 column_name 열을 추가합니다. 데이터 타입은 varchar(255)와 같이 포함시켜줘야 합니다. |
COLUMN
명령어 | 설명 |
SELECT column1, column2, ... FROM table_name |
테이블(table_name)에 있는 column1, column2를 보여줌 |
INSERT INTO table_name (column1, column2) VALUES (value1, value2) |
값을 넣고자 하는 테이블에서 각각 column 안에 value 값을 대입 |
SELECT * FROM table_name WHERE name = 'ji sung Park' |
table_name의 모든(*) column을 선택 선택된 column의 name에서 'ji sung Park' 만 보여줌 |
SELECT * FROM table_name WHERE NOT name = 'ji sung Park' (WHERE에선 OR, AND도 같이 사용 가능) |
table_name의 모든(*) column을 선택 선택된 column의 name에서 'ji sung Park' 만 제외 함 (일반적인 OR, AND 개념과 동일) |
SELECT column1, column2 FROM table1 LEFT JOIN table2 ON table1.column_name = table2.column_name; WHERE column1 IS NOT NULL |
table1을 기준으로 table2를 합쳐 하나의 table처럼 보이게 하고 table중 column1, column2를 보여주게 합니다 ON 부분은 각 table을 합쳐줄 때 값이 같은 것 끼리(자료가 섞이지 않게) 공통점을 합쳐줍니다. (FOREIGN KEY 제약 조건은 테이블 간의 링크를 파괴 할 행동을 방지하기 위해 사용) WHERE column1에 비어있지 않는 값 |
SELECT column1, column2, column3 FROM table1 LEFT JOIN table2 ON table1.column_name = table2.column_name; LEFT JOIN table3 ON table2.column_name = table3.column_name; |
3개 이상의 테이블을 합칠 때 LEFT JOIN ON 을 반복해서 쓴다 |
UPDATE table SET column1 = value1, column2 = value2, ... WHERE condition; |
UPDATE SET은 해당 값을 변경할 때 사용됩니다. table 중에 선택한 column 안에 value을 넣습니다. WHERE절은 업데이트해야 하는 레코드를 지정합니다. 생략하면 테이블의 모든 레코드가 업데이트됩니다! |
SELECT column1, column2 AS column3 FROM user LEFT JOIN role ON user.roleId = role.id |
column2 AS column3 의 부분은 column2 을 column3 으로 이름을 변경시켜 나타나게 해준다. (컬럼명 변경) |
SELECT column1.name AS name, COUNT(column2.title) AS ContentCount FROM column1 LEFT JOIN column2 ON column1.id = column2.userId GROUP BY column |
GROUP BY문은 종종 집계 함수와 함께사용됩니다 (COUNT(),MAX(),MIN(),SUM(),AVG() 다수의 값을 나타내는 함수) GROUP BY뒤 column을 기준으로 나타내어 줍니다. |
Wildcards, Function 정리 추가
DELETE, TRUNCATE, DROP 차이점
DROP은 뭉텅이를 삭제하는 즉 데이터베이스나, 테이블을 전부 오브젝트를 삭제하는 개념입니다.
DELETE는 해당 테이블의 값만 삭제하는 것이고
TRUNCATE는 저장공간과 함께 데이터를 삭제합니다. Column의 존재여부만 남습니다.
그 외 햇갈리는 개념 정리
RIGHT JOIN ON 도 존재하는데
LEFT랑 다른 것은 FROM뒤에 값이 기준이 아니라 RIGHT JOIN 다음으로 나온 테이블을 기준으로 한다는 것이다.
테이블 자체가 좌 우 라는 개념이 없다고 생각이 들어서 둘중 하나를 고정시켜 사용하는게 좋다고 생각이든다.
now()
column에 값을 대입한다면 현재시각이 나타나게 된다.
?
데이터베이스의 값을 보내주고 받을 때 항상 일정하지 않기 때문에 ?를 써서 어느값이 들어와도 받아줄 수 있게 변수 같은 개념이다.
table, column 관계
table은 아래의 표 전체를 지칭하는 것이고
column은 name, ContentCount를 지칭하는 이야기 이다.
table은 table 이름 자체를 사용하면 되는데
column은 table.column 으로 사용해야한다.
오늘 도쿄 올림픽 양궁 결승전에서 오진혁 선수가 마지막 화살 9점 이상 쏘면 금메달인데, 쏘고 과녁에 도달하기전에 '끝'이라고 나지막히 말했다. '얼마나 활을 쏘는 연습을 하였으면 과녁에 채 박히기 전, 10점 들어가는 화살을 직감을 할까' 라는 생각이 들었다.
나도 코딩을 다하고 마무리 엔터를 누르면서 '끝'을 외쳐 에러나지 않는 순간이 올까..
'DataBase' 카테고리의 다른 글
[DB] NoSQL MongoDB Basic (0) | 2021.07.31 |
---|---|
[ORM] Sequelize 사용과제 (Node.js ORM) (0) | 2021.07.29 |
[DB] ORM, MVC에 대해서 (0) | 2021.07.29 |
[DB] 설계 (Schema & Query Design) / SQL 함수, 실행순서 (0) | 2021.07.23 |
[DB] DB / SQL, NoSQL 차이 / SQL 설치 및 명령어 (0) | 2021.07.22 |