DROP DATABASE IF EXISTS a2;
a2) 생성CREATE DATABASE a2;
a2) 선택USE a2;
CREATE TABLE article (
id INT,
regDate DATETIME,
title VARCHAR(100),
body TEXT
);
SELECT *
FROM article;
INSERT INTO article
SET regDate = NOW(),
title = '제목',
body = '내용';
INSERT INTO article
SET regDate = NOW(),
title = '제목',
body = '내용';
SELECT *
FROM article;
UPDATE article SET id = 0;
ALTER TABLE article MODIFY id INT NOT NULL;
SELECT *
FROM article;
UPDATE article
SET id = 1
WHERE id = 0
LIMIT 1;
SELECT *
FROM article;
UPDATE article
SET id = 2
WHERE id = 0;
ALTER TABLE article ADD PRIMARY KEY(id);
ALTER TABLE article MODIFY COLUMN id INT NOT NULL AUTO_INCREMENT;
DESC article;
ALTER TABLE article MODIFY COLUMN regDate DATETIME NOT NULL;
ALTER TABLE article MODIFY COLUMN title VARCHAR(100) NOT NULL;
ALTER TABLE article MODIFY COLUMN body TEXT NOT NULL;
ALTER TABLE article MODIFY COLUMN id INT UNSIGNED NOT NULL AUTO_INCREMENT;
DESC article;
ALTER TABLE article ADD COLUMN writer VARCHAR(100) NOT NULL AFTER title;
ALTER TABLE article CHANGE writer nickname VARCHAR(100) NOT NULL;
DESC article;
ALTER TABLE article MODIFY COLUMN nickname VARCHAR(100) NOT NULL AFTER body;
DESC article;
ALTER TABLE article ADD COLUMN hit INT UNSIGNED NOT NULL AFTER nickname;
DESC article;
ALTER TABLE article DROP COLUMN hit;
DESC article;
ALTER TABLE article ADD COLUMN hit INT UNSIGNED NOT NULL AFTER nickname;
DESC article;
UPDATE article
SET nickname = '무명'
WHERE nickname = '';
INSERT INTO article
SET regDate = NOW(),
title = '제목3',
body = '내용3',
nickname = '홍길순',
hit = 10;
INSERT INTO article
SET regDate = NOW(),
title = '제목4',
body = '내용4',
nickname = '홍길동',
hit = 55;
INSERT INTO article
SET regDate = NOW(),
title = '제목5',
body = '내용5',
nickname = '홍길동',
hit = 10;
INSERT INTO article
SET regDate = NOW(),
title = '제목6',
body = '내용6',
nickname = '임꺽정',
hit = 100;
SELECT * FROM article ORDER BY hit DESC LIMIT 3;
SELECT * FROM article WHERE nickname LIKE '홍길%';
SELECT * FROM article WHERE hit >= 10 AND hit <= 55;
SELECT * FROM article WHERE nickname != '무명' AND hit <= 50;
SELECT * FROM article WHERE nickname = '무명' OR hit >= 55;
[MYSQL] 📚 테이블 제약 조건 정리
https://inpa.tistory.com/entry/MYSQL-%F0%9F%93%9A-%EC%A0%9C%EC%95%BD-%EC%A1%B0%EA%B1%B4-%EC%A0%95%EB%A6%AC
SHOW DATABASES;
mysql 데이터 베이스 선택USE mysql;
SHOW TABLES;
DESC user;
test 데이터 베이스 선택USE test;
SHOW TABLES;
DROP DATABASE IF EXISTS a1;
a1) 생성CREATE DATABASE a1;
a1) 선택USE a1;
SHOW DATABASES;
SHOW TABLES;
CREATE TABLE article (
title VARCHAR(100),
body TEXT
);
SHOW TABLES;
DESC article;
INSERT INTO article
SET title = '제목',
body = '내용';
SELECT title
FROM article;
SELECT title, body
FROM article;
SELECT body, title
FROM article;
SELECT *
FROM article;
INSERT INTO article
SET title = '제목',
body = '내용';
SELECT *
FROM article;
ALTER TABLE article ADD COLUMN id INT FIRST;
SELECT *
FROM article;
UPDATE article
SET id = 1
WHERE id IS NULL;
미
UPDATE article
SET id = 2
LIMIT 1;
SELECT *
FROM article;
INSERT INTO article
SET id = 3,
title = '제목3',
body = '내용3';
SELECT *
FROM article;
DELETE FROM article
WHERE id = 2;
SELECT *
FROM article;
ALTER TABLE article ADD COLUMN regDate DATETIME AFTER id;
DESC article;
SELECT *
FROM article;
UPDATE article
SET regDate = '2018-08-10 15:00:00'
WHERE id = 1;
SELECT *
FROM article;
SELECT NOW();
UPDATE article
SET regDate = NOW()
WHERE id = 3;
SELECT *
FROM article;
개발자로서 데이터베이스를 완벽히 장악하기 위해 반드시 거쳐야 할 필수 관문입니다. 이 4가지 카테고리가 데이터베이스 세상에서 어떤 역할을 수행하고 서로 어떻게 긴밀하게 상호작용하는지, 비전공자도 단번에 이해할 수 있는 일상생활의 비유와 논리적 도식화를 통해 이해하기
우리가 "새로운 아파트 단지를 건설하고 사람들을 입주시키는 거대한 프로젝트"를 진행한다고 가정해 봅시다.
CREATE: 새로운 데이터베이스나 테이블 생성 (방 만들기)ALTER: 기존 테이블의 구조를 변경 (방 확장하기, 기둥 추가하기)DROP: 테이블을 완전히 폭파하여 영구 삭제 (건물 철거하기)TRUNCATE: 테이블 구조는 남겨두고 안의 알맹이 데이터만 즉시 통째로 비우기INSERT: 새로운 데이터 추가 (새 입주민 전입신고)SELECT: 조건에 맞는 데이터 찾아오기 (특정 호실의 주민 찾기)UPDATE: 기존 데이터 내용 수정 (입주민 전화번호 변경)DELETE: 조건에 맞는 데이터 삭제 (퇴거 및 이사 나가기)GRANT: 특정 사용자에게 특정 DB 작업 권한을 부여REVOKE: 부여했던 권한을 다시 회수COMMIT: 임시 저장된 변경 사항을 디스크에 영구적으로 반영ROLLBACK: 마지막 COMMIT 이후의 모든 작업 내용을 전부 취소하고 되돌림SAVEPOINT: 롤백할 때 특정 지점까지만 되돌릴 수 있도록 북마크를 지정이 4가지 언어들은 따로 놀지 않고, 아래와 같이 유기적인 선후 관계와 파이프라인을 그리며 작동합니다.
[ 🔑 DCL (보안/권한 제어) ] ── 권한이 있어야 입장 가능!
│
▼ (권한 부여: GRANT)
│
[ 🏗️ DDL (공간/뼈대 정의) ] ── 구조가 세워져야 데이터가 저장 가능!
│
▼ (테이블 생성: CREATE TABLE)
│
[ ✍️ DML (실제 데이터 조작) ] ── 가상의 데이터들이 메모리상에 임시 배치됨
│
├─► [ 101호 김철수 이사 전입 ] (INSERT)
├─► [ 102호 이영희 정보 수정 ] (UPDATE)
│
▼ (안전성 검증: 트랜잭션)
│
[ 🛡️ TCL (트랜잭션/안전성 제어) ]
│
├── [ 에러/네트워크 끊김 없음? ] ──► (COMMIT) ──► 하드디스크에 영구 저장! 🎉
│
└── [ 입력 도중 예외나 장애 발생? ] ──► (ROLLBACK) ─► 작업 전 상태로 전원 퇴거! ↩️
###실무용 핵심 요약 팁