[TIL_31] MySQL

구민기·2021년 12월 26일
0
post-thumbnail

관계형 데이터베이스

데이터베이스에는 관계형과 비관계형이 있다.
그중에 관계형 데이터 베이스를 알아보자.

말그대로 데이터베이스 간에 관계가 있다는 것이다.
데이터는 행(row)과 열(column)으로 이루어진 2차원 테이블로 표현할 수 있다.
즉, 테이블간에 관계가 있다는 말이다.

그 관계에는 3가지 유형이 있다.
1. One to One
2. One to Many
3. Many to Many

One to One

말그대로 일대일 관계이다.
A테이블의 데이터와 B테이블의 데이터가 일대일로만 대응이 되는 경우이다.
A테이블에는 name, B테이블에는 주민번호, name_id 의 컬럼을 갖고있다고 하면
어떤 사람은 하나의 주민번호를 갖고있을수 있으므로 일대일 관계인것이다.

이때 각 테이블의 id 컬럼은 Primary Key(PK)라고 하고
그 PK를 참조하고 있는 user_id 컬럼을 Foreign Key(FK)라고 한다.

One to Many

일대다의 관계로 한 테이블의 로우하나가 다른 테이블의 여러 로우와 연결되는 경우를 말한다.

Many to Many

다대다 관계로 A 테이블의 로우가 B 테이블의 여러 로우와 연결될수 있고, B 테이블의 로우가 A 테이블의 로우와 연결이 될 수 있는 경우이다.
예시를 보면서 이해하자.

작가한명이 여러 책을 쓸 수있고, 책의 작가가 여러명이 될 수 있다.
데이터를 담는 행에는 여러 데이터가 들어갈 수 없기 때문에 다시 풀어 보면

위와 같이 데이터가 구성하면 중복되는 것들이 너무 많고 추가될수록 중복이 더 늘어날 것이다.
FK를 이용해서 다대다 관계의 데이터베이스를 구성하면

mySQL

mySQL의 쿼리문을 활용해서 데이터베이스를 생성하고 삭제할 수 있다.

쿼리문에는 몇가지 특징이 있다.

마지막은 ;을 통해서 정해준다.
대소문자를 구분하지 않는다.
주석처리는 #으로 해준다.

  • 데이터베이스에 접근
CREATE DATABASE database_name; # 데이터베이스를 생성하는 명령어

SHOW DATABASES; # 현재 MySQL에 저장된 데이터베이스를 보는 명령어

USE database_name; # 해당 데이터베이스에 접근하는 명령어

SHOW tables; # 접근한 데이터베이스의 테이블을 보는 명령어
  • 테이블을 생성하는 명령어
CREATE users
(
  id INT NOT NULL AUTO_INCREMENT,
  name VARCHAR(20) NOT NULL,
  phone VARCHAR(20),
  pet_id INT,
  PRIMARY KEY (id),
  FOREIGN KEY (pet_id) REFERENCE pet (id) 
);
DESC users # 테이블의 기본 형태를 확인 할수있다.
  • 데이터를 삽입, 수정 삭제
INSERT INTO 테이블명 (컬럼명) VALUES ('내용');
INSERT INTO user (name) VALUES ('김코드');

UPDATE 테이블명 SET 컬럼명='수정할내용' WHERE id=2;
#WHERE을 통해서 특정 로우를 선택해서 그 행의 컬럼을 수정한다.
UPDATE user SET name='김개발' WHERE id=2;

DELETE FROM 테이블명 WHERE name='찾을이름';
# WHERE로 찾은 행을 삭제한다.
DELETE FROM user WHERE name='김개발';
  • 테이블을 조회하는 명령어
SELECT 불러오고 싶은 컬럼명 FROM 테이블명
# * 은 모두를 뜻하므로 모든 컬럼값을 불러온다.
SELECT * FROM users # users 테이블의 모든 데이터 값을 볼 수 있다.
SELECT name FROM users # user 테이블의 name 컬럼만 불러 올 수 있다.

FOREIGN KEY를 이용해서 연관된 데이터를 여러 테이블에서 가지고 올 수도 있다.
JOIN을 활용하는 방법이다.

SELECT artists.name, songs.title, # 불러오고 싶은 컬럼 값을 넣는다.
FROM artists,
JOIN songs, # artists 테이블과 songs 테이블을 결합한다.
ON artists.id = songs.artist_id; foreign key로 연결시켜준다.

0개의 댓글