[DB] DBeaver를 사용하여, MySQL CRUD해보기

2020. 1. 19. 22:31DB (DATA BASE)

 DBeaver

(from https://ko.wikipedia.org/wiki/DBeaver)

SQL 클라이언트이자 데이터베이스 관리 도구이다. 관계형데이터베이스의 경우 JDBC(Java Data Base Connectivity) API를 사용하여 JDBC 드라이버를 통해 데이터베이스와 통신한다. 그 밖의 데이터베이스(NoSQL)의 경우 사유 데이터베이스 드라이버를 사용한다. 자동 완성 구문 강조를 지원하는 편집기를 제공한다. 이클립스 플러그인 구조 기반의 플러그인 아키텍처를 제공함으로써 애플리케이션 동작 중 상당수를 수정하여 데이터베이스에 특화된 기능이나 데이터베이스에 독립적인 기능들을 제공할 수 있게 한다. 이것은 자바로 작성된 데스크톱 애플리케이션이며 이클립스 플랫폼에 기반을 둔다. 아파치 라이선스로 배포되는 자유 오픈 소스 소프트웨어이다.

 

DBeaver의 간략 역사

2010년에 취미 프로젝트로 시작되었다. 보기 좋은 편리한 UI를 가지면서 데이터베이스 개발자들에게 자주 쓰이는 기능을 포함하는 자유, 오픈 소스로 계획되었다. 최초 공식 릴리스는 2011년 프리코드에 있었다. 빠르게 오픈 소스 커뮤니티의 도구로 대중화되었다. 같은 해 공식 웹사이트가 설립되었고 커뮤니티 지원 포럼(현재는 깃허브로 이동됨)이 만들어졌다. 2012년에 이클립스 플러그인 버전이 출시되었고 그 뒤로 이클립스의 가장 대중적인 데이터베이스 확장 기능 가운데 하나로 되었다.(모든 이클립스 확장 기능 중 상위 50~60)

 

관계형데이터베이스 

(from https://ko.wikipedia.org/wiki/관계형_데이터베이스)

키와 값들의 간단한 관계를 테이블화 시킨 매우 간단한 원칙의 전산정보 데이터베이스입니다.

 

용어 간략 소개

SQL

(Structured Query Language) 용어

관계형 데이터베이스 용어

설명

로우

튜플 또는 레코드

하나의 항목을 대표하는 데이터

컬럼

속성(attribute) 또는 필드

튜플의 이름 요소

(예: "주소", "태어난 날짜")

테이블

관계 또는 기초 관계변수(base relvar)

같은 속성을 공유하는 튜플의 모임. (컬럼이나 로우의 모임.)

뷰 또는 결과 집합

파생 관계변수(derived relvar)

튜플들의 모임. (질의어에 응답하는 RDBMS의 데이터 보고서)

특징 : 데이터가 스키마(정의된 구조)에 따라 저장, 관계

 

장점 : 일반적으로 정렬, 탐색, 분류가 빠르며, 신뢰성이 높다, 정규화에 따른 갱신 비용을 최소화 한다.

 

단점 : 기존에 작성된 스키마를 수정하기 어렵고, 빅데이터를 처리하기 비효율적이다.

 

제품들

Oracle, MySQL, MS-SQL, SQLite 등

 

NoSQL

(from https://ko.wikipedia.org/wiki/NoSQL)

전통적인 관계형 데이터베이스 보다 덜 제한적인 일관성 모델을 이용하는 데이터의 저장 및 검색을 위한 매커니즘을 제공한다. 이러한 접근에 대한 동기에는 디자인의 단순화, 수평적 확장성, 세세한 통제를 포함한다. NoSQL 데이터베이스는 단순 검색 및 추가 작업을 위한 매우 최적화된 키 값 저장 공간으로, 레이턴시와 스루풋과 관련하여 상당한 성능 이익을 내는 것이 목적이다. NoSQL 데이터베이스는 빅데이터 실시간 웹 애플리케이션의 상업적 이용에 널리 쓰인다. 또, NoSQL 시스템은 SQL 계열 쿼리 언어를 사용할 수 있다는 사실을 강조한다는 면에서 "Not only SQL"로 불리기도 한다.

 

특징 : 관계성이 없으며, 스키마 또한 없음

 

장점

1. 스키마가 없어 더 유연함: 필요한 필드 수정이 바로가능합니다.

2. 빠른 읽기 / 쓰기: 에플리케이션이 필요로 하는 형식으로 저장합니다.

3. '수평확장': 수직확장과 더불어 가능하며, 에플리케이션에서 발생하는 읽기 / 쓰기의 모든 요청을 처리할 수 있습니다. 

 

단점

1. 수정을 해야할 때 모든 컬렉션에서 수행해야합니다. (데이터가 여러 컬렉션에 중복되어 있음)

 

제품들

다양한 접근 방식으로 인해 비관계형 데이터베이스를 포괄적으로 파악하는 데에는 어려움이 있다.

그럼에도 동의할만한 수준의 기본적인 분류는 데이터 모델에 기반을 둔다.

● 컬럼 : HBase 등

● 도큐먼트 : MongoDB 등

● 키, 값 : Dynamo 등

● 그래프 : Neo4J 등

 

저는 무료이고 많은 DB소프트웨어 (MySQL, MS-SQL, Oracle, MariaDB, MongoDB 등)을 각각의 Tool로 접속하는 번거러움 없이 통합 관리가 가능하다 판단되어 DBeaver를 설치하여 사용하였습니다.

(개인적으로 행렬이 헷갈리는 경우가 있었으나, 이것 만 기억합시다.. 행 거로(가로) -_-;;)

 

옆에서 select하길래 저건 뭐지? 로 시작했는데... (RDB, NoSQL, NewSQL, 정형, 반정형, 비정형데이터 등)공부할게 더 많아 졌네요. 개발자라는 직업이 참 매력적임을 한번더 느낍니다.

 

자 이제 본래, 하려했던 C(Creat-생성)R(Read-읽기)U(Update-갱신)D(Delete-삭제)기능을 해봅니다.

다른 블로그를 돌아댕김서 명령어 사용법을 참고해서 실행하여 결과창을 확인할겁니다.

 

CRUD

참고) SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY이 순서대로 작성해야한답니다.

데이터 조회

SELECT 열명 FROM 테이블명; (DBeaver에서 세미콜론 없이도 컨트롤 엔터(실행)하니 콘솔창에 조회가 되네요)

열명에 *를 입력하면 전체, 필드명을 입력하면 해당 필드만 보여줍니다. 둘 이상의 필드는 ,로 구분하여 입력하면되구요~

 

조건문 WHERE사용

SELECT 열명 FROM 테이블명 WHERE 조건;

 

 비교연산자

=(같다), <>(같지않다), >=(크거나같다), >(크다), <=(작거나같다), <(작다)

 

SELECT * FROM person WHERE name = ‘gsthecar’;

person테이블에서 name이 gsthecar인 데이터 전부 가져와라 입니다.

 

AND, OR가능

SELECT * FROM person WHERE name = ‘gsthecar’ AND gender = ‘man’;

person테이블에서 name이 gsthecar이고, gender가 man 데이터 전부 가져와라 입니다.

 

정렬

ORDER BY 기본오름차순, DESC 내림차순

SELECT * FROM person WHERE name = ‘gsthecar’ AND gender = ‘man’ ORDER BY age;

예) 상단에서 하단으로 0, 1, 2, 3, 4, 5순

 

SELECT * FROM person WHERE name = ‘gsthecar’ AND gender = ‘man’ ORDER BY age DESC;

예) 상단에서 하단으로 5, 4, 3, 2, 1, 0

 

테이블 요약함수

count, sum, avg, max, min

 

SELECT avg(age) FROM person;

person테이블의 age필드 값 평균을 구해줘 입니다.

SELECT max(age) FROM person;

person테이블의 age필드 값 최대치를 구해줘 입니다.

 

데이터를 그룹화 해서 가져오기 위해서 GROUP BY

SELECT name, age FROM person GROUP BY age;

person테이블의 name과 age를 age로 그룹화해서 보여줘요.

 

조건 걸때 HAVING 

SELECT name, age FROM person GROUP BY age HAVING (age % 2) = 0;

person테이블의 age가 짝수인 name과 age를 age로 그룹화해서 보여줌

생성

먼저 DESK 테이블명을 실행하여 테이블의 형태 확인해봤어요.

전 각필드별 타입, 널러블, 키(pri), 추가적인(예: 자동생성)가 확인되네요.

INSERT INTO 테이블명(컬럼명나열- ‘,’으로 구분) VALUES 데이터; - 선택 즉, 나열한 컬럼명에 해당하는 데이터만 집어넣어 생성이 가능

INSERT INTO 테이블명 VALUES 데이터; - 이경우 벨류값을 다 넣어줘야해요 (예: 컬럼이 4가지, 벨류 3가지만 입력시 오류가 나네요)

 

삭제

DELETE FROM 테이블명; - 테이블의 모든 데이터 지워라 입니다.

DELETE FROM 테이블명 WHERE idx = 118; - idx가 118인 데이터를 지워라 입니다.

 

갱신

UPDATE 테이블명 SET 필드이름 = 값, 필드이름2 = 값2... WHERE 조건

UPDATE person SET age = 35, height = 181 WHERE name = ‘gsthecar’ AND gender = ‘man’;