250x250
Notice
Recent Posts
Recent Comments
Link
반응형
개발세발
[day 02][MySQL] ch.04~06 데이터베이스 모델링 , select문 본문
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
반응형
'코딩공부 > MySQL' 카테고리의 다른 글
[day 05] JDBC, 과제(정리중) (0) | 2022.01.25 |
---|---|
[JDBC/JAVA/MySQL] DTO, DAO, Main / 도서 입력 테이블 추가,조회 (0) | 2022.01.25 |
[day 04][MySQL] JDBC (정리중) (0) | 2022.01.24 |
[MySQL] DDL, DQL, DML (0) | 2022.01.24 |
[MySQL] MySQL 설치, DBMS개요 (0) | 2022.01.16 |