생활코딩 DATABASE2 MySQL 강의를 참고하여 SQL 기초에 대해 정리하겠습니다.
목차
- 관계형 데이터베이스
- MySQL 기초 문법(코드)
관계형 데이터베이스
SQL은 Structured Query Language로 관계형 데이터베이스를 다룰 때 사용되는 표준 언어입니다.
관계형 데이터베이스의 특징은 데이터를 표로 표시한다는 것입니다.
RDBMS(Realational DataBase Management System)은 관계형 데이터베이스를 관리하는 시스템을 말합니다.
MySQL은 대표적인 RDBMS입니다.
관계형 데이터베이스는 다음과 같이 구성됩니다.
데이터를 테이블 안에 저장하며 이 table의 묶음이 하나의 데이터베이스가 됩니다. 데이터베이스 서버는 이러한 데이터베이스를 여러개 갖을 수 있습니다.
MySQL 기초 문법(코드)
MySQL을 사용하여 관계형 데이터베이스를 만들어보겠습니다.
여기서는 데이터베이스와 테이블의 생성, 데이터의 CRUD를 간단하게 다룰 것입니다.
먼저 mysql을 잘 설치 후 명령창에서 mysql을 실행합니다. (설치 후 따로 mysql 환경변수 설정을 권장합니다.)
%mysql -uroot -p 명령어를 사용하고 비밀번호를 입력하면 실행할 수 있습니다.
-uroot는 유저로 루트에 접근하겠다는 의미고, -p는 따로 패스워드를 입력하겠다는 의미입니다.
(-p를 입력하지 않으면 입력하는 패스워드가 그대로 노출됩니다.)
데이터베이스와 테이블의 생성
CREATE DATABASE [데이터베이스 명]; // 데이터베이스 생성
DROP DATABASE [데이터베이스 명]; // 데이터베이스 제거
SHOW DATABASES; // 데이터베이스 목록
USE [데이터베이스 명]; 데이터베이스 선택
데이터는 테이블을 통해서 다루는데, 테이블에 접근하려면 먼저 해당 테이블이 있는 데이터베이스를 선택해야합니다.
데이터베이스를 선택하는 명령어는 USE 입니다.
테이블을 만들 때, 각 컬럼을 설정해 줘야합니다. 테이블은 다음과 같은 코드로 만들 수 있습니다.
USE [데이터베이스명];
CREATE TABLE [테이블명]
[칼럼1] [데이터타입] [설정(기본 형식)],
[칼럼2] [데이터타입] [설정(기본 형식)],
[칼럼3] [데이터타입] [설정(기본 형식)]
)
칼럼과 데이터타입은 필수이고 선택적으로 설정을 추가할 수 있습니다.
데이터타입에 관한 정보는 여기서 확인할 수 있습니다.
기본적으로 정수를 담는 INT와 긴 문자를 담는 TEXT, 변경 가능한 문자를 담는 VARCHAR 정도는 알아둡시다.
다음의 해당하는 표의 테이블을 만들어 보겠습니다.
USE mydb01;
CREATE TABLE topic(
id INT(11) NOT NULL AUTO_INCREMENT,
title VARCHAR(100) NOT NULL,
description TEXT NULL,
created DATETIME NOT NULL,
author VARCHAR(30) NULL,
profile VARCHAR(100) NULL,
PRIMARY KEY(id)
)
코드를 하나하나 보겠습니다. 먼저 첫 번째로 id 칼럼을 INT 타입으로 설정했습니다. NOT NULL 설정은 해당 칼럼이 비어있으면 안되도록 설정하는 것입니다. AUTO_INCREMENT 설정은 칼럼의 값이 1씩 증가하도록 설정합니다. 이렇게 칼럼의 설정은 뒤에 계속 붙여서 추가할 수 있습니다.
그리고 INT에 소괄호 치고 숫자를 넣었는데, 이는 명령창에 몇 개의 데이터(행)를 노출 시킬 것인 지를 의미합니다. 예를 테이블에 데이터가 100개가 있는데, 이 값이 11이면 11개의 데이터(행)들이 명령창에 노출 됩니다.
VARCHAR에 있는 소괄호의 값은 의미가 다릅니다. 이는 최대 글자 수를 의미합니다.
마지막으로 PRIMARY는 칼럼명이 아닌 예약어입니다. 어떠한 칼럼의 값을 기본키로, 유일한 값이 되게끔 설정합니다.
위의 코드에선 id칼럼의 값을 기본키로 설정했습니다.
데이터의 CRUD
CRUD는 Create, Read, Update, Delete로 데이터를 다루는 가장 기본적인 동작입니다.
당연히 테이블에 접근하므로 해당하는 데이터베이스를 선택합니다.
DESC 문으로 테이블의 구조를 확인할 수 있습니다.
USE mydb01
DESC topic // 테이블 구조 정보 (describe)
Creat
INSERT INTO topic (title,description,created,author,profile) VALUES('MySQL','MySQL is ...',NOW(),'egoing','developer');
INSERT INTO topic (title,description,created,author,profile) VALUES('SQL Server', 'SQL Server is ...', NOW(), 'duru', 'data administrator');
Read
SELECT * FROM topic;
// topic 테이블의 모든 칼럼의 모든 데이터를 표시
SELECT id,title,author FROM topic;
// id, title, author 칼럼의 데이터만 표시
SELECT id,title,author FROM topic WHERE aurthor='egoing';
// author가 egoing인 데이터를 표시
SELECT id,title,author FROM topic WHERE aurthor='egoing' ORDER BY id;
// 데이터를 id로 정렬하여 표시
SELECT id,title,author FROM topic WHERE aurthor='egoing' ORDER BY id LIMIT 2;
// 2개까지만 표시
ORDERD BY에 DESC를 추가하면 데이터를 내림차순으로 나열합니다.
Default 옵션은 오름차순(ASC)입니다.
앞에 나온 DESC 명령어와는 다릅니다.
여기선 descending의 약자입니다. ASC는 ascending의 약자.
Update and Delete
UPDATE topic SET description='ORACLE is ...', title='Oracle' WHERE ID = 2;
DELETE FROM topic WHERE id = 2;
update는 해당 하는 데이터를 SET으로 변경합니다. 이 SET은 description='ORACLE is ...', title='Oracle' 입니다.
어려운 건 없지만 항상 where을 설정하는 것을 주의합시다.
'컴퓨터과학 > 데이터베이스' 카테고리의 다른 글
[데이터베이스] Entity-Relationship Model - 모델링, ERD, 관계형 스키마 (0) | 2021.12.14 |
---|---|
[데이터베이스] Data Analytics with SQL - DW, OLAP (0) | 2021.12.05 |
[데이터베이스] SQL 총정리 1 (0) | 2021.10.27 |
[MySQL] SQL 추가 문법 정리 - 프로그래머스 SQL 고득점 kit (0) | 2021.03.01 |
[MySQL] JOIN 문 (0) | 2021.02.22 |
댓글