* mariaDB 와 mySQL 섞임 주의 *
데이터들은 어떻게 정리하느냐에 따라 중복이 발생할 수 있다.
(ex) 음식 분류( 코너 ) / 식당 이름 / 메뉴 를 입력할 메뉴가 여러개면 식당이름과 음식분류도 여러번 쓰는 중복이 생긴다.
중복되는 정보들로 인해 생기는 비효율성과 오류를 없애고자 테이블끼리 적절하게 분리함으로서 중복을 제거한다.
이때 각각의 데이터의 고유 번호 ( id ) 를 연결해줘서 관계 ( Relation ) 를 맺어준다.
하지만 매번 테이블의 고유번호를 찾으면서 어떤 것들이 연결되어있는지 일일히 확인해줘야 하기 때문에 이러한 번거로움을 해결하기 위해 등장한 기능이 JOIN 이다.
각각의 데이터의 고유 번호를 JOIN 을 통해 연결해주고 SELECT 를 통해 한 화면에서 보여주게 하면 한 곳에서 보는 것처럼 확인이 가능하다.
이와 같이 데이터를 다양한 방식으로 필터링, 정렬, 가공해서 내가 필요로 하는 의미 있는 '정보' 들로 만들어내는 다양하고 강력한 기능들을 '관계형 데이터베이스' 가 제공한다.
관계형 데이터베이스들은 공통적으로 SQL을 사용한다. 그래서 SQL Database 라고도 불린다.
MongoDB 와 같은 Non-Relational Database, NoSQL Database 도 존재한다.
(각각의 DBMS 마다 방식들이 천차만별이라 Non으로 묶음)
사용자가 정보들을 입력하고 조회하고 수정, 삭제하는 등 데이터를 관리할 수 있도록 제공하는 방식들 중 하나.
표 형태의 데이터베이스에 정보를 넣고 빼고 조작하는데 사용되는 것이 '구조화 질의 언어' SQL 이다.
C,JAVA 같은 범용 프로그램이 언어보단 HTML같은 특정 사용처에서 쓰이는 도메인특화 언어이다.
이때 Username 과 password 지정이 가능하다
Test Connection 을 통해 연결을 하면 Connected 가 뜬다.
( 중간의 다운로드 창이 뜨면 실행해준다 )
Root 는 모든 권한을 가지고 있다.
Root 를 통해 사용자의 명령어 실행 및 접근 권한을 조정 할 수 있다.
또 User 생성 시 접근 IP 대역을 설정 할 수 있다.
이때 사용하는 언어가 DCL ( Data Control Language) 이다.
DCL 은 데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령어 즉, 데이터 제어어이다.
DCL 을 통해 Root 에서는 유저를 생성할 수 있다.
CREATE USER [유저이름]@[이용 가능한 IP] IDENTIFIED BY [비밀번호]
GRANT [권한] ON [데이터베이스.테이블] TO [사용자]
- 권한 부여REVOKE [권한] ON [데이터베이스.테이블] FROM [사용자]
- 권한 회수SET PASSWORD FOR [사용자] = PASSWORD([비밀번호])
DROP USER [유저이름]
SHOW DATABASES
를 통해 데이터 베이스 목록을 볼 수 있다.
CREATE DATABASE [생성할 데이터베이스]
로 데이터베이스 생성이 가능하다.
USE [사용할 데이터베이스]
로 데이터베이스 사용이 가능하다.
데이터 타입은 문자 타입, 숫자타입, boolean, 날짜타입으로 나뉜다
문자타입
고정형( CHAR(byte)
) - 공간이 남으면 공백으로 채워 검색이 어려움
가변형 - 공간이 남으면 알아서 줄임 ( 입력 속도가 고정형에 비해 상대적으로 느림 ) VARCHAR(byte)
, TEXT
, LONGTEXT
숫자타입
INT
, FLOAT
, BIGINT
, DOUBLE
날짜타입
DATE
: 2023-08-30
DATETIME
: 2023-08-30 08:10:10
TIMESTAMP
: DATETIME 과 같지만 timezone 에 따라 시간이 변한다.
CREATE TABLE [생성할 테이블명](
[생성할 컬럼명] [데이터타입(사이즈)],
...
[생성할 컬럼명] [데이터타입(사이즈)]
);
DESC [확인할 테이블]
- 확인하고 싶은 테이블의 구조를 알 수 있다.
SHOW tables
- 생성한 테이블 목록을 볼 수 있다.
DROP TABLE [삭제할 테이블]
- 테이블을 삭제한다
TRUNCATE TABLE [지우고 다시만들 테이블]
- 테이블 안의 데이터를 다 지운다.
ALTER TABLE [테이블이름] RENAME COLUMN [변경전이름] TO [변경후이름]
-
컬럼의 이름을 변경한다. 변경시 기존 데이터는 날아간다.
ALTER TABLE [테이블이름] ADD ([컬럼명][데이터타입(사이즈)])
-
새로운 컬럼을 추가한다.
ALTER TABLE [테이블이름]
MODIFY COLUMN [컬럼명][변경할 데이터타입(사이즈)]
-
컬럼의 속성을 변경한다. 이 때 컬럼 안에 데이터가 있으면 안된다.
float(전체 자리수, 그 중에 소숫점 자리)
로 사용한다.
이때 00.00 은 float(4,2) 로 표현이 가능하다.
ALTER TABLE [테이블이름] DROP COLUMN [컬럼명]
-
컬럼을 삭제한다.