본문 바로가기
데이터베이스

데이터 베이스 MySQL 1

by eunjineee 2024. 2. 2.

데이터베이스

여러 사람이 공용으로 사용하기 위해 통합하고 저장한 운영 데이터의 집합

데이터의 저장 공간 자체를 의미하기도 함

DBMS 특징

  • 데이터의 무결성
  • 데이터의 독립성 : 데이터 베이스와 응용 프로그램은 독립적 관계
  • 보안
  • 데이터 중복 최소화
  • 응용프로그램 제작 및 수정 용이
  • 데이터의 안전성 향상 : 복원 또는 복구 가능

DBMS의 분류

  • 계층형 DBMS
    • 1 : N
  • 망형
    • 1 : 1, 1 : N, N : M 지원
    • 효과적이고 빠른 데이터 추출 가능
    • 복잡한 내부 포인터
    • 프로그래머가 모든 구조를 이해해야만 함
    • 잘 안씀
    • 시험 나옴
  • 관계형
    • 테이블 간 관계 > 기본키, 외래키를 사용하여 맺음(부모 자식 관계)
    • 업무 변화에 띠리 바로 순응, 유지보수 측면에서 편리
    • 시스템 자원 많이 차지 > 느려질 수 있음

SQL

데이터 베이스를 조작하는 언어

특징

DBMS 제작 회사와 독립적임

이식성이 좋음

표준이 계속 발전

대화식 언어

클라이언트/서버 구조 지원

MySQL

오픈소스로 제공

오라클에서 제작한 DBMS 소프트웨어

SELECT 문

SELECT … FROM

가장 많이 사용

기본적인 구문

SELECT FROM WHERE 세트

USE 구문

USE 데이터베이스_이름;

사용할 데이터베이스를 먼저 지정해야 함

더블클릭으로도 가능

  • SHOW DATABASES;
  • 현재 서버에 어떤 DB가 있는지 보기
  • SHOW TABLES STATUS;
  • 테이블정보 조회
  • DESCRIBE employees;테이블의 열이 무엇이 있는지 확인
  • DESC 테이블이름;

문제 생긴 DB 초기화하기

DROP DATABASE IP EXISTS sqlDB;
CREATE DATABASE sqlDB;

 

DB 파일 저장시 깨짐 방지

  • CSV로 저장하고 메모장으로 열기 > 다른 이름으로 저장하고 ansi로 열면 됨

smallint는 2바이트

auto_incredment 자동으로 1씩 증가시켜줌

WHERE 절

  • 집계함수를 사용할 수 없다
  • (group by된 절들은 having 조건을 줘야한다)

or

and

조건연산자

관계연산자

select문

BETWEEN AND

IN( )

LIKE

% : 무엇이든 허용

_ : 한글자 허용

ANY : 서브 쿼리의 여러개 결과 중 하나만 만족해도 출력

ALL

SOME = any

서브쿼리문

서브쿼리먼저 실행해야 값을 비교할 수 있어서 메인퉈리 순서로 실행된다

any

# or랑 같음
select userid, name
from usertbl
where height > any (select height
				from usertbl
				where name = '김경호');

some

# or랑 같음
select userid, name
from usertbl
where height > some (select height
				from usertbl
				where name = '김경호');
# 두 개 같은 코드
select userid, name
from usertbl
where height = any (select height
				from usertbl
				where name = '김경호');

select userid, name
from usertbl
where height in (select height
				from usertbl
				where name = '김경호');

정렬

ORDER BY

기본적으로 오름차순

DISTINCT

LIMIT

GROUP BY : 집계함수류가 나오면 무조건 포함되어야하는 절, 그룹을 지어서 판단

(함수를 꼭 써야함)

집계함수

avg, max, min,count, count(distinct), stdev, var_samp

HAVING

WITH ROLLUP : 총합, 중간 집계

복사

create table 새로운 테이블 (select 복사할 열 from 기존테이블)

use sqldb;

drop table if exists buytbl_copy;

create table buytbl_copy(
											  	select * 
											  	from buytbl
);

복시를 하더라도 PK, FK는 복사되지 않는다

  • 다시 수정해서 재정의해줘야함

as : 컬럼명을 바꾸어서 출력