1. 서버 관리
1.1 서버 시작
service mysql start
1.2 서버 중지
service mysql stop
1.3 서버 재시작
service mysql restart
1.4 서버 상태 확인
service mysql status
2. 로그인
mysql -u 사용자아이디 -p 패스워드
3. 데이터베이스
3.1 데이터베이스 생성
CREATE DATABASE 데이터베이스명 CHARACTER SET utf8 COLLATE utf8_general_ci;
3.2 데이터베이스 보기
SHOW DATABASES;
3.3 데이터베이스 선택
USE 데이터베이스명;
3.4 데이터베이스 삭제
DROP DATABASE 데이터베이스명;
4. 테이블
4.1. 테이블 생성
CREATE TABLE 테이블명 (컬럼명1 데이터타입1, 컬럼명2 데이터타입2...);
CREATE TABLE 'table1' (
'id' tinyint NOT NULL ,
'name' char(16) NOT NULL ,
'sex' enum('남자','여자') NOT NULL ,
'score' INT NOT NULL,
'test_date' datetime NOT NULL ,
PRIMARY KEY (`id`)
);
4.1.1 데이터 타입
(1) 문자형 데이터타입
데이터 유형 |
정의 |
길이(byte) |
CHAR(길이) |
고정 길이 데이터 타입. |
0 ~ 255 |
VARCHAR(길이) |
가변 길이 데이터 타입. |
0 ~ 65,535 |
TINYTEXT(길이) |
문자열 데이터 타입 |
0 ~ 255 |
TEXT(길이) |
문자열 데이터 타입 |
0 ~ 65,535 |
MEDIUMTEXT(길이) |
문자열 데이터 타입 |
0 ~ 16,777,215 |
LONGTEXT(길이) |
문자열 데이터 타입 |
0 ~ 4,294,967,295 |
(2) 숫자형 데이터 타입
데이터 유형 |
정의 |
크기(byte) |
범위 |
UNSIGNED |
TINYINT(길이) |
정수형 데이터 타입. |
1 |
-128 ~ 127, |
O |
SMALLINT(길이) |
정수형 데이터 타입. |
2 |
-32768 ~ 32767, |
O |
MEDIUMINT(길이) |
정수형 데이터 타입. |
3 |
-8388608 ~ 8388607, |
O |
INT(길이) |
정수형 데이터 타입. |
4 |
-2147483648 ~ 2147483647, |
O |
BIGINT(길이) |
정수형 데이터 타입. |
8 |
무제한 |
O |
FLOAT(길이, 소수) |
부동 소수형 데이터 타입. |
4 |
|
X |
DECIMAL(길이, 소수) |
고정 소수형 데이터 타입 고정. |
길이+1byte |
|
X |
DOUBLE(길이, 소수) |
부동 소수형 데이터 타입. |
8 |
|
X |
(3) 날짜형 데이터 타입
타입 |
정의 |
길이 |
형식 |
범위 |
DATE |
날짜(년도, 월, 일) 형태의 기간 표현 데이터 |
3 |
0000-00-000 |
1000-01-01 ~ 9999-12-31 |
TIME |
시간(시, 분, 초) 형태의 기간 표현 데이터 |
3 |
0:00:00 |
. |
DATETIME |
날짜와 시간 형태의 기간 표현 데이터 |
8 |
0000-00-00 00:00:00 |
1000-01-01 00:00:00.000000 ~ 9999-12-31 23:59:59.999999 |
TIMESTAMP |
날짜와 시간 형태의 기간 표현 데이터. |
4 |
Integer |
. |
YEAR |
년도 표현 데이터 타입 |
1 |
0 |
|
(4) 이진 데이터 타입
타입 |
정의 |
최대 길이(byte) |
BINARY(길이) & BYTE(길이) |
CHAR 형태의 이진 데이터 타입 |
255 |
VARBINARY(길이) |
VARCHAR 형태의 이진 데이터 타입 |
65,535 |
TINYBLOB(길이) |
이진 데이터 타입 |
255 |
BLOB(길이) |
이진 데이터 타입 |
65,535 |
MEDIUMBLOB(길이) |
이진 데이터 타입 |
16,777,215 |
LONGBLOB(길이) |
이진 데이터 타입 |
4,294,967,295 |
(5) ENUM 타입
타입 |
정의 |
최대 개별 수 |
ENUM('값1','값2',...) |
열거형. 정해진 몇가지의 값들 중 하나만 저장. |
65,535 |
(6) SET 타입
타입 |
정의 |
최대 개별 수 |
SET('값1','값2',...) |
집합형. 정해진 몇가지의 값들 중 여러 개를 저장. |
64 |
4.1.2 제약조건
(1) 제약 조건 종류
- NOT NULL : 필드의 데이터 값이 NULL이면 안됨.
- UNIQUE : 필드의 데이터 값이 유일해야 함.
- PRIMARY KEY : 기본키. pk를 사용해도 됨. 제약조건 NOT NULL + UNIQUE.
- FOREIGN KEY : 외래키. 하나의 테이블이 다른 테이블에 의존함.
- CHECK : 주어진 조건에 해당하는 값만 입력 가능.
- DEFAULT : 해당 필드의 데이터 값이 기본값으로 설정함.
- AUTO_INCREMENT : 테이블에 값이 1부터 자동으로 값이 증가함.
(2) 제약 조건 확인
SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS;
(3) 제약 조건 추가(PRIMARY KEY)
ALTER TABLE 테이블명 ADD CONSTRAINT PRIMARY KEY (컬럼명);
(4) 제약 조건 추가(FOREIGN KEY)
ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건 FOREIGN KEY (컬럼명) REFERENCES 부모테이블명 (PK컬럼명) ON DELETE CASCADE / ON UPDATE CASCADE;
(5) 제약 조건 추가(NOT NULL)
ALTER TABLE 테이블명 MODIFY 컬럼명 자료형 CONSTRAINT 제약조건 NOT NULL;
(6) 제약조건 삭제
ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건;
(7) 제약 조건 추가(NOT NULL)
ALTER TABLE 테이블명 FOREIGN KEY 제약조건;
(8) AUTO_INCREMENT 초기화
단순히 원하는 값으로 초기화
ALTER TABLE 테이블명 AUTO_INCREMENT=1;
기존의 컬럼 재정렬
ALTER TABLE 테이블명 AUTO_INCREMENT=1;
SET @COUNT = 0;
UPDATE 테이블명 SET 테이블명.컬럼명 = @COUNT:=@COUNT+1;
4.2 테이블 보기
show tables;
4.3 테이블 구조 보기
Desc 테이블명;
5. CRUD(Create, Read, Update, Delete)
이름 |
내용 |
SQL |
Create |
생성 |
INSERT |
Read |
읽기 |
SELECT |
Update |
갱신 |
UPDATE |
Delete |
삭제 |
DELETE |
5.1 생성(INSERT)
(1) 컬럼명과 값을 모두 선언
INSERT INTO 테이블명 (컬럼명1, 컬럼명2, ...) VALUE (값1, 값2 , ….);
INSERT INTO Avengers (ID, NAME, Age) VALUES ('1001', 'Tho', 1500);
(2) 값이 자동 대입
INSERT INTO 테이블명 VALUES (값1, 값2, ...);
(3) 생략 가능한 컬럼값
- NULL을 저장할 수 있는 컬럼
- DEFAULT 제약 조건 컬럼
- AUTO_INCREMENT 제약조건 컬럼
(4) 중복 키 관리
- INSERT IGNORE : 중복 키 에러가 발생했을 때 신규로 입력되는 레코드를 무시
- REPLACE INTO …
- INSERT INTO … ON DUPLICATE UPDATE : 중복 키 오류 발생 시 사용자가 원하는 값을 직접 설정
5.2 읽기(SELECT)
(1) 모든 데이터 읽기
SELECT * FROM 테이블명;
(2) 조건을 넣은 읽기
SELECT 컬럼명1, 컬럼명2 FROM 테이블명 WHERE 조건;
SELECT * FROM Avengers WHERE age > 30;
(3) 레코수 제한을 두고 읽기
SELECT 컬럼명 FROM 테이블명 WHERE 조건 LIMIT 레코드수;
SELECT * FROM Avengers WHERE age > 30 LIMIT 10;
(4) GROUP BY
SELECT * FROM 테이블명 GROUP BY 그룹컬럼명;
(5) ORDER BY
SELECT * FROM 테이블명 ORDER BY 정렬될_컬럼 DESC_또는_ASC;
(6) 중복 값 제거
SELECT DISTINCT 컬럼명 FROM 테이블명;
(7) 별칭(Alias) 사용
컬럼명 별칭
SELECT 컬럼명 AS 별칭 FROM 테이블명;
테이블명 별칭
SELECT 컬럼명 FROM 테이블명 AS 별칭;
5.3 갱신(Update)
UPDATE 테이블명 SET 컬럼명1=값1, 컬럼명2=값2, ... WHERE 조건;
5.4 삭제(DELETE)
DELETE FROM 테이블명 WHERE 컬럼명 = 값;
테이블 모든 값 삭제
DELETE FROM 테이블명;
6. 원격 접속 허용
6.1 모든 IP 접속 허용
(1) GRANT
GRANT ALL PRIVILEGES ON *.* TO '아이디'@'%' IDENTIFIED BY '패스워드';
(2) INSERT + GRANT + FLUSH
INSERT INTO mysql.user (host,user,password,ssl_cipher, x509_issuer, x509_subject) VALUES ('%','아이디',password('패스워드'),'','','');
GRANT ALL PRIVILEGES ON *.* TO '아이디'@'%';
FLUSH PRIVILEGES;
6.2 특정 IP 대역 허용
예: 123.456.xxx.xxx
(1) GRANT
GRANT ALL PRIVILEGES ON *.* TO '아이디'@'123.456.%' IDENTIFIED BY '패스워드';
(2) INSERT + GRANT + FLUSH
INSERT INTO mysql.user (host,user,password,ssl_cipher, x509_issuer, x509_subject) VALUES ('123.456.%','아이디',password('패스워드'),'','','');
GRANT ALL PRIVILEGES ON *.* TO '아이디'@'123.456.%';
FLUSH PRIVILEGES;
6.3 특정 IP 허용
예: 123.456.78.91
(1) GRANT
GRANT ALL PRIVILEGES ON *.* TO '아이디'@'123.456.78.91' IDENTIFIED BY '패스워드';
(2) INSERT + GRANT + FLUSH
INSERT INTO mysql.user (host,user,password,ssl_cipher, x509_issuer, x509_subject) VALUES ('123.456.78.91','아이디',password('패스워드'),'','','');
GRANT ALL PRIVILEGES ON *.* TO '아이디'@'123.456.78.91';
FLUSH PRIVILEGES;
6.4 원래 상태로 복구 : 모든 IP를 허용한 경우
DELETE FROM mysql.user WHERE Host='%' AND User='아이디';
FLUSH PRIVILEGES;
7. 참고사이트
MySQL 한글매뉴얼 : http://www.mysqlkorea.com/ex/mysql_reference.html
MySQl Documentation : https://dev.mysql.com/doc/
'기타 > 데이터베이스' 카테고리의 다른 글
[데이터베이스] Microsoft SQL 사용법 (0) | 2021.02.02 |
---|---|
[데이터베이스] SSMS(SQL Server Management Studio) 사용법 (0) | 2021.02.02 |
[데이터베이스] Microsoft SQL 설치 (0) | 2021.02.02 |
[데이터베이스] MySQL Workbench (0) | 2021.02.02 |
[데이터베이스] MySQL 설치 (0) | 2020.08.14 |