DATABASE2 | MySQL 1

yeonk·2022년 3월 4일
0

생활코딩

목록 보기
6/7
post-thumbnail

Relational database


MySQL, Oracle, SQL Server, PostgreSQL, DB2, Access 등의 제품이 있음

  • 데이터를 표의 형태로 정리 가능

  • 정렬, 검색과 같은 작업을 빠르고 간결하게 할 수 있음






SQL(Structured Query Language)


구조화된 쿼리(데이터베이스에 요청하는 개념) 언어

  • 행: row, record, 데이터 자체
  • 열: column, 데이터 구조






MySQL


  • 무료, 오픈 소스, 관계형 데이터 베이스의 주요 기능을 가짐

  • WEB이 발전하면서 위와 같은 장점으로 WEB과 함께 성장함

  • 코드를 통해 데이터를 조작할 수 있음






MySQL 설치 및 실행


  • bitnami 를 통해 설치

  • 설치할 때 password 지정 (이후에 계속 사용되니 잊으면 안된다)

  • cmd 에서 mySQL이 있는 경로로 이동

cd C:\Bitnami\wampstack폴더명\mySQL(또는 mariadb)\bin
  • mySQL 실행

    • uroot: root 사용자로 접속한다는 의미(u:user)
    • root는 관리자이기 때문에 모든 권한이 열려있음
    • root의 권한으로 데이터베이스를 직접 관리하는 것은 조금 위험할 수 있음
    • 중요한 시스템이라면 평소에는 다른 사용자로 사용을 하다가 필요할 때만 root로 사용하는 것이 좋음
    • p: password
mysql -uroot -p
  • password 치기






MySQL의 구조


  • 정보가 증가함에 따라 데이터를 담고 있는 표(table)의 수도 많아짐 -> 정리 필요

  • 서로 연관된 표들을 그룹핑 -> 데이터 베이스(database = schema)

  • 데이터베이스 서버 (database server): 여러 스키마들을 모아놓은 것






데이터 베이스의 효용


  • 보안: 데이터 베이스는 자체 보안 체계가 있어 안전하게 데이터를 보관할 수 있음

  • 권한 기능: 다른 사람이 읽기, 쓰기, 수정, 삭제가 가능하도록 권한 설정 가능






MySQL 실습


데이터베이스 생성

CREATE DATABASE 데이터베이스명;

데이터베이스 삭제

DROP DATABASE 데이터베이스명;

데이터 베이스 확인 (둘 중 하나 사용)

SHOW DATABASES;
SHOW SCHEMAS;

데이터베이스 사용

USE 데이터베이스명;






표(table) 생성

database는 데이터 타입을 정할 수 있음.
cheat sheet를 참고해서 작성하면 좋다고 함


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));
    
  • INT(m), VARCHAR(size), TEXT

    • INT: 데이터 타입(정수)
    • m: 검색 시 얼마까지 노출할 것인지 설정하는 것
    • TEXT: 문자열 데이터 타입
    • VARCHAR: 문자열 데이터 타입(variable-length string)
    • size: 문자 최대 길이
  • NOT NULL: 반드시 기입해야하는 정보 ex: id

  • AUTO_INCREMENT: 자동으로 1씩 증가

  • PRIMARY KEY(x): 메인키 지정 (x) / 중복을 막아주는 장점






MySQL CRUD

INSERT문 (CREATE)

DESC topic;

INSERT INTO topic (title, description, created, author, profile) VALUES('MySQL', 'MySQL is ...', NOW(), 'egoing', 'developer');

SELECT * FROM topic;
  • DESC 테이블명: 테이블의 구조를 확인할 수 있음






SELECT문 (READ)

  • mysql select syntax로 검색해보기
  • select문이 매우 중요하고 수련이 필요한 부분..!!
# topic 테이블의 모든 행 출력
SELECT * FROM 테이블명; 
SELECT * FROM topic; 

# 원하는 행의 정보만 출력
SELECT 행이름, 행이름, 행이름 FROM topic;
SELECT id, title, created FROM topic;

# 특정 요소로 필터
SELECT 행이름, 행이름, 행이름 FROM topic WHERE 행이름='요소';
SELECT id, title, created FROM topic WHERE author='egoing';

# 정렬하기 (내림차순)
SELECT 행이름, 행이름, 행이름 FROM topic WHERE 행이름='요소' ORDER BY DESC;
SELECT id, title, created FROM topic WHERE author='egoing' ORDER BY DESC;

# 보여지는 데이터 수 제한하기
SELECT 행이름, 행이름, 행이름 FROM topic WHERE 행이름='요소' ORDER BY DESC LIMIT;
SELECT id, title, created FROM topic WHERE author='egoing' ORDER BY DESC LIMIT 2;






UPDATE 문

# 특정 내용 변경하기
UPDATE 테이블명 SET 행이름='변경할 내용', 행이름2='변경할 내용2' WHERE 메인 행 이름='기준값';

UPDATE topic SET description='Oracle is ...', title='Oracle' WHERE id='2';






DELETE 문

DELETE FROM 테이블명 WHERE 메인 행 이름='기준값';
DELETE FROM topic WHERE id='5';






참고 자료


생활코딩-DATABASE2

MySQL: Data Types

MySQL Table

INSERT INTO Syntax

0개의 댓글