[database] mysql 정리
업데이트:
mysql 정리
참고링크
관련 링크
jdbc url
jdbc:mysql://IP주소:포트/DB명
1. Mysql 설치하기
mysql 버전확인
$ mysql --version
1.1 맥에서 Mysql 설치하기
$ brew install mysql
비밀번호 설정
$ mysql_secure_installation
Mysql실행
$ mysql.server start
상태확인
$ mysql.server status
mysql실행정지
$ mysql.server stop
1.2 우분투에서 Mysql 설치하기
$ sudo apt update
$ sudo apt install mysql-server
비밀번호 설정
$ sudo mysql_secure_installation
mysql서버 실행
$ service mysql start
mysql서버 상태확인
$ service mysql status
● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2020-03-23 08:00:07 KST; 5min ago
Main PID: 8182 (mysqld)
Tasks: 29 (limit: 4915)
CGroup: /system.slice/mysql.service
└─8182 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid
3월 23 08:00:07 cheolwon-910S3L-911S3L systemd[1]: Starting MySQL Community Server...
3월 23 08:00:07 cheolwon-910S3L-911S3L systemd[1]: Started MySQL Community Server.
mysql 서버 종료
$ service mysql stop
종료후 상태확인
$ service mysql status
● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Mon 2020-03-23 08:06:50 KST; 2s ago
Main PID: 8182 (code=exited, status=0/SUCCESS)
3월 23 08:00:07 cheolwon-910S3L-911S3L systemd[1]: Starting MySQL Community Server...
3월 23 08:00:07 cheolwon-910S3L-911S3L systemd[1]: Started MySQL Community Server.
3월 23 08:06:49 cheolwon-910S3L-911S3L systemd[1]: Stopping MySQL Community Server...
3월 23 08:06:50 cheolwon-910S3L-911S3L systemd[1]: Stopped MySQL Community Server.
2. mysql 기본 명령어
mysql접속
$ sudo mysql
# 또는
$ sudo mysql -u root -p
2.1 DB 관련
DB목록보기
mysql> show databases;
DB 선택
mysql> use db명;
DB 생성
mysql> create database db명;
DB 삭제
mysql> drop database db명;
선택중인 DB확인
mysql> select database();
선택중인 user확인
mysql> select user();
2.2 테이블 관련
테이블 목록 확인
mysql> show tables;
테이블 구조 확인
mysql> desc 테이블명;
mysql> describe 테이블명;
mysql> explain 테이블명;
테이블 이름 변경
mysql> rename table 테이블명1 to 테이블명2;
테이블 삭제
mysql> drop table 테이블명;
mysql MMM 구조
MMM이란 Multi-Master replication Manager for MySQL의 줄임말로, 기본적으로 한쪽이 마스터, 다른쪽이 슬레이브이지만 이슈발생시 슬레이브가 마스터가 될 수 있는 이중화 구조 중 하나.
mysql 인덱스(index)
책의 찾아보기와 비유
책의 마지막에 있는 “찾아보기”가 인덱스에 비유된다면 책의 내용은 데이터 파일에 해당한다고 볼 수 있다.
- 찾아보기 : 페이지번호 = 인덱스 : 데이터파일에 저장된 레코드 주소
- DBMS도 데이터베이스 테이블의 모든 데이터를 검색해서 원하는 결과를 가져오려면 시간이 오래걸림.
- 시간이 오래걸리므로, 칼럼값과 해당레코드가 저장된 주소를 키-값쌍(Key-Value pair)으로 인덱스를 만듦.
- 찾아보기와 인덱스의 공통점 = 정렬
자료구조와 비유
-
인덱스
SortedList와 같은 자료구조, 저장되는 값을 항상 정렬된 상태로 유지하는 자료구조, 데이터가 저장 될때마다 항상 값을 정렬해야 하므로, 저장하는 과정이 복잡하고 느리지만, 이미 정렬돼 있어서 아주 빨리 원하는 값을 찾아올 수 있음. 즉, INSERT, UPDATE, DELETE 문장의 처리는 느리지만 SELECT 문장은 매우 빠르게 처리할 수 있다. 결국, INSERT, UPDATE, DELETE 성능을 희생하는 대신 데이터 읽기 속도를 높이는 기능. 즉, 인덱스 하나를 추가할 지 말지는 데이터의 저장 속도를 어디까지 희생할 수 있는지, 읽기 속도를 얼마나 더 빠르게 만들어야 하는지에 따라 결정되야 한다. -
데이터파일
ArrayList와 같은 자료구조, 저장되는 순서대로 유지하는 자료구조
인덱스의 구분
-
프라이머리 키(Primary key)
레코드를 대표하는 칼럼의 값으로 만들어진 인덱스를 의미. 이 칼럼은 테이블에서 해당 레코드를 식별할 수 있는 기준값이 되기 때문에 이를 식별자라고 부른다. 프라이머리키는 NULL값과 중복을 허용하지 않는다. -
보조 키(Secondary key)
참고자료 : real mysql