2. 데이터베이스의 목적
- 데이터베이스에 정보를 작성하면 웹사이트에 올라가 많은 사람들이 볼 수 있음.
- 웹에서 정보를 작성하면 데이터베이스에 저장됨.
4. MySQL의 구조
- 표(table): 데이터의 기본 저장 구조
- 데이터베이스(스키마): 표의 연관된 데이터들을 그룹핑해서 정리할 때 사용하는 일종의 폴더
- 데이터베이스 서버: 스키마를 저장 및 운영하는 프로그램
5. 서버접속
- ./mysql -uroot -p (p 다음에 바로 비밀번호를 입력해도 되지만 보안상 안전하지 않기 때문에 엔터 치고 비밀번호 요구할 때 입력해야 함)
- root: 기본 유저. 관리자
6. 스키마의 사용
- 데이터 생성: CREATE DATABASE menagerie;
- 데이터 삭제: DROP DATABASE menagerie;
- 데이터 열람: SHOW DATABASE menagerie;
- 데이터 사용: USE DATABASE menagerie;
7. SQL과 테이블의 구조
- SQL: Structured Query Language
- row: 행, 데이터 자체
- column: 열, 데이터의 구조
8. 테이블의 생성
- column에 데이터 타입을 강제할 수 있음.
- id 값은 꼭 있어야 하지만, 본문은 값이 없어도 추가할 수 있음.
- NOT NULL: 공백을 허용하지 않음.
- AUTO_INCREMENT: 자동으로 id값 하나씩 증가
- ex.
CREATE TABLE topic(
id INT(11) NOT NULL AUTO_INCREMENT,
title VARCHAR(100) NOT NULL,
description TEXT NULL,
created DATATIME NOT NULL,
author VARCHAR(30) NULL,
profile VARCHAR(100) NULL,
PRIMARY KEY(id));
- 비밀번호 변경: SET PASSWORD = PASSWORD();
9. CRUD
- Create, Read, Update, Delete
10. INSERT
- DESC topic; : topic의 구조를 보여줌
- INSERT INTO topic (title, description, created, author, profile) VALUES('MySAL', 'MySQL is ...', NOW(), 'egoing', 'developer');
- SELECT * FROM topic; : topic에서 데이터를 가져옴 (*: 모두)
11. SELECT
- SELECT [옵션] FROM topic; : 옵션의 데이터만 보여줌
12. UPDATE
- UPDATE topic SET decription='Oracle is ...', title='Oracle' WHERE id=2;
- WHERE문 꼭 활용
13. DELETE
- DELETE FROM topic WHERE id = 5; : id값이 5인 데이터를 삭제
15. 관계형데이터베이스의 필요성
- 테이블이 분리되어 있으면 관리 및 유지 보수가 쉬워짐.
- 저장은 분산해서 하고, 출력은 합쳐서 출력 가능.
16. 테이블 분리
- ex.
--
-- Table structure for table `author`
--
CREATE TABLE `author` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
`profile` varchar(200) DEFAULT NULL,
PRIMARY KEY (`id`)
);
--
-- Dumping data for table `author`
--
INSERT INTO `author` VALUES (1,'egoing','developer');
INSERT INTO `author` VALUES (2,'duru','database administrator');
INSERT INTO `author` VALUES (3,'taeho','data scientist, developer');
--
-- Table structure for table `topic`
--
CREATE TABLE `topic` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(30) NOT NULL,
`description` text,
`created` datetime NOT NULL,
`author_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
);
--
-- Dumping data for table `topic`
--
INSERT INTO `topic` VALUES (1,'MySQL','MySQL is...','2018-01-01 12:10:11',1);
INSERT INTO `topic` VALUES (2,'Oracle','Oracle is ...','2018-01-03 13:01:10',1);
INSERT INTO `topic` VALUES (3,'SQL Server','SQL Server is ...','2018-01-20 11:01:10',2);
INSERT INTO `topic` VALUES (4,'PostgreSQL','PostgreSQL is ...','2018-01-23 01:03:03',3);
INSERT INTO `topic` VALUES (5,'MongoDB','MongoDB is ...','2018-01-30 12:31:03',1);
17. JOIN
- SELECT * FROM topic LEFT JOIN author ON topic.author_id = author.id; : author_id 값과 id 값이 같은 행끼리.
18. 인터넷과 데이터베이스
- client: 요청자, server: 제공자
- MySQL monitor, MySQL Workbench: database client
19. MySQL Client
- MySQL monitor: 명령어 기반 데이터베이스 클라이언트
- MySQL Workbench: GUI 기반 데이터베이스 클라이언트
'WEB > 개념 정리' 카테고리의 다른 글
SQL Injection 개념 정리 (0) | 2021.03.26 |
---|---|
XSS 공격 개념 정리 (0) | 2021.02.28 |