Section 3. MySQL 설치

테이블 생성, 변경, 삭제 및 데이타 입력

테이블 생성 CREATE TABLE
변경 ALTER TABLE, CHANGE COLUMN
삭제 DROP COLUMN, DROP TABLE

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
CREATE TABLE people (
person_id INT,
person_name VARCHAR(10),
age TINYINT,
birthday DATE
);

-- 테이블명 변경
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 friends;

값입력 INSERT INTO

1
2
3
4
5
6
7
8
9
10
INSERT INTO people
VALUES (2, '전우치', 18, '2003-05-12');
-- 여러 행을 한 번에 입력 가능

INSERT INTO people
(person_id, person_name, age, birthday)
VALUES
(4, '존 스미스', 30, '1991-03-01'),
(5, '루피 D. 몽키', 15, '2006-12-07'),
(6, '황비홍', 24, '1997-10-30');

테이블 생성시 제약 넣기

AUTO_INCREMENT 새 행 생성시 자동 1씩 증가
PRIMARY KEY 중복 입력 불가 / 빈 값 불가
UNIQUE 중복 입력 불가
NOT NULL 빈 값 불가
UNSIGNED 양수 only
DEFAULT 값이 없을때 기본값

1
2
3
4
5
6
7
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
);

숫자 자료형

정수, 각 1,2,3,4,8 Bytes
TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT

고정소수점(Fixed Point) 수, 좁은 범위의 수, 정확한 값
DECIMAL(s,d) 실수 부분 s와 소수 부분 d

부동소수점(Floating Point) 수, 넓은 범위의 수, 덜 정확한 값
FLOAT, DOUBLE

문자 자료형

CHAR(s), VARCHAR(s) Fixed와 가변 문자열(실제 글자수 + 1Byte for 글자수 정보)
행 최대 저장이 65,535 이라서 VARCHAR 을 65,535 까지 쓰면 행에 다른 값 저장이 안됨

TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT 긴 글을 저장 할때 사용 LONGTEXT은 4G 까지 저장 가능

시간 자료형

DATE, TIME
DATETIME (입력된 시간 자체 저장), TIMESTAMPE (설치된 컴퓨터의 시간대로 저장)

  • 시간 데이터를 가감없이 기록 할때 DATETIME
  • 시간 자동 기록, 국제적인 서비스 할 경우 TIMESTAMP 사용

데이터 변경, 삭제

DELETE: WHERE 와 함께 사용 해서 삭제, WHERE 없을시 전부 삭제 되니 주의 요
TRUNCATE: 테이블 초기화 로 AUTO INCREMENT 하던 ID 값등이 RESET 된다.

1
2
DELETE FROM businesses
WHERE status = 'CLS';

UPDATE : 자료 업데이트 ‘SET’ 와 ‘WHERE’ 와 같이 사용

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
UPDATE menus
SET menu_name = '삼선짜장'
WHERE menu_id = 12;

UPDATE menus
SET
menu_name = '열정떡볶이',
kilocalories = 492.78,
price = 5000
WHERE
fk_business_id = 4
AND menu_name = '국물떡볶이';

-------------------------------------------

UPDATE menus
SET price = price + 1000
WHERE fk_business_id = 8;

UPDATE menus
SET menu_name = CONCAT('전통 ', menu_name)
WHERE fk_business_id IN (
SELECT business_id
FROM sections S
LEFT JOIN businesses B
ON S.section_id = B.fk_section_id
WHERE section_name = '한식'
);

`WHERE’ 없으면 전부 업데이트 됨으로 주의 요

1
2
UPDATE menus
SET menu_name = '획일화';