[DB] SQL 정리
DataBase

[DB] SQL 정리

반응형

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점 들어가는 화살을 직감을 할까' 라는 생각이 들었다.

나도 코딩을 다하고 마무리 엔터를 누르면서 '끝'을 외쳐 에러나지 않는 순간이 올까..

반응형