개요
MySQL은 오픈 소스로 기업 자체도 무료로 이용할 수 있다.
MySQL 서버를 기본적으로 포함하며 MySQL Workbench를 사용하면 클라이언트를 통해 데이터를 확인할 수 있다.
인스턴스와 스키마, 테이블의 3계층 구조로 이루어진다. (스키마는 Database와 동일한 뜻이다.)
서버 인스턴스
하나의 DB Server를 나타낸다, DBMS가 설치되면 인스턴스가 자동 생성된다.
하나의 DB를 운영하기 위해 내부 Buffer / 내부 저장공간 / 관리 도구들이 동작되어야 한다. 운영이 필요한 모든 도구들을 모아 “서버 인스턴스” 라고 부른다.
데이터 타입 종류
- 숫자형 : INT, FLOAT
- 문자형 : CHAR, VARCHAR, TEXT
- 날짜형 : DATE, DATETIME
- CHAR : 고정 길이 데이터 타입으로 빈 공간은 띄어쓰기로 채워준다.
- VARCHAR : 가변길이 데이터 타입으로 빈 공간을 채우지 않는다, 공간을 아낄 수 있지만 데이터 파편화로 성능 저하의 우려가 있다.
문자형 선택 시 문자열의 특징에 따라 쓰는 타입을 결정해 준다.
- CHAR : 길이가 일정한 문자 / 빠른 성능이 필요한, 자주 읽는 필드
- VARCHAR : 주소 와 같이 길이 변화가 큰 문자
- TEXT : 긴 문자열 사용 시
대표적인 날짜형 데이터 타입은 다음과 같다.
- DATE : 날짜 타입(년, 월, 일), 기본 포맷은 YYYY-MM-DD
- DATETIME : 날짜 + 시간을 나타냄, 기본 포맷은 YYYY-MM-DD HH:MM:SS
예제
1. 스키마 생성하기 (CREATE DATABASE|| SCHEMA)
MySQL 워크벤치를 통해 클라이언트에서 스키마를 생성하자
스키마 생성 버튼 클릭 후 스키마의 입력을 입력해 주고 우측 하단의 Apply를 클릭하면 된다.
2. 테이블 생성하기 (CREATE TABLE)
생성한 스키마의 tables를 우클릭 하여 Create Table을 실행해 준다.
테이블의 이름은 member로, 이후 3개의 칼럼을 추가해 준다.
- column1 : member_id, INT, PK, NN, AI
- column2 : name, VARCHAR(45), NN
- column3 : age, INT, NN
- PK : Primary Key (주키)
- NN : Not Null
- AI : Auto Increment
위와 같이 세팅 후 Apply를 누르게 되면 관련 SQL문이 노출되게 된다.
최종적으로 Apply 클릭 시 테이블이 생성된다.
3. 데이터 삽입 (INSERT)
생성된 테이블을 참조하면 현재 데이터가 없는 것을 확인할 수 있다.
워크벤치에서는 해당 테이블에 직접 입력을 통해 데이터를 입력할 수 있다.
작성 후 Apply 버튼을 누르면 마찬가지로 관련 SQL문이 출력된다.
이후 Apply를 최종적으로 누를 경우 테이블에 값이 추가된 점을 알 수 있다.
실습
SQL을 통해 table에 접근해 보자
1. 출력 (SELECT)
테이블 내 모든 필드(칼럼)을 출력하기
코드
SELECT * FROM testdb.member;
출력
테이블에서 name과 age만 출력하기
SELECT name, age FROM testdb.member;
2. 특정 조건 설정하기 (WHERE)
멤버의 아이디가 2 ~ 4인 경우만 출력하기
코드
SELECT * FROM testdb.member
WHERE member_id >= 2 and member_id <= 4;
출력
3. 특정 필드를 정렬하기 (ORDER BY)
나이순으로 오름차순 정렬하기
코드
SELECT * FROM testdb.member ORDER BY age;
출력
id를 기준으로 내림차순 정렬하기
코드
SELECT * FROM testdb.member ORDER BY member_id DESC;
출력
4. 데이터 개수 제한하기 (LIMIT)
최대 3개 까지의 데이터만 불러오기
코드
SELECT * FROM testdb.member LIMIT 3;
출력
'데이터베이스(DB) > MySQL' 카테고리의 다른 글
MySQL 콘솔 Console (0) | 2024.08.08 |
---|---|
MySQL CRUD (0) | 2024.08.08 |