728x90
반응형
출처 : https://www.youtube.com/watch?v=yAYfePKsMek&list=PLVsNizTWUw7FqN2gq79Cb3R6qkS7mqOJk&index=57
DBMS 개념
MariaDB와 Oracle을 운영하기 전에 DBMS(DataBase Management System)과 관련된 기본 용어를 알아보자.
데이터베이스 관리 시스템(DBMS)는 다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 소프트웨어 도구의 집합이다. 즉, 데이터베이스를 '데이터의 집합'이라고 정의한다면, DBMS는 데이터베이스를 관리하고 운영하는 소프트웨어이다.
인터넷 쇼핑몰 업체의 데이터베이스를 생각해보자. 이 데이터베이스에는 회원으로 가입한 고객의 정보와, 고객이 구매한 물품 정보가 들어있다.
이 그림을 보면서 용어를 다시 한번 살펴보자.
- 데이터
- 이 그림에서 hong, 홍길동, 22살, 경기 등의 단편적인 정보
- 누가 '홍길동에 속해 있는 데이터가 무엇이지?'라고 묻는다면, '나이는 22살, 집은 경기도입니다' 정도로 대답할 수 있다. 이처럼 정보는 있으나 완전히 체계적으로 정리되지 않은 것을 데이터라고 생각하면 된다.
- 테이블
- 단편적인 정보를 표 형태로 체계화시켜 구성한 것이다.
- 쇼핑몰 DB 안에는 2개의 테이블이 있으며 각 테이블에는 이름이 있다. '고객 정보'와 '구매정보'가 테이블의 이름이다.
- 데이터베이스
- 고객 정보(CUSTOMER), 구매 정보(PURCHASE)와 같은 테이블이 들어있는 커다란 저장소.
- 각 데이터베이스에는 이름이 존재
- 위 예시에는 shopping_db, mysql, test 라는 3개의 데이터베이스가 존재
- 이 중에서 mysql, test 데이터베이스는 시스템에서 제공하는 데이터베이스이며, shopping_db는 사용자가 생성한 데이터베이스이다.
- 커다란 저장소(원통 모양)에 테이블을 생성하는 것
- 데이터베이스 관리 시스템(DBMS)
- 원통 모양의 데이터베이스를 관리하기 위한 소프트웨어
- 데이터베이스 서버라고도 부른다.
- 3개의 원통을 감싸는 점선이 DBMS이다.
- MariaDB, Oracle 등이 있다.
- 행 또는 로우(row)
- 테이블의 가로줄
- 'hong-홍길동-22-경기' 가 하나의 행이다.
- 즉, CUSTOMER에는 4개의 행이 존재하는 것 = 4개의 데이터가 존재하는 것
- 하나의 완전한 정보를 의미
- '고객 정보' 테이블에서 하나의 행을 살펴봄으로써 해당 고객의 모든 정보를 파악 가능
- 필드 또는 컬럼(column)
- 테이블의 열
- 각 필드는 반드시 이름을 가짐. 이를 필드 이름이라고 부른다.
- CUSTOMER는 4개의 필드로 구성. 각 필드 이름은 ID, NAME, AGE, ADDRESS
- 각 필드에는 데이터 타입이 지정되어 있다.
- 각 필드에 입력할 값의 타입을 미리 결정해야 함. 예로 NAME 필드는 문자로 지정해야 함.
- 주 키 필드(Primary key field)
- 필드 중에서 비어 있지 않으며 중복되지 않은 필드
- 각 열에서 행을 구분하는 유일한 값을 두는 것
- 고객 정보의 경우 ID를 Primary Key로 둬서 중복되지 않게 만듬
- 외래 키 필드(Foreign key field)
- 2개의 테이블을 연관시키는 필드
- PURCHASE의 CUST_ID 필드가 CUSTOMER 테이블 ID 필드의 외래 키이다.
- 관계형 DBMS(RDBMS : Relational DBMS)
- 테이블과의 관계성을 기반으로 둔 DBMS
- Oracle, SQL Server, MySQL, MariaDB 등 대부분의 DBMS는 관계형 DBMS이거나 기능을 지원
- 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
반응형
'Study > 이것이 리눅스다 with Rocky Linux 9' 카테고리의 다른 글
11장. 데이터베이스 서버 구축 및 운영 (3) - MariaDB 생성과 운영 (1) | 2024.01.05 |
---|---|
11장. 데이터베이스 서버 구축 및 운영 (2) - MariaDB 설치 및 접속 (1) | 2024.01.05 |
10장. 메일 서버 설치 및 운영 (3) - 라운드 큐브 메일 설치 (0) | 2024.01.04 |
10장. 메일 서버 설치 및 운영 (2) - 센드메일 서버 구현(네이버, 다음 메일 서버 구현) (0) | 2024.01.03 |
10장. 메일 서버 설치 및 운영 (1) - 메일 서버의 개념과 센드메일 서버 구현을 위한 네임 서버 구축 (3) | 2024.01.03 |