👉 MySQL이란?
오픈소스 관계형데이터베이스 중의 하나로,
2021년 현재 가장 인지도가 높은 데이터베이스
👉 계정관련 명령어
mysql 접속
mysql -u root -p password
# -u : 사용자
# -p : 비밀번호 사용
계정 확인
select * from mysql.user;
( 대소문자 상관 없이 사용가능 \ 대문자가 명령어, 소문자는 임의지정 )
새로운 계정 추가
CREATE USER 'username'@'hostname' IDENTIFIED BY 'password';
비밀번호 변경 ( 5.7 버전 이상 )
ALTER USER <사용자> IDENTIFIED WITH <인증플러그인> BY <비밀번호>;
# 초기 인증 플러그인 : mysql_native_password
flush privileges;
# 변경사항 적용
모든 권한 보기
SHOW GRANTS;
👉 DB관련 명령어
데이터베이스 확인
SHOW DATABASES;
새로운 데이터베이스 생성
CREATE DATABASE <DB>;
데이터베이스 접속
USE <DB>;
다른 유저에게 데이터베이스 권한 부여
GRANT ALL GRANT ALL ON database.* TO username@localhost;
데이터베이스 삭제
DROP <DB>;
👉 테이블 관련 명령
테이블 확인
SHOW TABLES;
새로운 테이블 생성
CREATE TABLE <테이블>(
<필드> <타입>,
<필드> <타입>
PRIMARY KEY(<필드>)
) ENGINE=<엔진>;
// 엔진은 선택사항
🚩 필드타입 정리
문자형
데이터 타입 | 설명 |
CHAR(10) | 10자리 문자열 / 채워지지 않은자리 공백으로 채움 |
VARCHAR(20) | 20자리 문자열 / 채워지지 않은자리 그대로 놔둠 |
TINYTEXT(10) | 10자리 문자열 / 최대 255byte |
TEXT(10) | 10자리 문자열 / 최대 65535byte |
MEDIUMTEXT(10) | 10자리 문자열 / 최대 16777215byte |
LONGTEXT(10) | 10자리 문자열 / 최대 4294967295byte |
숫자형
데이터 타입 | 설명 |
TINYINT(10) | 10자리 정수 / 최대 1byte |
SAMLLINT(20) | 20자리 정수 / 최대 2byte |
MEDIUMINT(10) | 10자리 정수 / 최대 3byte |
INT(10) | 10자리 정수 / 최대 4byte |
BIGINT(10) | 10자리 정수 / 최대 8byte |
FLOAT(10,0.5) | 10자리 부동 소수점 / 최대 4byte |
DOUBLE(10,0.5) | 10자리 부동 소수점 / 최대 8byte |
DECIMAL(10,0.5) | 10자리 고정 소수점 / 최대 길이 + 1byte |
날짜형
데이터 타입 | 설명 |
DATE | 연도, 월, 일 형태의 날짜 / 3byte |
TIME | 시, 분, 초 형태의 시간 / 3byte |
DATETIME | 날짜 + 시간 / 8byte |
TIMESTAMP | 현재 ( 날짜 + 시간 ) / 4byte , 내용 변경시 수정됨 |
YEAR | 연도 / 1byte |
이진수형
데이터 타입 | 설명 |
BINARY(10) & BYTE(10) | 10자리 CHAR 형태의 이진수 / 최대 255byte |
VARBINARY(20) | 20자리 VARCHAR 형태의 이진수 / 최대 65535 byte |
TINYBLOB(10) | 10자리 이진수 / 최대 255byte |
BLOB(10) | 10자리 이진수 / 최대 65535byte |
MEDIUMBLOB(10) | 10자리 이진수 / 최대 16777215byte |
LONGBLOB(10) | 10자리 이진수 / 최대 4294967295byte |
옵션
옵션 | 설명 |
NOT NULL | NULL 값을 저장할 수 없음 |
UNIQUE | 중복값을 저장할 수 없음 |
PRIMARY KEY | 기본 키로 설정 ( NOT NULL + UNIQUE ) |
FOREIGN KEY | 외부 테이블에 연결 ( 참조하려는 테이블은, UNIQUE 나 PRIMARY KEY가 있어야 함 ) |
DEFAULT <값> | <값>을 기본 값으로 설정 |
AUTO_INCREMENT | 자동 인덱스 증가 |
테이블 구조확인
DESC <테이블>;
테이블 삭제
DROP <테이블>;
테이블에 정보 저장
INSERT INTO <테이블>(<컬럼1>, <컬럼3>, ...) VALUES (<값1>, <값3>, ...);
테이블 정보 불러오기
SELECT <컬럼1>, <컬럼2>, ... FROM <테이블>;
조건 사용해서 불러오기
1. 컬럼1의 값이 3인 곳에서, 모든(*) 컬럼 내용 불러오기
SELECT * FROM <테이블> WHERE <컬럼1>=<값3>;
2. 컬럼2의 값이 문자열을 포함하고 있는 곳에서, 컬럼1 과 컬럼3의 내용 불러요기
SELECT <컬럼1>, <컬럼3> FROM <테이블> WHERE <컬럼2> LIKE <문자열>;
정렬조회
1. 내림차순
SELECT * FROM <테이블> ORDER BY <컬럼> DESC;
2. 오름차순
SELECT * FROM <테이블> ORDER BY <컬럼> ASC;
새로운 컬럼을 컬럼1뒤에 추가
ALTER TABLE <테이블> ADD <컬럼> <컬럼속성> AFTER <컬럼1>
기존 데이터 변경
( 컬럼2의 값이 값5인 곳에서, 컬럼1 값을 값1으로 바꾼다. )
UPDATE <테이블> SET <컬럼1>=<값1> WHERE <컬럼2>=<값5>;
정보 삭제하기
( 컬럼값이 일치하는 부분 찾아서 제거 )
DELETE FROM <테이블> WHERE <컬럼>=<값>
👉 테이블 연결
필드1을 외부테이블속의 필드에 연결한다 ( FOREIGN KEY 사용 )
- 외부테이블속의 필드가 바뀌면, 필드1도 바뀐다
CREATE TABLE <테이블>(
<필드1> <타입1>,
<필드2> <타입2>,
...
FOREIGN KEY(<필드1>)
REFERENCES <외부테이블> (<외부필드>)
)
INDEX 만들기
CREATE INDEX <인덱스명> ON <테이블명> (<컬럼명>)
반응형