1. MySQL 설치하기
: MySQL을 설치한다.
- 문자셋
- utf8mb4 : 한글을 포함한 전세계 문자 + 이모티콘 사용 가능
- utf8mb4_general_ci : 가장 정확하지는 않지만(라틴어 계열 알파벳 미구분) 정렬 속도가 빠름.
2. 테이블 만들고 데이터 입력하기
2.1 테이블 생성/수정/삭제
- CREATE TABLE : 테이블 만들기
CREATE TABLE people (
person_id INT,
person_name VARCHAR(10),
age TINYINT,
birthday DATE
);
- ALTER TABLE : 테이블 변경
-- 테이블명 변경
ALTER TABLE people RENAME TO friends,
-- 컬럼 자료형 변경
CHANGE COLUMN person_id person_id TINYINT,
-- 컬럼명 변경
CHANGE COLUMN person_name person_nickname VARCHAR(10),
-- 컬럼 삭제
DROP COLUMN birthday,
-- 컬럼 추가
ADD COLUMN is_married TINYINT AFTER age;
- DROP TABLE : 테이블 삭제
DROP TABLE friends;
2.2 INSERT INTO : 데이터 삽입
INSERT INTO people
(person_id, person_name, age, birthday)
VALUES (1, '최연재', 23, '2002-09-21');
- ()를 , 로 이어서 여러 행을 한 번에 입력 가능
2.3 테이블 생성 시 제약 넣기
CREATE TABLE people (
person_id INT AUTO_INCREMENT PRIMARY KEY,
person_name VARCHAR(10) NOT NULL,
nickname VARCHAR(10) UNIQUE NOT NULL,
age TINYINT UNSIGNED,
is_married TINYINT DEFAULT 0
);
- AUTO_INCREMENT : 새 행 생성 시마다 자동으로 1씩 증가
- PRIMARY KEY : 중복 입력 불가, NULL 불가
- UNIQUE : 중복 입력 불가
- NOT NULL : NULL (빈 값) 입력 불가
- UNSIGNED : (숫자일 때) 양수만 가능
- DEFAULT : 값 입력이 없을 시 기본 값.
📍 PRIMARY KEY
- 테이블마다 하나만 가능
- 기본적으로 인덱스를 생성한다. (기본키 행 기준으로 빠른 검색 가능)
- 보통 AUTO_INCREMENT와 함께 사용
- 각 행을 고유하게 식별 가능 : 테이블마다 하나씩 두기
3. 자료형
3.1 숫자 자료형
- 정수
자료형 | 바이트 | SIGNED | UNSIGNED |
TINYINT | 1 | -128 ~ 127 | 0 ~ 255 |
SMALLINT | 2 | ~32768 ~ 32767 | 0 ~ 65535 |
MEDIUMINT | 3 | ~8388608 ~ 8388607 | 0 ~ 16777215 |
INT | 4 | -2147483648 ~ 2147483647 | 0 ~ 4294967295 |
BIGINT | 8 | -2^63 ~ 2^63-1 | 0 ~ 2^64-1 |
- 고정 소수점 (Fixed Point) 수 : 좁은 범위의 수 표현 가능, 정확한 값
자료형 | 설명 | 범위 |
DECIMAL(s, d) | 실수 부분 총 자릿수(s) & 소수 부분 자릿수 (d) | s 최대 65 |
- 부동 소수점 (Floating Point) 수 : 넓은 범위의 수 표현 가능, 정확하지 않은 값
자료형 | 표현 범위 |
FLOAT | -3.402...E+38 ~ -1.175...E-38 , 0 , 1.175...E-38 ~ 3.402...E+38 |
DOUBLE | -1.797...E+308 ~ -2.225E-308 , 0 , 2.225...E-308 ~ 1.797...E+308 |
3.2 문자 자료형
- 문자열
자료형 | 설명 | 차지하는 바이트 | 최대 바이트 |
CHAR(s) | 고정 사이즈 (남는 글자를 스페이스로 채움) | s (고정값) | 255 |
VARCHAR(s) | 가변 사이즈 | 실제 글자 수[최대 s] + 1[글자 수] | 65535 |
- 검색 시 CAHR가 더 빠름
- VARCHAR 컬럼 길이 값이 4글자보다 적을 경우 CHAR로 자동 변환
- 텍스트
자료형 | 최대 바이트 크기 |
TINYTEXT | 255 |
TEXT | 65535 |
MEDIUMTEXT | 16777215 |
LONGTEXT | 4294967295 |
3.3 시간 자료형
자료형 | 설명 | 비고 |
DATE | YYYY-MM-DD | |
TIME | HHH:MI:SS | HHH : -838 ~ 838 |
DATETIME | YYYY-MM-DD HH:MI:SS | 입력된 시간을 그 값 자체로 저장 |
TIMESTAMP | YYYY-MM--DD HH:MI:SS | MySQL이 설치된 컴퓨터의 시간대를 기준으로 저장 |
- DATETIME : 시간 데이터를 가감없이 기록
- TIMESTAMP : 시간 자동기록, 국제적인 서비스를 할 경우 사용
4. 데이터 변경, 삭제하기
4.1 DELETE : 주어진 조건의 행 삭제하기
- Preferences > SQL Editor > Safe Updates 항목 체크 해제 후 시도
- DELETE
DELETE FROM businesses;
-- 행 전체 삭제
- Cf) TRUNCATE : 테이블 초기화
TRUNCATE businesses;
📍 DELETE 써서 지운 뒤에 id를 다시 넣으면 그 이후 값부터 id가 나오는데 TRUNCATE 는 초기화라서 1부터 됨.
4.2 UPDATE : 주어진 조건의 행 수정하기
- 조건문을 작성하지 않으면 모든 행이 변경된다.
UPDATE menus
SET price = price + 1000
WHERE fk_business_id = 8;
'독학 > [책 + 인강] SQL' 카테고리의 다른 글
[얄코 MySQL] MySQL 활용 웹사이트 만들기 (0) | 2024.04.05 |
---|---|
[얄코 MySQL] 섹션 4 MySQL 더 깊이 알아가기 (0) | 2024.04.05 |
[얄코 MySQL] 섹션 2 SELECT 더 깊이 파보기 (0) | 2024.04.05 |
[얄코 MySQL] 섹션 1 SELECT 기초 - 원하는 정보 가져오기 (2) | 2024.03.25 |
[SQL Server] Do it SQL 입문 5장 다양한 SQL 함수 사용하기 (0) | 2024.02.19 |