생활코딩 DATABASE 기초

HJJEONG·2023년 1월 15일
0

자기개발

목록 보기
1/7
post-thumbnail

CRUD

  • CREATE
  • READ
  • UPDATE
  • DELETE

아래 순서는 이미 MySQL이 컴퓨터에 다운로드 된 것을 전제하에 실시할 수 있다.
(이때, 볼드체로 표시된 부분은 작성자가 코드에서 수정 가능한 부분을 나타냄)

TERMINAL

  1. cd /usr/local/mysql/bin
  2. ./mysql -uroot -p
  3. password 입력(이때 MySQL 설치시 설정한 비번을 까먹지 않도록 주의)

MySQL 접속

  1. SHOW DATABASE 를 작성하여 스키마 목록 확인
  2. CREATE DATABASE opentutorials;
    쉼표 안에 들어간 것은 스키마(schema)로 설정한 이름으로 변경 가능
  3. 만약 opentutorials라는 이름의 스키마(schema)가 이미 생성되어 있을 경우, DROP DATABASE opentutorials; 를 통해 제거 후 다시 생성 가능
  4. USE opentutorials; 를 작성하여 해당 스키마(schema)에서 테이블을 생성하도록 한다.

테이블 생성

CREATE TABLE topic( --topic이라는 이름의 테이블 생성(id,title...순으로 표 작성)
-> id INT(11) NOT NULL AUTO_INCREMENT, --id의 숫자 자동 할당, 최대 11
-> title VARCHAR(100) NOT NULL, --최대 100글자
-> description TEXT NULL, --최대 250글자
-> created DATETIME NOT NULL, --현재시간 기준
-> author VARCHAR(30) NULL, --최대 30글자
-> profile VARCHAR(100) NULL, --최대 100글자
-> PRIMARY KEY(id)); --id가 식별자 역할

DESC topic;을 작성하여 위에서 생성한 테이블이 어떤 형태를 취할 수 있는지 볼 수 있음.


INSERT

INSERT INTO topic(title,description,created,author,profile) VALUES('MySQL','MySQL is...',NOW(),'egoing','developer');
INSERT INTO topic(title,description,created,author,profile) VALUES('ORACLE','ORACLE is...',NOW(),'egoing','developer');
INSERT INTO topic(title,description,created,author,profile) VALUES('SQL Server','SQL Server is...',NOW(),'duru','data administrator');
INSERT INTO topic(title,description,created,author,profile) VALUES('PostgreSQL','PostgreSQL is...',NOW(),'taeho','data scientist,developer');
INSERT INTO topic(title,description,created,author,profile) VALUES('MongoDB','MongoDB is...',NOW(),'egoing','developer');

테이블 생성 시에 AUTO_INCREMENT를 사용해 id는 자동생성 하였기 때문에 제외한다.
title, description, created, author, profile을 VALUES를 이용해 순서에 맞게 작성하도록 한다. 이때, VALUES도 순서에 맞춰 작성해야한다. NOW() 는 DATETIME에서 현재 시간을 테이블에 넣기 위해 사용하는 함수이다.

idtitledescriptioncreatedauthorprofile
1MySQLMySQL is ...'현재 시간'egoingdeveloper
2ORACLEORACLE is ...""egoingdeveloper
3SQL ServerSQL Server is ...""durudata administrator
4PostgreSQLPostgreSQL is ...""taehodata scientist, developer
5MongoDBMongoDB is ...""egoingdeveloper

SELECT

먼저 INSERT 구문을 작성하여 생성한 테이블을 아래의 코드를 통해 확인해본다.

SELECT * FROM topic; --topic이라는 테이블의 각 열마다 정해진 형태를 볼 수 있음
  • topic 테이블의 id, title, created, author의 열(column)만 테이블에 표시되어 보여지도록 작성해본다.
SELECT id, title, created, author FROM topic;
  • 위의 코드에서 WHERE author = 'egoing'이 추가된 것으로 id, title, created, author의 열(column)만 보이는 topic 테이블에서 authoregoing인 행(row)만 보여진다.
SELECT id, title, created, author FROM topic WHERE author = 'egoing';
  • ORDER BY id DESC가 추가된 코드로, 위에서 보여지는 테이블에서 id가 큰 순으로 정렬되어 보여진다.
SELECT id, title, created, author FROM topic WHERE author = 'egoing' ORDER BY id DESC;
  • LIMIT 2라는 것은 2개의 행(row)만 보여준다는 것이다.
SELECT id, title, created, author FROM topic WHERE author = 'egoing' ORDER BY id DESC LIMIT 2;

UPDATE

  • 잘못 작성한 곳이 있거나 수정하고 싶을 때 해당 코드를 작성하면 된다.
    이때, WHERE id = 2는 id가 2인 부분을 지정한 것이다. 만약, 해당 부분이 없을시 모든 행(row)이 Oracle과 Oracle is...로 바뀐다.
UPDATE topic SET description = 'Oracle is...', title='Oracle' WHERE id = 2; 

DELETE

  • 해당 행(row)를 지우고 싶을 때 사용한다.
    만약 추가 하고 싶으면 다시 INSERT문을 이용해 추가하면 된다.
DELETE FROM topic WHERE id = 5; --여기서는 5번째 행을 삭제한다.

테이블 이름 변경

  • topic이라는 table을 topic_backup의 이름의 테이블로 변경
RENAME TABLE topic TO topic_backup; --이름은 자유롭게 설정 가능

현재 스키마에 생성된 테이블 보기

Use opentutorials; --opentutorials라는 사용자 선택
SHOW TABLES; --해당 사용자의 테이블 목록 확인

JOIN

예를 들어 topic 테이블의 겹치는 author가 많으면 author라는 테이블을 생성하여, 해당 author들의 이름이나, profile를 편리하게 수정이 가능해진다.

SELECT * FROM topic LEFT JOIN author ON topic.author_id = author.id;

topic.id = topic 테이블의 id이고, topic 테이블의 author_id와 author 테이블의 id가 동일하도록 한다.
아래와 같은 코드 작성시 두개의 테이블이 한 번에 보일 수 있다.
이때, 보이는 테이블의 열은 id, title, description, created, author_id, id, name, profile일 것이다.

SELECT topic.id,title,description,created,name,profile FROM topic LEFT JOIN author ON topic.author_id = author.id;

기존에 id 열이 두개 보이던 것을 topic_id로 변경되어 보이도록 하였다.

SELECT topic.id AS topic_id, itle,description,created,name,profile FROM topic LEFT JOIN author ON topic.author_id = author.id;

join에 대한 자세한 것은 아래의 코스에서 더 공부해보도록 하자.
https://opentutorials.org/course/3884


출처

https://opentutorials.org/course/3161

profile
틈틈이 쓰는 개발일지

0개의 댓글