오늘은 Xampp 설치부터 시작했다. DB를 시작한다는 뜻이다.
개발환경 세팅을 쉽게해주는 툴 -> xampp
MySql
-서버 : 데이터를 전달해준다.
-클라이언트
웹
-서버 (아파치, nginx)
-클라이언트 (브라우저(클라이언트 프로그램))
클라이언트에 요청을 하면 서버가 전달해준다.
MySql != DB, MySql == DB
DBMS(MySql) -> 관리
MySql은 데이터베이스들을 관리한다.
데이터베이스 안에 데이터는 테이블(table)안에 표로 이루어져 있다.
터미널에서 확인할 수 있지만 보기 힘들기 때문에 MySqlyog를 다운 받아서 사용한다. 나는 맥 환경이라 다른걸 설치해야한다. 그래서 MySql workench를 설치했다.
사용법을 대충 톮아보면,
MySql 데이터 타입
문자형 데이터 타입
데이터 유형 | 정의 |
---|---|
CHAR(n) | 고정 길이 데이터 타입(최대 255byte)- 지정된 길이보다 짦은 데이터 입력될 시 나머지 공간 공백으로 채워진다. |
VARCHAR(n) | 가변 길이 데이터 타입(최대 65535byte)- 지정된 길이보다 짦은 데이터 입력될 시 나머지 공간은 채우지 않는다. |
TINYTEXT(n) | 문자열 데이터 타입(최대 255byte) |
TEXT(n) | 문자열 데이터 타입(최대 65535byte) |
MEDIUMTEXT(n) | 문자열 데이터 타입(최대 16777215byte) |
LONGTEXT(n) | 문자열 데이터 타입(최대 4294967295byte) |
JSON | JSON 문자열 데이터 타입 - JSON 형태의 포맷을 꼭 준수해야 한다. |
숫자형 데이터 타입
데이터 유형 | 정의 |
---|---|
TINYINT(n) | 정수형 데이터 타입(1byte) -128 ~ +127 또는 0 ~ 255수 표현할 수 있다. |
SMALLINT(n) | 정수형 데이터 타입(2byte) -32768 ~ 32767 또는 0 ~ 65536수 표현할 수 있다. |
MEDIUMINT(n) | 정수형 데이터 타입(3byte) -8388608 ~ +8388607 또는 0 ~ 16777215수 표현할 수 있다. |
INT(n) | 정수형 데이터 타입(4byte) -2147483648 ~ +2147483647 또는 0 ~ 4294967295수 표현할 수 있다. |
BIGINT(n) | 정수형 데이터 타입(8byte) - 무제한 수 표현할 수 있다. |
FLOAT(길이, 소수) | 부동 소수형 데이터 타입(4byte) -고정 소수점을 사용 형태이다. |
DECIMAL(길이, 소수) | 고정 소수형 데이터 타입고정(길이+1byte) -소수점을 사용 형태이다. |
DOUBLE(길이, 소수) | 부동 소수형 데이터 타입(8byte) -DOUBLE을 문자열로 저장한다. |
날자형 데이터 타입
데이터 유형 | 정의 |
---|---|
DATE날짜(년도, 월, 일) | 형태의 기간 표현 데이터 타입(3byte) |
TIME시간(시, 분, 초) | 형태의 기간 표현 데이터 타입(3byte) |
DATETIME | 날짜와 시간 형태의 기간 표현 데이터 타입(8byte) |
TIMESTAMP | 날짜와 시간 형태의 기간 표현 데이터 타입(4byte) -시스템 변경 시 자동으로 그 날짜와 시간이 저장된다. |
YEAR | 년도 표현 데이터 타입(1byte) |
이진 데이터 타입
데이터 유형 | 정의 |
---|---|
BINARY(n) & BYTE(n) | CHAR의 형태의 이진 데이터 타입 (최대 255byte) |
VARBINARY(n) | VARCHAR의 형태의 이진 데이터 타입 (최대 65535byte) |
TINYBLOB(n) | 이진 데이터 타입 (최대 255byte) |
BLOB(n) | 이진 데이터 타입 (최대 65535byte) |
MEDIUMBLOB(n) | 이진 데이터 타입 (최대 16777215byte) |
LONGBLOB(n) | 이진 데이터 타입 (최대 4294967295byte) |
그렇게 설치와 기본 개념을 좀 보고 sql 문제를 풀어보았다.
# 전체 데이터베이스 리스팅
SHOW databases;
# `mysql` 데이터 베이스 선택
USE mysql;
# 테이블 리스팅
show TABLES;
# 특정 테이블의 구조
DESC user;
# `test` 데이터 베이스 선택
use test;
# 테이블 리스팅
show tables;
# 기존에 a1 데이터베이스가 존재 한다면 삭제
Drop DATABASE if EXISTS a1;
# 새 데이터베이스(`a1`) 생성
CREATE DATABASE a1;
# 데이터베이스(`a1`) 선택
use a1;
# 데이터베이스 추가 되었는지 확인
show databases;
# 테이블 확인
show tables;
# 게시물 테이블 article(title, body)을 만듭니다.
# VARCHAR(100) => 문자 100개 저장가능
# text => 문자 많이 저장가능
CREATE TABLE article(
title char(100),
body TEXT);
# 잘 추가되었는지 확인, 리스팅과 구조까지 확인
SHOW TABLES;
DESC article;
# 데이터 하나 추가(title = 제목, body = 내용)
INSERT INTO article
SET title = '제목1',
body = '내용1';
# 데이터 조회(title 만)
SELECT title
FROM article;
# 데이터 조회(title, body)
SELECT *
FROM article;
# 데이터 조회(body, title)
SELECT body,
title
FROM article;
# 데이터 조회(*)
SELECT *
FROM article;
# 데이터 또 하나 추가(title = 제목, body = 내용)
INSERT INTO article
SET title = '제목1',
body = '내용1';
# 데이터 조회(*, 어떤게 2번 게시물인지 알 수 없음)
SELECT *
FROM article;
# 테이블 구조 수정(id 칼럼 추가, first)
ALTER TABLE article ADD COLUMN id int(10);
# 데이터 조회(*, id 칼럼의 값은 NULL)
SELECT *
FROM article;
# 기존 데이터에 id값 추가(id = 1, id IS NULL)
UPDATE article
SET id = 1
WHERE id IS NULL;
# 데이터 조회(*, 둘다 수정되어 버림..)
SELECT *
FROM article;
# 기존 데이터 중 1개만 id를 2로 변경(LIMIT 1)
UPDATE article
SET id = 2 LIMIT 1;
# 데이터 조회(*)
SELECT *
FROM article;
# 데이터 1개 추가(id = 3, title = 제목3, body = 내용3)
INSERT INTO article
SET title = '제목3',
body = '내용3',
id = 3;
# 데이터 조회(*)
SELECT *
FROM article;
# 2번 게시물, 데이터 삭제 => DELETE
DELETE
FROM article
WHERE id = 3;
# 데이터 조회(*)
SELECT *
FROM article;
# 날짜 칼럼 추가 => regDate DATETIME
ALTER TABLE article ADD COLUMN regDate DATETIME FIRST;
# 테이블 구조 확인
DESC article;
# 데이터 조회(*, 날짜 정보가 비어있음)
select *
from article;
# 1번 게시물의 비어있는 날짜정보 채움(regDate = 2018-08-10 15:00:00)
UPDATE article
set regDate = '2018-08-10 15:00:00'
where id = 1;
# 데이터 조회(*, 이제 2번 게시물의 날짜 정보만 넣으면 됩니다.)
select *
from article;
# NOW() 함수 실행해보기
SELECT now();
# 3번 게시물의 비어있는 날짜정보 채움(NOW())
UPDATE article
set regDate = now()
where id = 3;
# 데이터 조회(*)
select *
From article;
now() 함수가 제대로 먹지 않는 에러때문에 계속 막혀있었는데 기존에 사용하던 MySpl을 삭제하고 xampp의 MySql 서버만 사용하니까 잘 됐다. 이거 해결하는데 시간 너무 많이 잡아먹어서 강의를 제대로 듣지 못했다. 오늘은 수업 끝나면 하나 더 남은 문제를 풀어야겠다. 원래는 게시판 더 해보려고 했는데 그건 주말에 해야될 것 같다. 오늘 배운건 오늘 복습해야지 안그러면 휘발된다.
'Coding History' 카테고리의 다른 글
DB와 DBMS와 RDBMS를 알아보자 (0) | 2024.07.07 |
---|---|
2024. 07. 05 쿼리문 기본 문제 풀이 (0) | 2024.07.05 |
국비 지원 IT(웹앱개발) 취업반 강의 21일차 (ArticleManager) (0) | 2024.07.04 |
2024. 07. 04 문제풀이 (0) | 2024.07.04 |
2024 07. 03 ArticleManager 공부 (0) | 2024.07.03 |