TIL DDL,DML

코딩요정·2022년 6월 10일
0

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

  • syntax
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

  • SYNTAX
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';
  • 업데이트하자마자 지우고싶어진 변덕쟁이다
  • 딱히 다를건없다. 지우고싶은 데이터가있을때 사용한다.
profile
용사님 힘을내세요~!

0개의 댓글