본문 바로가기

멋쟁이사자처럼_부트캠프/DB

[멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 부트캠프 13기: Java 12일차 DB(MySQL Workbench)

MySQL Workbench를 이용하여 Connection 생성 및 테이블 생성하기

 

이전에 스프링부트로 MySQL 설정을 한적이 있어서 아직 서비스가 그대로 남아있었다.

그래서 도커 설정을 포트3307이 3306으로 연결될수 있도록 아래와 같이 설정해주었다.

포트매핑 조정

 

이후 작업을 위해 원하는 사용자로 연결하면된다.

위 커넥션중 scott에서 hr관리를 하는 예제를 수업에서 진행하였다.

 

테이블을 삽입하는 방법은 원하는 sql text file이 있다면, 

현재 작업 중인 데이터베이스를 먼저 확인하고, 테이블을 생성하면 된다.

 

테이블을 생성했으면 위와같은 명령어를 통해 원하는 테이블을 조회할 수 있다.

 


SQL 개념 정리

SQL : 쿼리 라고 읽는다.

키워드는 대소문자 구별이 없다.

MySQL은 문장의 끝을 라인으로 구분하는 것이 아니라 semicolon(;) 으로 구분하기 때문에 여러줄에 거쳐 문장을 쓰는 것도 가능하다.

데이터 값(문자열)은 DBMS 설정에 따라 다르지만 MySQL은 구분하지 않는다.(이를 인지하고 있어야한다.)

 

1. 사용자 생성('id', 'password'는 설정한 값으로 넣어주어야함.)

CREATE USER '사용자명'@'호스트' IDENTIFIED BY '비밀번호';
CREATE USER 'id'@'%' IDENTIFIED BY 'password'; -- 외부 접속용
CREATE USER 'id'@'localhost' IDENTIFIED BY 'password'; -- 로컬 접속용

 

2. 권한 부여

GRANT 권한 ON 데이터베이스.테이블 TO '사용자명'@'호스트';
GRANT ALL PRIVILEGES ON hr.* TO 'like'@'%';
GRANT ALL PRIVILEGES ON hr.* TO 'like'@'localhost';

 

3. 권한 적용

FLUSH PRIVILEGES;

 

모든 권한 변경 사항을 적용하기 위해서는 FLUSH PRIVILEGES; 명령을 실행해야 함.

 

4. 사용자 존재 확인

SELECT user, host FROM mysql.user WHERE user = 'like';

 

5. 사용자 삭제

DROP USER 'like'@'%';
DROP USER 'like'@'localhost'; -- 만약 localhost에도 사용자가 있다면

 

6. 권한 삭제

 1) 특정 권한만 제거하기

REVOKE ALL PRIVILEGES ON hr.* FROM 'like'@'%' -- 모든 권한 제거
REVOKE INSERT, UPDATE ON hr.* FROM 'like'@'%'; -- 특정 권한 제거

 2) 모든 권한을 제거하고 사용자 삭제하기

-- 모든 데이터베이스에 대한 권한을 제거
REVOKE ALL PRIVILEGES ON *.* FROM 'carami'@'%';
-- `GRANT OPTION` 권한도 제거
REVOKE GRANT OPTION ON *.* FROM 'carami'@'%';
-- 사용자 삭제
DROP USER 'carami'@'%';
-- 권한 테이블 새로 고침
FLUSH PRIVILEGES;

 

주의사항

  • REVOKE 명령을 사용할 때는 권한을 제거하고자 하는 사용자의 호스트 이름도 정확 히 지정해야 함.
  • 권한을 변경한 후에는 항상 FLUSH PRIVILEGES; 를 실행하여 권한 변경 사항을 적용 해야 한다. 이 명령은 MySQL이 권한 변경을 즉시 반영하도록 한다.

테이블 목록 보기

show tables;

 


데이터베이스에서 데이터를 구조화하고 관리하는 핵심 요소

1. 테이블 (Table)

  • 정의: 데이터베이스 내에서 데이터를 구조적으로 저장하는 기본 단위.
  • 설명: 테이블은 여러 개의 (레코드)과 (필드)을 포함한 2차원 배열로 생각할 수 있음. 테이블은 특정 주제나 카테고리에 대한 정보를 저장함.
  • 예시:
    • employees라는 테이블은 직원 정보를 저장하고 있을 수 있음.
    • orders 테이블은 주문 정보를 저장할 수 있음.

2. 필드 (Field) 또는 열 (Column)

  • 정의: 테이블 내에서 특정 속성이나 항목을 나타내는 각 데이터 항목을 필드 또는 이라고 함.
  • 설명: 열은 특정 데이터 유형을 갖는 데이터를 저장하는 구조적 단위. 각 열은 특정 유형의 정보를 저장하는 데 사용됨.
  • 필드와 열의 차이:
    • 필드는 실제로 데이터를 저장하는 개별 항목을 가리키고,
    • (Column)은 필드를 구조화한 개념.
    • 둘은 사실상 동일하게 사용되며, 열이 더 자주 사용됨.
  • 예시:
    employees 테이블에서 name, position, salary는 (필드)임.
    • name: 직원의 이름을 저장.
    • position: 직원의 직책을 저장.
    • salary: 직원의 급여를 저장.

3. 행 (Row)

  • 정의: 테이블에서 하나의 레코드를 구성하는 데이터의 집합.
  • 설명: 행은 특정 객체나 엔터티에 대한 모든 정보를 포함하는 데이터 단위. 각 행은 여러 개의 열(필드)에 대응하는 값을 가짐.
  • 예시:
    employees 테이블에서 한 명의 직원 정보는 하나의 으로 저장됨.
    • 예: John, Manager, 5000 (이 정보는 하나의 행을 이룸)
    • 이 행은 name 열에 John, position 열에 Manager, salary 열에 5000 값을 갖게 됨.

비유

  • 테이블처럼, (필드)은 책의 제목처럼, (레코드)은 책의 각 페이지처럼 생각할 수 있음.

정리

  • 테이블 (Table): 데이터를 저장하는 기본 단위로, 여러 개의 행과 열을 포함.
  • 열 (Column) 또는 필드 (Field): 데이터베이스 테이블에서 각 속성에 해당하는 항목.
  • 행 (Row): 테이블에서 하나의 레코드를 나타내는 데이터 집합.

 

테이블 생성 예시

CREATE TABLE employees (
    employee_id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    position VARCHAR(50),
    hire_date DATE,
    salary DECIMAL(10, 2)
);
INSERT INTO employees (name, position, hire_date, salary)
VALUES ('John Doe', 'Manager', '2023-01-15', 5000.00),
       ('Jane Smith', 'Developer', '2022-03-22', 4500.00);

 

예시 결과 테이블

employee_id name position hire_date salary
1 John Doe Manager 2023-01-15 5000.00
2 Jane Smith Developer 2022-03-22 4500.00