[한화시스템 BEYOND SW캠프 7기] #04. MariaDB_기본

아로롱·2024년 5월 17일

BEYOND SW CAMP 7

목록 보기
4/30
post-thumbnail

📲 DBMS(DB)

  • DatabaseManagement 시스템의 약자.
  • Mysql, MariaDB, Oracle, Postgres, MongoDB, Redis
  • 1. 관계형 데이터베이스(RDB)
    • Mysql, Oracle, MariaDB, Postgres
      • (Mysql과 MariaDB는 99% 흡사!)
    • 서로 관계를 갖는 데이터들의 집합.
      - 테이블, 행, 열 등의 구조로 데이터가 구조화 (엑셀을 떠올리면 쉽다.)
  • 2. 비관계형 데이터베이스(RDB)
    - Redis, MongoDB
    - 정형화, 구체화되지 않아도 값을 입력하기 쉽다. (비정형화 OK) ⇒ 성능을 높이기 위해서 많이 사용함.
    - 주로 관계형과 함께 사용함. ex) MariaDB + Redis

🦭MariaDB

  • MariaDB 는 관계형 데이터 베이스
  • MariaDB 는 MySQL 의 포크(fork : 그대로 카피했다!)로 2009년에 시작되었고, MySQL 의 기본적인 특성 및 구조를 그대로 유지하면서 일부 차이점과 추가 기능을 포함.
    • linux : 오픈 소스 → 우분투, redhat 등 배포판이 많음.
    • mysql : 오픈 소스 → mariadb - fork를 통해 새로운 프로그램.
  • MariaDB의 특징
    • MariaDB 는 완전한 오픈소스
      • 지속적인 발전 가능성
      • 사용자 입장에서 무료
    • 뛰어난 성능 및 최적화

✏️ SQL문

  • 관계형 데이터베이스 관리 시스템(RDBMS)에서 데이터를 조회, 삽입, 갱신, 삭제하기 위해 사용 되는 프로그래밍 언어

  • CRUD

    • Create, Read, Update, Delete의 약어
    • 데이터베이스에 생성, 조회, 수정, 삭제를 의미. CRUD 작업을 한다고 표현.
  • SQL 구문도 위의 목적에 맞게 크게 세 가지로 구분

    • DB 구축 시 세 가지로 분류해 작업 (sql문을 세 가지로 분류)

      1. DDL문(sql문)을 활용하여 테이블 구축
      2. DML문(sql문)을 활용하여 데이터 삽입 / 조회 / 수정 / 삭제 ⇒ 가장 많이 사용됨. (중요도가 높음)
      3. DCL문(sql문)을 활용하여 사용자 관리 (권한 부여)
        ex) 로그인 테이블 ⇒ 내 정보만 수정, 게시글 테이블 ⇒ 테이블 내 데이터 모두 수정 가능
    • DDL

      • Data Definition Language
      • 데이터 베이스나 테이블 등을 생성, 테이블 그 자체를 삭제하거나 그 구조를 변경
      • CREATE, ALTER, DROP
    • DML

      • Data Manipulation Language
      • 데이터베이스에 저장된 데이터를 처리하거나 조회
      • INSERT, UPDATE, DELETE, SELECT 등
    • DCL

      • Data Control Language
      • 사용자 권한 부여 등 (사용자 관리 sql문)
      • GRANT, REVOKE 등

✏️ 데이터베이스

  • mariaDB 설치 ⇒ 바깥 라인 큰 틀인 서버 자동 생성
  • 스키마(schema) 안에 테이블 구성 ⇒ 스키마 구축 반드시 필요함.
    • 게시판 구축할래! → board 테이블을 스키마 안에 구축.
    • 여러 테이블을 하나의 DB 서버에 구축 가능.

  • 테이블
    • 열(culumn)
      • 열은 필드(field) 또는 속성(attribute)
        • 속성 : 열의 첫 번째 데이터(=value) 를 속성이라고 부름.
          ex) 1열에 email, address … 작성 → email이 속성.
    • 값(value)
      • data로 속칭
    • 행(row)
      • 튜플(tuple) 또는 레코드(record)
    • 키(key)
      • 한 행의 식별자로 이용되는 열
      • 테이블에 저장된 레코드(row)를 고유하게 식별하는 키를 기본 키(primary key)라고 함.
        • pk : 중복이 없어야하고, 비어있으면 안됨.
    • 외래 키(foreign key)
      • 외래 키는 두 테이블을 서로 연결하는 데 사용되는 키

⌨️ mariaDB 실습

  • 데이터베이스, 테이블 생성
    • MariaDB에서 명령문은 대소문자를 구분하지 않으나, 대문자가 관례
      • 테이블명, 컬럼명은 소문자가 관례
      • 테이블명은 대소문자를 구분
-- mariaDB접속
mariadb -u root -p

-- 스키마(schema, database)
CREATE DATABASE 테이블명;
-- 스키마 목록 조회
SHOW databases;
-- 스키마 선택
USE 테이블명;

-- 테이블 생성 / 테이블에 저장된 레코드(row)를 고유하게 식별하는 키 PRIMARY KEY
CREATE TABLE 테이블명(id INT PRIMARY KEY, name VARCHAR(255), email VARCHAR(255), password VARCHAR(255));

-- 테이블 컬럼(column, 열) 조회
DESCRIBE 테이블명;
-- 상세 조회
SHOW FULL COLUMNS;
-- 테이블 생성문 조회
SHOW CREATE TABLE 테이블명; -- 테이블을 삭제하기 전 저장해두면 그대로 복구(재생성) 가능!
-- 테이블 전체에 대한 제약 조건 FOREIGN KEY
CREATE TABLE 테이블명(x,x,x, FOREIGN KEY (x_참조 테이블 컬럼) REFERENCES 참조 테이블 (컬럼));

-- 테이블 index 조회
SHOW INDEX FROM 테이블명;

-- ALTER 문 : 테이블의 구조를 변경
-- 테이블 이름 변경
ALTER TABLE 테이블1 RENAME 테이블2
-- 테이블 컬럼 추가
-- 컬럼 추가 ADD / 수정 MODIFY / 삭제 DROP
ALTER TABLE 테이블명 ADD COLUMN 컬럼명 VARCHAR(50);
-- 컬럼명 변경 => 덮어쓰기 개념이므로 기존에 있던 값도 꼭 함께 적어주기!
ALTER TABLE 테이블명 CHANGE COLUMN 원래컬럼명 변경컬렴명 VARCHAR(255);
-- 컬럼 타입과 제약 조건 변경
ALTER TABLE 테이블명 MODIFY COLUMN 컬럼명 VARCHAR(255) NOT NULL;
  • DDL 실습
  1. author 테이블에 address 컬럼 추가.
    alter table author add column address VARCHAR(255);
  2. post 테이블에 title은 not null 제약 조건 추가, contents는 3000자로 변경.
    alter table post modify column title VARCHAR(255) not null;
    	alter table post modify column contents VARCHAR(3000);
-- 데이터 삽입 INSERT INTO
INSERT INTO 테이블명(컬럼1, 컬럼2, 컬럼3) VALUES(데이터1, 데이터2, 데이터3);

-- 테이블 제약 조건 조회
-- 내가 현재 USE하고 있는 스키마에서 : 데이터 조회 SELECT / * : 모든 컬럼 조회
SELECT * FROM 테이블명;
-- USE 하고 있지 않다면?
SELECT * FROM 스키마명.테이블;
=> SELECT * FROM information_schema.key_column_usage WHERE TABLE_NAME = 'posts';

-- 테이블 레코드의 내용 수정 UPDATE
UPDATE 테이블명 SET 컬럼명=데이터 WHERE 레코드=n;
-- 테이블 삭제
DELETE FROM 테이블명 WHERE 레코드=n;

-- SELECT의 다양한 조회 방법
SELECT * FROM 테이블명;
SELECT * FROM 테이블명 WHERE 레코드 > n AND 레코드1 =;
-- 특정 컬럼만 조회
SELECT 컬럼명 FROM 테이블명 WHERE 레코드 =;
-- 중복 제거하고 조회
SELECT DISTINCT 컬럼명 FROM 테이블명;

-- 정렬 : ORDER BY. 데이터의 출력 결과를 특정 기준으로 정렬
-- 아무런 정렬 조건없이 조회할 경우에는 PK 기준 오름차순으로 조회됨.
-- 오름차순 : ASC / 내림차순 : DESC
SELECT * FROM 테이블명 ORDER BY 컬럼명 ASC;
-- 멀티 ORDER BY / 여러 컬럼으로 정렬. 먼저 쓴 컬럼 우선 정렬 후 다음 정렬 옵션 적용.
SELECT * FROM 테이블명 ORDER BY 컬럼명, 컬럼명1 DESC; -- 중복일 경우에 컬럼명1 DESC 하겠다!
-- LIMIT NUMBER : 특정 숫자로 결과값 개수 제한
SELECT * FROM 테이블명 ORDER BY 컬럼명 DESC LIMIT n; -- n=1 일 경우 한 개만 보겠다!

-- ALIAS(별칭)을 이용한 SELECT : AS 키워드 사용
SELECT name AS 이름, email AS 이메일 FROM 테이블명;
-- 테이블이 여러 개 일 경우 / 테이블 뒤에 넣는 별칭에서는 as 생략 OK!
SELECT a.name AS 이름, a.email as 이메일 from author as a;

-- NULL 을 조회 조건으로. 비어있는 것만 조회 = NULL / 반대 = NOT NULL;
SELECT * FROM 테이블명 WHERE 컬럼명 IS NULL;
  • DML 실습
  • 테이블의 타입 확인
    - DESCRIBE 테이블명;

    Null → YES : Null 이 될 수 있다!

📌 today

내가 배우고 있는 개념들이 실제 업무에서도 사용되는 거라니!
수업이 더더욱 매력적으로 다가오기 시작했다. ^ㅇ^

한 개념을 실습하는데도 시간이 많이 소요됐다. 여러 케이스들을 적용하여 실습할 때는 더더욱 버벅인 것 같다. 프로그래머스에서 SQL 문제 풀이를 진행했었는데, 확실히 개념은 읽어보는 것보다 직접 실습해보는 것이 더 뇌리에 쏙 박히는 것 같다. 여러 문제를 복습해보면서 이해가 되지 않아 뒤쳐지는 일은 반드시 없도록 해야겠다.

profile
Dilige, et fac quod vis

0개의 댓글