DINGA DINGA
Published 2021. 3. 7. 15:36
[생활코딩] MySQL 정리 WEB/개념 정리
728x90

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 기반 데이터베이스 클라이언트

728x90

'WEB > 개념 정리' 카테고리의 다른 글

SQL Injection 개념 정리  (0) 2021.03.26
XSS 공격 개념 정리  (0) 2021.02.28