11장. 데이터베이스 서버 구축 및 운영 (1) - DBMS의 개념과 간단한 SQL 문

728x90
반응형

출처 : https://www.youtube.com/watch?v=yAYfePKsMek&list=PLVsNizTWUw7FqN2gq79Cb3R6qkS7mqOJk&index=57

 

DBMS 개념

MariaDB와 Oracle을 운영하기 전에 DBMS(DataBase Management System)과 관련된 기본 용어를 알아보자.

 

 

데이터베이스 관리 시스템(DBMS)는 다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 소프트웨어 도구의 집합이다. 즉, 데이터베이스를 '데이터의 집합'이라고 정의한다면, DBMS는 데이터베이스를 관리하고 운영하는 소프트웨어이다.

 

 

인터넷 쇼핑몰 업체의 데이터베이스를 생각해보자. 이 데이터베이스에는 회원으로 가입한 고객의 정보와, 고객이 구매한 물품 정보가 들어있다.

이 그림을 보면서 용어를 다시 한번 살펴보자.

 

  1. 데이터
    • 이 그림에서 hong, 홍길동, 22살, 경기 등의 단편적인 정보
    • 누가 '홍길동에 속해 있는 데이터가 무엇이지?'라고 묻는다면, '나이는 22살, 집은 경기도입니다' 정도로 대답할 수 있다. 이처럼 정보는 있으나 완전히 체계적으로 정리되지 않은 것을 데이터라고 생각하면 된다.
  2. 테이블
    • 단편적인 정보를 표 형태로 체계화시켜 구성한 것이다.
    • 쇼핑몰 DB 안에는 2개의 테이블이 있으며 각 테이블에는 이름이 있다. '고객 정보'와 '구매정보'가 테이블의 이름이다.
  3. 데이터베이스
    • 고객 정보(CUSTOMER), 구매 정보(PURCHASE)와 같은 테이블이 들어있는 커다란 저장소. 
    • 각 데이터베이스에는 이름이 존재
    • 위 예시에는 shopping_db, mysql, test 라는 3개의 데이터베이스가 존재
    • 이 중에서 mysql, test 데이터베이스는 시스템에서 제공하는 데이터베이스이며, shopping_db는 사용자가 생성한 데이터베이스이다.
    • 커다란 저장소(원통 모양)에 테이블을 생성하는 것
  4. 데이터베이스 관리 시스템(DBMS)
    • 원통 모양의 데이터베이스를 관리하기 위한 소프트웨어
    • 데이터베이스 서버라고도 부른다.
    • 3개의 원통을 감싸는 점선이 DBMS이다.
    • MariaDB, Oracle 등이 있다.
  5. 행 또는 로우(row)
    • 테이블의 가로줄
    • 'hong-홍길동-22-경기' 가 하나의 행이다.
    • 즉, CUSTOMER에는 4개의 행이 존재하는 것 = 4개의 데이터가 존재하는 것
    • 하나의 완전한 정보를 의미
    • '고객 정보' 테이블에서 하나의 행을 살펴봄으로써 해당 고객의 모든 정보를 파악 가능
  6. 필드 또는 컬럼(column)
    • 테이블의 열
    • 각 필드는 반드시 이름을 가짐. 이를 필드 이름이라고 부른다.
    • CUSTOMER는 4개의 필드로 구성. 각 필드 이름은 ID, NAME, AGE, ADDRESS
    • 각 필드에는 데이터 타입이 지정되어 있다.
    • 각 필드에 입력할 값의 타입을 미리 결정해야 함. 예로 NAME 필드는 문자로 지정해야 함.
  7. 주 키 필드(Primary key field)
    • 필드 중에서 비어 있지 않으며 중복되지 않은 필드
    • 각 열에서 행을 구분하는 유일한 값을 두는 것
    • 고객 정보의 경우 ID를 Primary Key로 둬서 중복되지 않게 만듬
  8. 외래 키 필드(Foreign key field)
    • 2개의 테이블을 연관시키는 필드
    • PURCHASE의 CUST_ID 필드가 CUSTOMER 테이블 ID 필드의 외래 키이다.
  9. 관계형 DBMS(RDBMS : Relational DBMS)
    • 테이블과의 관계성을 기반으로 둔 DBMS
    • Oracle, SQL Server, MySQL, MariaDB 등 대부분의 DBMS는 관계형 DBMS이거나 기능을 지원
  10. SQL(Structured Query Language)
    • DBMS가 알아들을 수 있는 언어
    • SQL을 사용해 DBMS에서 데이터베이스 생성, 테이블 생성, 행 입력/수정/삭제 등을 진행한다.

 

필수 SQL 구문

 

데이터베이스와 관련된 SQL 문

  • DB 이름 조회
    • 구문 : SHOW DATABASES;
    • ex) shopping_db, mysql, test 3개의 데이터베이스 이름이 나온다.
  • 사용할 DB 지정
    • 구문 : USE 데이터베이스이름;
    • ex) USE shopping_db;
    • 지금부터 shopping_db 라는 데이터베이스를 사용하겠다
  • DB 생성
    • 구문 : CREATE DATABASE 데이터베이스이름;
    • ex) CREATE DATABASE shopping_db;
    • shopping_db라는 이름의 빈 데이터베이스 생성
  • DB 삭제
    • 구문 : DROP DATABASE 데이터베이스이름;
    • ex) DROP DATABASE shopping_db;
    • shopping_db 데이터베이스 완전 삭제

 

테이블 운영과 관련된 SQL 문

  • 테이블 이름 조회
    • 구문 : SHOW TABLES;
    • 현재 선택한 데이터베이스에 있는 테이블 이름 조회
    • 현재 선택한 데이터베이스가 shopping_db라면, 2개의 테이블 이름(CUSTOMER, PURCHASE)이 나온다.
  • 테이블 구조(형태) 조회
    • 구문 : EXPLAIN 테이블이름; or DESC 테이블이름;
    • ex) EXPLAIN customer;
    • customer(고객 정보) 테이블의 필드 이름, 데이터 타입 등의 정보를 표시
  • 테이블 생성
    • 구문 : CREATE TABLE 테이블이름 (필드이름1 필드타입 1, 필드이름2 필드타입 2, ...);
    • ex) CREATE TABLE customer (id CHAR(10), name VARCHAR(10), age INT, ADDRESS VARCHAR(30));
    • CHAR, VARCHAR는 문자형을 의미, 안의 10, 30은 글자 수를 의미
    • customer 테이블 생성
  • 테이블 삭제
    • 구문 : DROP TABLE 테이블이름;
    • ex) DROP TABLE customer;
    • customer 테이블 삭제
  • 테이블 수정
    • 구문 : ALTER TABLE 옵션
    • ex) ALTER TABLE customer MODIFY name CHAR(20);
    • customer 테이블의 name 필드 데이터 타입을 CHAR(20)으로 변경
    • ex) ALTER TABLE customer CHANGE name fullname CHAR(10);
    • customer 테이블의 name 필드 이름을 fullname으로 바꾸고 자릿수는 CHAR(10)으로 지정
    • ex) ALTER TABLE customer ADD phone VARCHAR(20) AFTER name;
    • customer 테이블에서 name 필드 바로 다음에 전화번호를 의미하는 phone 필드를 추가
    • ex) ALTER TABLE customer DROP age;
    • customer 테이블에서 age 필드 삭제
  • 테이블 조회
    • 구문 : SELECT 필드이름1, 필드이름2, ..., ..., FROM 테이블이름 WHERE 조건;
    • ex) SELECT * FROM customer;
    • customer 테이블에서 모든 행의 모든 필드를 조회
    • ex) SELECT id, name FROM customer;
    • customer 테이블에서 모든 행의 id 필드와 name 필드 값을 조회
    • ex) SELECT id, name FROM customer WHERE id = 'john';
    • customer 테이블에서 id 필드 값이 'john'인 행의 id 필드와 name 필드 값을 조회
    • ex) SELECT id, name FROM customer WHERE age >= 25;
    • customer 테이블에서 age 필드 값이 25 이상인 행의 id 필드와 name 필드 값을 조회

 

행(레코드) 입력 / 삭제 / 수정과 관련된 SQL 문

  • 행 삽입
    • 구문 : INSERT INTO 테이블이름 VALUES (값1, 값2, ...);
    • ex) INSERT INTO customer VALUES ('hong', '홍길동', 22, '경기');
    • customer 테이블에 홍길동 고객의 행을 삽입
  • 행 삭제
    • 구문 : DELETE FROM 테이블이름 WHERE 조건;
    • ex) DELETE FROM customer WHERE id='hong';
    • customer 테이블에서 id 필드 값이 'hong'인 행을 삭제
  • 행 수정
    • 구문 : UPDATE 테이블이름 SET 필드이름1=수정할 값1, 필드이름2=수정할값2, ..., WHERE 조건;
    • ex) UPDATE customer age=25 WHERE id='hong';
    • customer 테이블에서 id 필드값이 'hong'인 행의 age 필드 값을 25로 수정

 

 

728x90
반응형