Data : 가공안된 사실값
Database : 데이터를 모아놓은 논리적 집합
DBMS : database management system(software)
RDBMS(Relational DBMS) : 중복데이터를 제거한 데이터의 효율적 저장 방식 제안
SQL(Structured Query Language) : RDBMS의 데이터를 관리하기 위한 특수한 목적을 갖는 언어
데이터 중복 최소화
RDBMS는 2차원 형태의 테이블이라는 객체에 데이터 저장
데이터 성격에 따라 분할해 데이터 저장
중복 데이터 저장을 최소화(데이터 저장 비용 절감)
SQL을 이용한 가벼운 데이터처리
데이터 CRUD를 SQL로 수행
SQL은 사람과 RDBMS간 데이터 처리를 위한 의사소통 언어
직관적
트랜잭션 처리
Transaction == 거래
오류 발생 시 거래 자체가 없었던 것으로 취급
데이터 무결성(integrity)
데이터베이스에 저장된 데이터의 일관성, 정확성, 신뢰성을 보장
데이터 품질 보장
잘못된 형태의 데이터는 입력이 안됌 -> 무결성 보장
종류
Oracle - 1979년부터 SQL을 사용한 최초의 상용 RDBMS
MySQL - 전형적인 RDBMS
SQL Server
PostgreSQL
DB2
MariaDB
MySQL의 구조
1) MySQL 서버
- MySQL에 접속해 SQL 문장을 실행하면 MySQL이 결과를 보여줌
2) User
- MySQL을 사용하기 위한 계정
- MySQL 설치 시 관리자 계정인 root 계정 자동 생성
- root 계정으로 접속해서 다른 사용자 계정을 생성해 사용
3) 데이터베이스와 스키마
- MySQL에서 스키마와 데이터베이스는 같은 개념
- 테이블을 포함한 다양한 데이터베이스 객체를 담아 놓는 논리적인 저장 공간
4) 데이터베이스
- 데이터베이스 안에 생성해 사용할 수 있는 다양한 객체
- 테이블 외에도 뷰, 인덱스 등이 있음
SQL(Structured Query Language)
구조적 질의 언어, 표준이 존재하므로 SQL을 알면 다양한 RDBMS에서 사용가능
데이터 관리 : CRUD
집합적 언어 : 어떤 조건에 맞는 데이터들을 한번에 모두 처리
ANSI(American National Standards Institude) 표준, ISO(International Standards Organization) 표준
SQL 구문이 RDBMS라고 모두 동일한건 아님
종류
- DDL : CREATE, ALTER, DROP, TRUNCATE TABLE, RENAME TABLE
- DML : SELECT, INSERT, UPDATE, DELETE
- TCL : COMMIT, ROLLBACK, STARTTRANSACTION, SAVEPOINT, SET autocommit
- DCL : GRANT, REVOKE
Table
정의
RDBMS에서 데이터를 저장하는 2차원 형태의 객체
데이터를 가장 파악하기 쉬운 구조인 표
다양한 속성들을 가진 데이터의 집합
테이블의 구조
-
칼럼:데이터의 속성을 나타냄
테이블 생성은 로우가 아닌 칼럼에 대한 정의
칼럼 정의 시 필요사항 : 칼럼명, 칼럼의 데이터 타입
datatype
1) 문자형 - CHAR(n) : 고정길이 문자형, VARCHAR(n):가변길이 문자형, TEXT, BLOB, ENUM
2) 숫자형 - UNSIGNED:사용할 경우 양수만 입력 가능, ZEROFILL,INT, DOUBLE
3) 날짜형 - DATE, DATETIME, TIME, YEAR, TIMESTAMP
-
로우 : 테이블의 전체 칼럼이 하나의 로우를 구성
-
로우는 개체의 속성, 정보를 나타냄 위에서 로우는 한 도시의 정보를 나타냄
-
테이블의 특성
데이터베이스 다루기
데이터베이스(스키마) : 테이블 등의 데이터베이스를 담은 공간
문장이 끝날때 항상 ;
데이터베이스 생성
create database|shcema if not exists db명;
데이터베이스 삭제
drop {databse|shcema} [if not exists] db명;
데이터베이스 진입
use db명;
데이터 베이스 정렬
1)order by 절
select *from table where 조건 order by 칼럼1[ASC|DESC], 칼럼2[ASC|DESC]
/*주의 칼럼1 정렬 후 칼럼2 정렬*/
select 칼럼1, 칼럼2, 칼럼3 from table where 조건 order by 1[ASC|DESC], 2[ASC|DESC]
/*칼럼이 명시되면 이렇게 인덱싱처럼 가능*/
- ASC : 오름차순 정렬, 생략 가능
- DESC : 내림차순 정렬, 생략 불가 2)조회 갯수 정렬
limit num; -> num개만큼 만 나열
'*' -> 모든 칼럼