to start with..
오늘은 mysql을 사용해서 데이터베이스를 생성하고, 그 안에 데이터들을 집어넣고 그 데이터들을 조회하고 조작하는 방법에 대해 배웠다. 난 예시없이 이해하기 힘든 인간이기때문에 오늘 진행했던 예시들을 보면서 TIL을 작성하고자한다.
DDL (Data Define Language)
- Data Define Lauguage의 약자로써 데이터베이스의 형태를 정의할수 있는 쿼리문
- create , Alter, Drop이 대표적인 쿼리문이다
- 데이터를 구성하는 논리적인 구조를 추가하고 수정하고 삭제할수있다.
CREATE DATABASE
CREATE DATABASE 데이터베이스 이름; //Database 를 생성하는 명령어
SHOW DATABASES; //현재 MySQL 에 저장되어있는 데이터베이스를 보는 명령어
- CREATE DATABASE 를 이용해서 justgram_practice라는 database를 만들었다
- SHOW DATABASES라는 명령어를 사용해서 justgram_practice가 있는것을 확인!
CREATE TABLE
CREATE TABLE users
(
id int NOT NULL AUTO_INCREMENT,
email VARCHAR(100) UNIQUE NOT NULL,
nickname VARCHAR(50),
password VARCHAR(300) NOT NULL,
profile_image VARCHAR(3000),
created_at DATETIME DEFAULT now(),
updated_at DATETIME DEFAULT now()
PRIMARY KEY(id),
);
- id 칼럼은 숫자여야하고 자동증가해야하기 때문에 INT와 AUTO_INCREMENT를 설정
- email, id, password값은 무조건 값이 들어와야하기때문에 NOT NULL을 설정해주었다.
- nickname이나 profile_image같은경우 값이 비어있어도 되기때문에 NOT NULL을 설정해주지 않았음(NULL)
- email같은경우 보통 로그인할때 아이디값이기때문에 UNIQUE도 설정해주었다.
- 이 테이블의 PRIMARYKEY는 id로 설정해주었다.
- DESC 테이블이름;를 이용해서 테이블의 정보를 조회가능하다!
이어서 포스팅 테이블도 만들어보았다.
CREATE TABLE postings
(
id INT NOT NULL AUTO_INCREMENT,
user_id INT NOT NULL,
contents VARCHAR(2000),
created_at TIMESTAMP DEFAULT now(),
PRIMARY KEY(id),
FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE CASCADE
);
- 짚고넘어가야할부분은 FOREIGN KEY를 설정해준 부분인데, 이게 모델링할때 연결해주었던 부분과 같은 역할을한다. 하나의 유저가 여러개의 posting을 올릴수있기때문에 1:N 관계라고 볼수있겠다.
-FOREINGN KEY를 설정해줄때는 외래키를 걸어줄 칼럼과 참조할 칼럼을 순서대로 적어준다.
- 저렇게 테이블을 만들고 user_id 의 Key에는 MUL이라는게 들어가있는것을 볼수있는데, 이건 여러행이 동일한 값을 가질수있음을 의미한다.(1대N 관계!)
DML (Data Manipulation Language)
- 데이터를 조작하는 쿼리문들을 의미한다.
- INSERT,UPDATE,DELETE문등이 있다.
- 예시를 보면서 고고!
INSERT
INSERT INTO users(id, email, nickname, password, profile_image)
VALUES
(1, 'codeKim@justcode.co.kr', 'codeKim', 'c0DeK!m', 'http://profile_image_1.jpeg'),
(2, 'codeLee@justcode.co.kr', 'codeLee', 'C0dEL22', 'http://profile_image_2.jpeg'),
(3, 'codePark@justcode.co.kr', 'codePark', 'P@rkCOdE!', 'http://profile_image_3.jpeg'),
(4, 'codeChoi@justcode.co.kr', 'codeChoi', 'ChoiCodDE', 'http://profile_image_4.jpeg');
- INSERT INTO 테이블이름(칼럼값) VALUES (실제로 넣을값)
- 위의 문법에서 칼럼값과 실제로넣을값의 순서를 맞춰주는것이 중요하다
- id, email 순서대로 했다면 VALUES 뒤에 오는 실제로 넣을값도 1, 'codeKIM@naver.com'등으로 순서대로!
- SELECT * FROM 테이블이름; 으로 데이터가 잘들어갔는지 조회할수있다.
- 만약 특정 칼럼만 조회하고싶다면, SELECT email, nickname FROM users; 와 같이 사용할수있다.
UPDATE
UPDATE 테이블이름 SET 칼럼 ='새롭게업데이트할데이터' WHERE 조건;
UPDATE users SET nickname='codeShin' WHERE id = 2;
- UPDATE 쿼리문은 데이터를 수정할때 사용한다
- 바꾸고자 하는 칼럼값에 새롭게 업데이트 할 데이터를 대입한다.
- WHERE 문은 프로그래밍 언어의 if 문이라고 생각하면 됩니다. 조건을 주는 쿼리문
- 이 예제에서는 id=2 즉, users 테이블의 id가 2번인 데이터의 nickname 이라는 칼럼의 값을 'codeShin'으로 바꾸겠다는말이다.
DELETE FROM
DELETE FROM 테이블이름 WHERE 조건;
DELETE FROM users WHERE name ='codeShin';
- 업데이트하자마자 지우고싶어진 변덕쟁이다
- 딱히 다를건없다. 지우고싶은 데이터가있을때 사용한다.