개발세발

[day 02][MySQL] ch.04~06 데이터베이스 모델링 , select문 본문

코딩공부/MySQL

[day 02][MySQL] ch.04~06 데이터베이스 모델링 , select문

뉼👩🏻‍💻 2022. 1. 16. 18:01
728x90
반응형
SMALL

 

[데이터 베이스 생성]

메뉴 툴 사용 SQL 문법 사용
create Schema XXX    create database  XXXX
Schema 이름 선택 후 더블 클릭   use XXX
tables - 우클릭 - create table  create table 테이블명 (컬럼 타입 not null)
table명- 우클릭 - select ..... - result GRID 에서  결과값 확인 
-> 마지막 줄 더블클릭 
INSERT INTO 테이블명 VALUES ( , , , ,.... );
(*정수값 제외 나머지는 모두  ' ' 안에 쓰기) 
SELECT * FROM 테이블명  

 

 

 


 

[데이터 베이스 모델링]

: 현실에서의 정보를 컴퓨터로 옮기는 작업과정을 의미한다. 

 

<1단계>

 

[고객 방문기록]

고객 방문일 출생일 주소 물건 단가(천원) 수량
111 2021-02-02 1982년 강남구      
222 2020-01-04 1990년 노원구 와이셔츠 50 3
333 2020-10-30 20001년 은평구      
444 2021-08-27 1999년 양평구 바지 40 1

 

 

<2단계>

- 테이블 정리 => L자형 테이블 

→ 이렇게 테이블 안에서 오른쪽 상단부분의 값이 비어있는 상태여서 L자형이라 한다.

 

 

<3단계> - L자형 테이블 분리

 

[고객 테이블]

고객 방문일 출생일 주소
111 2021-02-02 1982년 강남구
333 2020-10-30 2001년 은평구
222 2020-01-04 1990년 노원구
444 2021-08-27 1999년 양평구

+

[구매테이블] 

물건 단가(천원) 수량
와이셔츠 50 3
바지 40 1

 

 

<4단계> - 두 테이블 간의 관계가 필요해짐 

 

[고객 테이블]

고객 방문일 출생일 주소
111 2021-02-02  1982년 강남구
222 2020-01-03 2001년 은평구
333 2020-01-04 1990년 노원구
444 2021-08-27 1999년 양평구

 

[구매 테이블]

고객 물건 단가(천원) 수량
222 와이셔츠 50 3
444 바지 40 1

 

 

 

<5단계> -  PK와 FK 설정

PK(Primary Key) FK (Foreign Key)
부모 테이블 자식 테이블
중복된 값 X, NOT NULL   

 

[고객 테이블]

고객 방문일 출생일 주소
111 2021-02-02  1982년 강남구
222 2020-01-03 2001년 은평구
333 2020-01-04 1990년 노원구
444 2021-08-27 1999년 양평구

 

[구매 테이블]

고객 물건 단가(천원) 수량
222 와이셔츠 50 3
444 바지 40 1

 

 

 


 

 

실습예제]

 


 

 

 

 


 

[사용자 계정 생성]

 

root- mysql 설치 시 내장되어 있던 사용자 

      mysql 를 관리해주는 관리자 계정 (따라서 모든 작업을 다 할 수있는 권한을 가지고 있음)

 

select privileges : 조회권한

 

schema privileges : 각 데이터 베이스(=스키마)에 따라 다른 권한 부여 

 

 

 

데이터베이스 생성/삭제

테이블 생성/변경/삭제
Data definition LANGUAGE : DDL

ex)
Create database xxx
Create table xxx
Alter table xx / drop table xx /

데이터 입력을 위한 준비과정
테이블 입력/수정/삭제 Data MANIPULATION LANGUAGE :DML
Insert / update / delete
 
데이터 조회 DATA QUERY LANGUAGE :DQL
select
 
사용자 관리 DATA CONTROL LANGUAGE :DCLS
(root
사용자가 써야됨)


grant * on
*.* to root

grant : 사용자에게  권한 부여

Revoke :
사용자 권한 취소  

(*:모든데이터에 대해서 )
 
트랜잭션 관리 Transaction control language : TCL
Commit / rollback
 

 

데이터 베이스 생성 /삭제 > 테이블 생성/변경/삭제 > 데이터 입력/수정/삭제 > 데이터 조회

 

 

[mysql 의 함수]

연산자 : +-*/ > >= and or not in like (%, _) , between ~ and

자바 =>  함수제공 

 

 

여러 개 레코드 행을 합쳐서 함수 결과 1개를 리턴

emloyees 급여 총합 → 총합 1개
그룹함수 / 집계함수/다중행함수

Select count(*) from employees;
 count/max/min/sum/avg/
1개 레코드 행을 합쳐서 함수 결과 1개를 리턴
èLower(‘JENNIFER’) àjennifer
단일행함수
문자열/숫자/날짜

 

 

 

[작성 순서]

Select 컬럼명 as(Alis) 별칭 distinct __   Select * from 테이블명
  Select 컬럼명 from 테이블명
  Select 컬럼명1, 컬럼명2 from 테이블명;


  distinct 는 보통 중복되는 데이터 제거를 위해 사용
  ex) select distinct colum1 from table; 
  
  *group by와 달리 정렬을 하지 않고 결과를 출력해 성능이 빠르다. 
From 테이블명  
Where 조건    조건 연산자 : =, <, >, <=,  =>, <> , != 등
  관계 연산자 : not, and, or 등
  을 조합하여 사용가능하다

  between  A  and   B      
  컬럼명 IN (A, B, C ,,,) 
  컬럼명 like '_A%" 
     & : 글자개수 무관
     _ : 해당 글자만큼 

  서브쿼리(subQuery)
  Any(some) : 서브쿼리의 여러 개의 결과 중 한 가지만 만족
  All : 서브쿼리의 여거 개의 결과를 모두 만족 
 
Group by   그룹화
: SELECT의  컬럼명과 같은 값이 들어가야 유의미

  - with rollup 
  : 끝에 써주면 그룹별 총합, 소합계를 확인할 수 있다.
Having   그룹화 조건
Order by   결과 순서 정렬 / 결과물에 대해 영향을 미치진 않음. 

  ASC (오름차순) 이 기본값. 따라서 정렬순서를 안써주면 ASC로 정렬됨
  DESC (내림차순) 

  콤마(,) 붙이고 조건을 하나 더 써주면 2번째 정렬 순서
Limit   출력 개수 제한 
   원하는 부분만가져올 수 있으므로 페이징 처리하기 용이함 

 

 

◎ USE 데이터베이스_이름;  #테이블 지정

- Select 을 쓰기 전에 우선 사용할 데이터 베이스를 지정해줘야 한다.

- use로 사용할 데이터베이스를 지정해주면 스키마에서 해당 데이터베이스 이름이 볼드체로 변한다.

 

◎ create 새테이블 (select 복사할 컬럼명 from 참고테이블);     #테이블 복사

- 테이블 복사할 때 사용

 

 

[집계 함수]

함수명 기능
AVG() 평균
MAX() 최대
MIN() 최소
COUNT() 개수 

COUNT(DISTINCT) : 중복값은 1개만 인정
STDEV() 표준편차
VAR_SAMP() 분산

 

728x90
반응형