쿠쿠더님의 블로그

데이터베이스 1일차(Mysql 다운로드와 SQL 기초 쿼리문) 본문

MYSQL

데이터베이스 1일차(Mysql 다운로드와 SQL 기초 쿼리문)

쿠쿠더 2025. 3. 10. 17:52
  • 데이터베이스 란?
    • 데이터베이스 장점 단점
    • SQL
    • 데이터 베이스의 발전 
    • 데이터베이스 관리 시스템(DBMS)
    • SQL(Strurured Query Language)
    • 데이터베이스의 작업 단위 트랜잭션 
    • 작업 단위의 원칙 
  • MYSQL 
    • 관계형 데이터베이스의 개념

 

데이터 베이스란 ? 

정보를 규칙적 체계적으로 저장 관리 하기 위한 시스템이다.
소프트웨어를 개발할때 필요한 데이터를 효율적으로 관리 하기위해서 사용하는것.

 

장점 단점
데이터 독립성 비용적인 문제 ( 공짜도 많은)
데이터의 중복 통제 가능 백업과 회복 방법이 복잡하다.
데이터 동시 공유 중앙 집중 관리로 인한 취약점 존재 
데이터베이스 권한 검증을 통한 보안   

 

 

데이터 베이스의 발전 

데이터 베이스의 발전

 

파일 시스템 

데이터베이스의 발전  
파일 시스템  초기의 데이터 저장 방식은 파일 시스템이다. 
계층형 데이터베이스 트리 구조를 기반으로 하는 계층 데이터 모델 입니다.
장점 : 어떤 유형의 응용에 대해서는 빠른 속도와 높은 효율성을 제공 
단점 : 어떻게 데이터를 접근하는가를 미리 응용 프로그램에 정의해야 함 
          데이터베이스가 생성될 떄 각각의 관계를 명시적으로 정의해야함
관계형 데이터베이스   데이터가 열과 행의 테이블 하나 이상에 저장되는 사전 정의된 관계로 데이터를 구성 하는 정보 모음 
장점 : 데이터의 일관성과 무결성을 보장할 수 있으며, 표준화된 SQL을 사용하기 떄문에 다른 데이터베이스 모델에 비해 학습이 쉽고, 데이터 처리하는 속도가 빠릅니다.
담점 : 대용량 데이터 처리에 한계가 있고, 복잡한 데이터 구조를 처리하기에는 어렵습니다.
NoSql 데이터 베이스   비관계형 데이터베이스 유형을 가르키며 데이터베이스는 관계형 테이블과는 다른 형식으로 데이터를 저장합니다. 그리고 테이블 , 칼럼과 같은 스키마를 가지지 않고  대규모 확대가 가능하도록 수평적 확장성을 가져 대규모의 데이터를 유연하게 처리할 수 있다. 
특징으로는 비일관성 , 분산저장 , Schema-less
장점 : 스키마가 없기 떄문에 유연하다.
단점 : 데이터 중복이 존재하다. ( 계속 업데이트 해야되는 단점)

 

 

데이터베이스 관리 시스템(DBMS)

- 데이터 베이스를 생성하고 관리하는 소프트웨어

- 소프트웨어가 하는 역할을 데이터의 저장, 검색, 수정, 삭제 

- 보안과 권한을 관리 

 

SQL(Strurured Query Language)

- SQL은 관계형 데이터 베이스의 데이터를 제어하는 언어이다.

1.DDL(data Definition language) 데이터의 정의어 : create alter drop 2. DML (data Manipulation language) 데이터의 조작어 :INSERT,UPDAT,DELETE 3.DQL(data query language) 데이터의 조회어 :SELETE 4.DCL(data controller language) 데이터의 제어어: GRATE,REMOVE
테이블의 관계의 구조를 생성하는데 사용하는 구문 테이블의 데이터 검색, 생성, 수정, 삭제(CRUD) 테이블의 값을 검색할때 사용 데이터의 사용 권한을 관리하는데 사용
테이블의 관계의 구조를 생성하는데 사용하는 구문

   

 

 

여기서 데이터베이스의 작업 단위인 트랜잭션이라고 있는데 이것도 알고있으면 좋다.

 

 

작업 단위의 원칙(ACID)

원자성(Atomicity) 모든 작업이 성공해야 한다.
일관성(Consistency) 데이터의 무결성을 유지한다.
고립성(Isolation) 여러 트랜잭션이 독립적으로 실행된다.
지속성(Durability) 트랜잭션이 완료되면 영구적으로 데이터를 저장한다.

 

 

Mysql [오픈소스로 많이 제공되고 있고 무료 데이터베이스이다.]

 

관계형 데이터베이스의 개념

테이블 데이터를 저장하는 기본 단위
레코드 하나의 데이터의 단위
속성과 저장할 데이터의 속성 혹은 필드라는 값의 단위
기본키 각 행의 고유 식별자(검색 속도에 영향을 준다.)
외래키 다른 테이블의 관계성을 나타내는 키(제약 조건)

 

설치하는방법 

#환경 변수 확인

# mysql 접속 
mysql -u root -p 
# password 입력 창

# 경로를 시스템 환경변수로 지정 
# C:\Program Files\MySQL\MySQL Server 8.0\bin
# 이런식으로 설치된 소프트웨어의 경로 
# bin 폴더 경로에서 mysql 구문을 사용가능

# 시스템 환경변수로 지정
# 돋보기 누르고 시스템 환경변수 편집 창 열고
# 환경변수 버튼 누르고
# 유저에 대한 사용자 변수에 Path 클릭 새로추가로 
# C:\Program Files\MySQL\MySQL Server 8.0\bin 경로 넣고 확인 

show databases; # database 조회

## 데이터베이스 생성 
create database 데이터베이스 이름;
# 스키마
create schme 데이터베이스 이름;

## 여러개의 테이블을 관리하는것이 데이터 베이스 
drop database 데이터베이스 이름;

 

데이터베이스의 테이블이란?

데이터를 나타내는 표의 형태 

1. 컬럼(열) : 테이블의 새로 항목 데이터의 유형의 표현

2. 로우(행) : 테이블의 가로 항목의 컬럼의 값들을 하나의 로우의 구성

 

| id | name  | class_id     | data       | 
| 1  | soon  |      1       | 2025-03-10 | 
| 2  | soon2 |      1       | 2025-03-10 | 
| 3  | soon3 |      1       | 2025-03-10 | 

| id | class      |   content |
| 1  | blockChain |    text   |
| 2  | blockChain |    text   |

 

RDBMS의 특징

- 중복되는 데이터를 최소화 시킨다.

- 테이블의 관계성을 맺어서 중복되는 데이터를 최소화 시킨다.

 

필드의 타입

 

1. 문자형 데이터 타입 

데이터 타입  설명
CHAR 고정 길이의 문자형 설정하 문자의 크기가 5 우리가 저장한 문자의 크기가 3이면 2자리는 공백으로 채워진다. 5의 크기만큼씩 저장이 고정된다.
VARCHAR 가변 길이의 문자형 정의한 길이보다 적게 사용한 경우 문자형에 맞게 데이터의 크기를 저장한다. 5자로 설정을 했는데 3자를 사용하면 3자리만큼의 데이터의 크기로 저장한다.
TEXT 65,535개의 문자를 사용할수 있는 타입 너무 큰 텍스트의 내용을 사용하면 텍스트 파일로 관리하는게 효과적 , 최적화 관련해서 사용하기 위해서는 문서를 파일로 만들어서 경로를 저장한후 파일 시스템으로 가져와서 사용하는게 효과적 
BLOB 이미지처럼 큰 파일을 저장할수 있는 문자열 데이터로 저장할때 사용할수 있다.
( 요즘에 사용하지 않고 클라우드 저장소나 이미지를 저장한 경로를 사용한다.)

 

2. 숫자형 데이터 형식 

데이타 타입 설명
INT 정수형 -2,147,483,648 ~ 2,147,483,647 (UNSIGNED가 있을때는 범위가 0 ~ 4,294,967,295 음수가 될수 없다. )
BIGINT -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 숫자를 사용할수 있다.
DOUBLE 부동 소수와 다르게 근사값을 저장한다. 소수점의 숫자를 저장할수 있는 타입

 

3. 날짜형

데이터 타입 설명
DATE  2025-03-10 이런식으로 날짜의 데이터를 저장할수 있는 타입 yyyy-mm-dd 형식을 사용한다.

 

MySQL 쿼리문 

테이블 생성 

//TABLE 조회 
SHOW TABLES;

// TABLE 생성 
CREATE TABLE store ( 필드명  타입 옵션, 필드명 타입 옵션 ) 

예)
CREATE TABLE store ( 
    id INT AUTO_INCREMENT  PRIMARY KEY,
    name VARCHAR(10)
);

// 테이블 필드명 확인
DESC store;

// 테이블 값 추가 
INSERT INTO store ( name  ) VALUES ("상품 1");

//값 조회
// * 모든 내용에서 찾겠다. 
SELECT * from store;

// read
// * 부분
// select 조회할 테이블의 필드명 from 테이블 이름
SELECT user_id, user_pw FROM user;

// 테이블에 soo2라는 값이 저장되어 있는지 확인하고 있으면 조회
// WHERE 조건문을 사용해서 원하는 값이 포함된 필드의 값을 찾아서 조회한다.
// WHERE 조건문에 같이 사용할수 있는 옵션 구문 AND와 OR
SELECT * FROM user WHERE user_id="soon2" OR user_pw="123";

// 테이블의 값을 수정
// SET 값을 할당하는 옵션
// WHERE에 고유 식별자를 사용해서 수정을 하면 최적화가 된다. 
UPDATE user SET user_id="soon2" WHERE user_id="soon5";

//DELETE
//user안에서  id가 2인값을 삭제한다.
DELET FROM user WHERE id=2;

// user라는 테이블을 삭제한다.
DROP TABLE user;

// 기본키값이 없어
// 고유 식별자가 없다
// 기본키는 고유 식별자 하나의 테이블에 하나의 필드만 존재할수 있다
// 유니크 키는 테이블의 여러개의 필드를 생성할수 있다.
// 조회가 빈번하게 일어나지 않는 테이블은 기본키가 없이 만드는게 더 효율적이다.
// 데이터의 생성이 많이 일어난다 그럼 기본키를 생성하게 되면은 데이터를 추가하는 속도가 느려진다.
DESC user;

// 데이터베이스 사용
use [데이터베이스 이름]

// 테이블의 선택 값 조회
SELECT [필드명, 필드명2] FROM [테이블의 이름]; 

// 테이블의 값을 조회할때 오름차순 내림차순
// DESC 내림차순
SELECT * FROM [테이블이름] ORDER BY [필드이름] DESC;
// ASC 오름차순
SELECT * FROM [테이블이름] ORDER BY [필드이름] ASC;

 

과제 

### 유저의 회원 정보로 가입했을때 저장할 테이블을 만들어 주세요 
### 테이블의 이름은 users로 해주시고
### 저장할 유저의 데이터는 유저 아이디와 비밀번호, 닉네임, 성별, 생성시간 
### 유저의 아이디는 문자열 비밀번호는 문자열 닉네임은 문자열 성별도 문자열 생성시간 
### 타임스템프 DATE 타입
### 유저의 아이디는 고유한 식별자로 만들어주세요 
### 유저의 아이디와 비밀번호와 닉네임은 값이 입력이 안되고 성별은 입력이 안되어도 된다.
### 시간은 입력받지말고 기본값 설정
### 아이디로 조회를 하면 해당 유저의 비밀번호를 조회해주세요 

CREATE TABLE users (
    user_id VARCHAR(10) NOT NULL PRIMARY KEY,
    user_pw VARCHAR(20) NOT NULL,
    name VARCHAR(10) NOT NULL,
    gender ENUM('male','female'),
    data DATETIME DEFAULT now()
);

drop table users;

select * from users;

INSERT INTO users (user_id, user_pw,gender, name) VALUES("soon123","123",'male',"soon");
INSERT INTO users (user_id, user_pw,gender, name) VALUES("soon2","1234",'female',"soon2");
INSERT INTO users (user_id, user_pw,gender, name) VALUES("soon3","1235",'female',"soon3");
INSERT INTO users (user_id, user_pw,gender, name) VALUES("soon4","1236",'male',"soon4");
INSERT INTO users (user_id, user_pw,gender, name) VALUES("soon5","1237",'female',"soon5");
INSERT INTO users (user_id, user_pw,gender, name) VALUES("soon6","1238",'male',"soon6");


select user_pw from users where user_id="soon6";

 

끝~~~~~~~~~

'MYSQL' 카테고리의 다른 글

시퀄라이즈란?  (0) 2025.04.21
MYSQL의 인덱싱과 B-tree  (0) 2025.04.21
MYSQL에 NODEJS에서 암호화 하는방법  (0) 2025.03.18
관계형 데이터베이스와 제약조건  (0) 2025.03.18
nodejs 와 mysql 연결  (0) 2025.03.18