본문 바로가기

코리아IT아카데미 [국비과정]/수업

[Linux] 데이터베이스

데이터베이스 (SQL)

dnf install mariadb* 설치

Maria : GPL 오픈소스 소프트웨어
데이터베이스 관리시스템 
MariaDB는 MySQL과 완벽 호환됨
(대부분 기능, API 그대로 지원)
 

systemctl enable mariadb 입력하여
시스템 부팅시 MariaDB 자동 시작 
 

-u : 사용자 이름을 지정
-p : 비밀번호 입력을 요구
루트 사용자로 MySQL에 접속
 

\s : MySQL 상태 정보 표시
라틴어 기반 문자 집합으로 설정됨
 

위 mysqld은 기본적으로 사용하는
문자 집합을 UTF-8로 설정함
 
아래 client는 서버와 연결할 때 기본적으로
사용하는 문자 집합을 UTF-8로 설정함
 

라틴어에서 utf8로 설정 확인
 

LKIE 조건을 사용하여 'c'로
시작하는 변수만 필터링함
 

SELECT table_name AS 'sevas',
                 ROUND(SUM(data_length+index_length)/(1024*1024), 2) AS 'All(MB)',
                 ROUND(data_length/(1024*1024), 2) AS 'Data(MB)',
                 ROUND(index_length/(1024*1024), 2) AS 'Index(MB)'
FROM information_schema.tables
GROUP BY table_name
ORDER BY data_length DESC;

MySQL 또는 MariaDB에서
데이터베이스의 각 테이블에 
대한 크기 정보를 조회하는 쿼리
MB 단위로 표시함
 


 

DDL

CREATE : 생성 
ALTER :  재정의 
DROP : 삭제
TRUNCATE : 초기화
 

CREATE : 새로운 데이터베이스를 생성
(논리적인 저장소를 마련)
 

DROP : 영구적인 삭제를 수행
데이터베이스, 테이블, 인덱스, 뷰 등
영구적으로 삭제하며 복구할 수 없음
 

korea라는 이름의 데이터베이스를
사용하도록 설정, 이후 전환된 곳에서 실행
 

class라는 테이블을 생성, 각 컬럼은
id(문자열), age(정수), atk(정수)를 저장
 

DESC, DESCRIBE : 테이블 구조 확인
컬럼 이름, 데이터 타입, NULL 가능 여부,
키 정보, 기본 값 등 을 보여줌
(기능상 차이는 없음)

현재 선택된 데이터베이스 내에 
모든 테이블의 목록을 조회
 

생성한 class 테이블을 영구적으로 삭제함
 

ALTER : 테이블의 정의(구조)를 수정
컬럼 추가, 수정, 삭제등을 함
 
class 테이블의 age 컬럼의 
데이터 타입을 변경함
 이로인해 age는 숫자뿐만아니라
텍스트도 저장할 수 있게 됨
 

기존 테이블의 컬럼 이름이나
컬럼의 데이터 타입을 변경할 때 사용
(기존 이름과 새로운 이름 모두 명시)
 
MODIFY와 CHANGE 차이

  MODIFY CHANGE
필드 명  X 
필드 타입 O

 

순번 컬럼은 첫 번째에 추가(FIRST)
이름 컬럼은 나이 컬럼 뒤에 추가(AFTER)
방어 컬럼은 테이블 맨 뒤에 추가
 

사번 컬럼 역시 AFTER 키워드를
사용하여 순번 뒤에 추가함
 

PRIMARY KEY : 각 행을 고유하게 식별
(기본 키는 중복 값, NULL 값 허용 X)
(제약조건)
 
UNIQUE : 중복된 값이 들어가지 않도록 함
(유니크 제약, NULL값 허용)

  PRIMARY KEY UNIQUE
중복 값 불허 불허
NULL 값 불허 허용

 

PRIMARY KEY를 삭제했음에도
NULL값은 그대로 불허임, 명시적으로
NULL 값을 허용하도록 수정해야함
(제약 조건이 독립적이기 때문)
 

순번과 이름 컬럼을 결합하여
복합 기본키를 설정함, 조합이 고유해야함
(순번,이름 조합이 테이블 내에서 유일해야함)
 
사번 컬럼에 유니크 인덱스를 추가

 

기본 키는 유일성(Unique)을 보장
순번 컬럼에 중복된 값이 존재하면
기본 키로 설정불가, 기본키는 반드시
고유한 값만 가질 수 있음
 

TRUNCATE : 모든 데이터 삭제
테이블 구조는 유지, 모든 데이터 삭제함
(제약조건 영향 없음)

 


 

DML

 INSERT : 삽입
UPDATE : 수정
DELETE : 삭제
SELECT : 조회
 

INSERT : 새로운 레코드를 삽입
순번, 나이, 이름 컬럼에 각 각 값을 넣음
 

레코드를 삽입했는데 이름이 안들어감
이는 NULL이 아닌 NOT NULL 제약
빈 문자열을 삽입할 수 있음

각 컬럼과 값들을 삽입함
 

UPDATE : 기존 테이블을 수정
방어 컬럼의 값을 '7'로 변경함
(WHERE 절이 없으면 모든 값이 변경)
 

WHERE : 특정 조건을 설정
이름이 '유준'인 행의 공격 컬럼 '7'와
방어컬럼 '5'로 수정함