02.13~14 [DB] Maria DB

KDH59·2024년 2월 13일

[DB]

목록 보기
4/5

Data base

※ 제일 먼저 사용했던게 파일 시스템
-> 어떠한 파일을 어디에 저장했는지 일일히 관리 하게 힘들다

  • 데이터를 영구적으로 저장 할 수 있는 저장소
  • Data base를 이용하면 서로 다른 시스템 간에 데이터를 공유 할 수 있다.

DATA BASE 를 관리 하는 시스탬을 DBMS 라고 한다

User 만들기 와 Right 생성

  • Root는 모든 권한을 가지고 있다
  • Root를 통해 사용자의 명령어 실행 및 접근 권한을 조정 할 수 있다.

Database 접속

  • 정보를 넣고 나면 test connection 을 해준다
  • 권한

Table

  • java에서의 class 와 같다고 볼 수 있다.
  • 최초의 기둥을 잡아 두고 행을 하나씩 채워간다
  • 액셀 시트 하나가 하나의 테이블이다
  • 액셀 시트를 모아둔게 데이터 베이스이다.

[DDL(data define Language)]

  • 데이터 베이스 테이블 등을 생성하는 언어
  • show databases; -> 데이터 베이스 목록 보기
  • create database mydb; -> mydb라는 데이터 베이스 생성
  • CREATE TABLE [테이블명]( [컬럼명][데이터타입](크기) ...); -> 테이블 생성

데이터타입 종류

※ 자주 사용하는 일부

  1. 문자타입
  • 고정형 : 한번 정해진 크기가 변하지 않음 (2글자로 선언 했으나 1글자로 오면 남은 한자리는 공백 처리 -> char(바이트수)
  • 가변형 : 정해진 크기보다 적게 들어오면 알아서 크기를 줄여준다. -> varchar(바이트수)
  1. 숫자타입 : int,long,float,double

  2. boolean

  3. 날짜타입

  • Date : 0000-00-00
  • DateTime : 0000-00-00 00:00:00
  • Timestamp : DateTime 과 같지만 time zone에 따라 시간이 변경 된다.
  • 테이블 구조 보기 : desc [테이블명]
  • 테이블 삭제 : drop table [테이블명]
    ※※※ CREATE 로 생성한 녀석은 DROP 으로 삭제하고 ALTER 로 수정한다.

1. 컬럼 이름 변경(기존데이터 삭제된다.)

  • ALTER TABLE [테이블명] RENAME COLUMN [변경전 이름] TO [변경후 이름];

2. 컬럼 추가

  • ALTER TABLE [테이블명] ADD ([컬럼명][데이터타입](크기));

3. 컬럼 속성 변경(해당 컬럼이 비어 있어야 한다.)

  • ALTER TABLE [테이블명] MODIFY COLUMN [컬럼명][데이터타입](크기)

    ex) ALTER TABLE employees MODIFY COLUMN commision float(4,2); -- float(전체자릿수,소숫점자릿수) -> 00.00

4. 컬럼 삭제

  • ALTER TABLE [테이블명] DROP COLUMN [컬럼명]

[DML(data manipulation Language)]

※ 데이터 베이스나 테이블 등을 생성하는 언어 (명령어)

  • (SELECT, INSERT, UPDATE, DELETE, UPSERT)

  • 데이터를 취급 하는 구문을 우리는 DML 이라고 한다.

1. 데이터 삽입

  • INSERT INTO 테이블명 VALUES(컬럼명에 넣을값,...);

    ex) insert into employees(emp_no, first_name, family_name,email, mobile, salary, depart_no, commision)
    values(111,'지훈','김','zer0box@naver.com','01012341234',99999999,'dev01',90);

2. 데이터 삭제

  • DELETE FROM [테이블명] WHERE [조건]

3. 데이터 수정

  • UPDATE [테이블명] SET [컬럼] = [값] WHERE [조건]
    ex) depart_no 가 dev005 인 row 에 대해서 commsion 을 30 으로 변경

    update employees set commision = 30 where depart_no = 'dev005';

데이터 수정 및 삭제 시 where이라는 조건이 꼭 필요
조건이 없으면 테이블에 있는 모든 내용이 삭제 되기 때문이다.

[Select]

  • 데이터 베이스에서는 특정한 데이터를 선택(select) 하여 볼 수 있다.
  • 세밀한 선택을 하기 위해서 조건문을 사용 할 수도 있다.

1. 데이터 조회 : 특정 컬럼 조회, 산술,문자열 합침

  • SELECT [조회할 컬럼] FROM [테이블명];

    ex) select first_name,family_name, mobile from employees;

  • 숫자로 된 컬럼에 대해서는 계산해서 보여 줄 수 있다. (실제로 계산되는건 아님)

    ex) select first_name,family_name, salary/10000 as 급여 from employees;

  • 문자열을 합칠 수도 있다. 다만 데이터 타입이 문자열이여야 한다 / 숫자 - 숫자 불가능 문자-숫자는 가능

select concat(family_name, first_name) as 이름,concat(truncate(salary/10000,0),'만원') as 급여 from employees;

※※※ 이 모든건 실제 데이터를 가공해서 보여줄 뿐이지 조작 되진 않는다.

2. 특정 조건의 데이터를 조회 / and,or,beteen

  • SELECT [조회할 컬럼] FROM [테이블] WHERE [조건]

select from employees where family_name = '김'; -- if(name == '김')
select
from employees where salary > 3000000; -- if(salaray>3000000)

&& and

-- salary >= 1000000 && salary <= 3000000 자바 버전
-- salary >= 1000000 AND salary <= 3000000 DB 버전

select * from employees where salary >= 1000000 AND salary <= 3000000;

※ 최초에 사무용으로 만들어진 베이스이기 때문에 사용하기 쉽게 and / or 를 사용한다

|| OR

  • family_name = '김' or salary = 2000000;

    select * from employees where family_name = '김' or salary = 2000000;

BETWEEN AND (특정값 사이를 구할때 사용)

  • AND 조건을 이용 해서 salary 가 50만원 보다 크거나 같고, 400만원 보다 작거나 같은 사람의 first_name, family_name, salary 를 구하시오.

select first_name, family_name, salary from employees where salary >=500000 and salary <=4000000;

  • 부등호가 특수문자로 인식되는 경우가 있어서 피하고자 할때 종종 사용된다.

select first_name, family_name, salary from employees where salary between 500000 and 4000000;

3. 중복제거

  • SELECT DEISTINCT [출력할 컬럼] FROM [테이블]

    select distinct family_name from employees where salary = 2000000;

  • distinct 는 하나의 컬럼만 사용 할때 가장 정확한 효과가 나타난다.

4. IN (OR하고 똑같음)

  • family_name 이 '김' 또는 '이' 또는 '박' 인 사람의 모든 정보를 가져와라
  • if(family_name == "김" || family_name == "이" || family_name == "박") 자바버전

select * from employees where family_name = '김' or family_name = '이' or family_name = '박';

  • or 로 비교하는 컬럼이 모두 같을 경우 사용한다.(속도도 훨씬 빠르다.)

select * from employees where family_name IN ('김', '이', '박');

5. Is null || is not null

select from employees where commision is null; / commision 에서 null 인 값을 찾아라
select
from employees where commision is not null; / commision 에서 null 인 아닌 값을 찾아라

6. Like ->

  • 일부 비슷한 문자열에만 검색 숫자에는 대충 비슷하다라는 개념이 없음
  • 검색 기능을 사용할때 가장 많이 사용

    WHERE [컬럼명] LIKE '%[문자열]%'

  • 남발할 경우 속도 저하가 심하다.
  • ze% : ze 로 시작하지만 뒤에는 아무거나 와도 된다. -> ze 로 시작하는...
  • %com : 앞에 아무거나 와도 되지만 뒤는 com 으로 끝나야 한다. -> com 으로 끝나는...
  • %se% : se 앞뒤에 아무거나 와도 된다. -> se 를 포함하는...
  • %s%e% : s 와 e 사이에 아무거나 와도 된다. -> s 또는 e 를 포함하는...
profile
[JAVA]

0개의 댓글