독학/[책 + 인강] SQL

[얄코 MySQL] 섹션 3 데이터 조작하기

최연재 2024. 4. 5. 18:07

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;