본문 바로가기

SQL

SQL

DBMS는 'Database Mangement System'의 약자로 데이터베이스를 효율적으로 관리하는 시스템

DBMS 사용 이유
1. 데이터 독립화
데이터와 응용프로그램을 분리시켜 상호영향을 줄입니다.
2. 데이터 중복 최소화, 데이터 무결성 보장
데이터들을 하나의 DBMS 시스템에서 관리하면 중복 데이터를 줄여 저장공간의 낭비를 줄이고, 무결성(일관성,정확성)이  손상될 가능성을  줄인다.
3. 데이터 보안 향상
DBMS시스템을  사용하면  시스템이  허용한  데이터에만  접근  가능하며, 데이터를  암호화  시킬  수  있다.
4. 관리 편의성 향상
다양한  데이터  백업방법이  있고, 장애  발생시  데이터  복구가  용이하다. 일부  DBMS는  컴퓨터  여러  대를  두고, 확장성(Scalability)과  부하분산(Load balancing)을  구현하는  '클러스터  구성' 또는  '스케일  아웃'을  구현한다.
5. 생산성
어떤  시스템에서든지  데이터  검색, 추가, 삭제, 갱신이  필요한데  이러한  기본기능을  DBMS가  제공해주어, 시스템  구축시  기본기능부터  구현할  필요가  없다.
6. 기능성
복수  유저의  요청에  대응  가능하고, 대용량  데이터  저장, 고속  검색기능도  제공한다.

DBMS 종류
DBMS에는  여러  종류가  있다. 그  중  관계형데이터베이스(RDB: Relational Database)가  현재  주류를  이루고  있다.
DBMS는 데이터 저장 방법에 따라 분류가 가능한데, 개발되어진 순서대로 계층형 데이터베이스, 관계형 데이터베이스, 객체지향 데이터베이스, XML 데이터베이스 가 있다.

계층형 데이터베이스는 관계형 데이터베이스보다 더 오래된 역사를 가진 데이터베이스이다.
하나의 폴더를 열면 안에는 또 다른 폴더나 파일이 있는 계층 구조로 저장이 되며 상당히 직관적이라는 점 때문에 개인용 컴퓨터와 저장장치에는 주로 쓰이지만 업무용, 기업용으로는 잘 쓰이지 않는다.

관계형 데이터베이스는 열과 행을 갖는 2차원 테이블을 기준으로 설계된 데이터베이스이다.
많은 데이터를 키와 관계라는 연결고리로 연결해서 원하는 데이터를 조회하고 가공할 수 있다는 점이 매력인 데이터베이스이다. 오래된 역사만큼 현재 업무용으로 가장 많이 쓰이는 데이터베이스이다.

데이터 모델링
현실 세계에 존재하는 데이터를 목적에 맞게 체계적으로 데이터베이스로 옮기는 변환 과정

필수 개념
Entity (개체)
저장하고  싶은  데이터의  대상  하나
ex) 지나가던  고양이  한마리, 물품을  구매한  어떤 한  사람
Entity Type
저장하고  싶은  데이터의  대상  종류
ex) 동네  길고양이  모두, 물품을  구매한  모든  사람 
Attribute (속성)
Entity에  대해  저장하려는  내용
ex) 고양이  수면  시간, 고양이  색깔  등 
Relation (테이블)
테이블을  의미하는  수학적인  표현 
ex) 테이블  간  관계가  아님을  주의합니다
Relationship (관계)
Entity 사이의  관계, 테이블  사이의  관계

SQL
구조화된 질의 언어 (Structured Query Language)
-구조화된 질의 언어
-데이터베이스에 저장된 데이터를 조회, 입력, 수정, 삭제하는 등의 조작이나, 테이블을 비롯한 다양한 객체를 생성 및 제어한다.
-오라클을 배운다는 것은 sql을 배우는 것이라고 할 수 있다.

CRUD(CREATE, READ, UPDATE, DELETE)
-데이터베이스의 제일 기본적인 기능을 말한다.
-CREATE : 데이터 생성, 저장
-READ : 데이터 읽기, 검색
-UPDATE : 데이터 수정
-DELETE : 데이터 삭제

DQL(Data Query Language: 데이터 질의어)
SELECT : 데이터 검색 시 사용

DDL(Data Definition Language: 데이터 정의어 [객체 생성 및 변경])
CREATE : 데이터베이스 생성
ALTER : 데이터베이스 변경
DROP : 데이터베이스 삭제
RENAME : 데이터베이스 객체 이름 변경
TRUNCATE : 데이터베이스 저장 공간 삭제

DML(Data Manipulation Language: 데이터 조작어 [데이터 변경])
INSERT : 데이터 입력
UPDATE : 데이터 수정
DELETE : 데이터 삭제

DCL(Data Control Language:데이터 제시어)
GRANT : 데이터베이스에 대한 일련의 권한 부여
REVOKE : 데이터베이스에 대한 일련의 권한 취소

TCL(Transaction Control Language:트랜잭션 처리어)
COMMIT : 트랜잭션의 정상적인 종료 처리
ROLLBACK : 트랜잭션 취소
SAVEPOINT : 트랜잭션 내에 임시 저장점 설정

제약조건 
-테이블 열에 저장될 데이터의 특성, 조건을 저장
NOT NULL : 지정한 열에 NULL을 허용하지 않는다. NULL을 제외한 데이터의 중복은 허용
UNIQUE : 지정한 열이 유일한 값을 가져야 한다. 즉 중복될 수 없다. 단 NULL은 값의 중복에서 제외
PRIMARY KEY : 지정한 열이 유일한 값이면서 NULL을 허용하지 않는다. PRIMARY KEY는 테이블에 하나만 지정 가능
FOREIGN KEY : 다른 테이블의 열을 참조하여 존재하는 값만 입력할 수 있다.
CHECK : 설정한 조건식을 만족하는 데이터만 입력 가능

자료형

VARCHAR2(길이) : 4000byte만큼의 가변 길이 문자열 데이터를 저장(최소 크기는 1byte)
문자열을 가변형으로 저장할 수 있으며 한글은 2000자까지, 영문은 4000자까지 저장 가능하지만 varchar2(15)는 15자리까지만 메모리에 저장되는 메모리를 할당받는다.

NUMBER(전체 자릿수, 소수점 이하 자릿수) : +-38자릿수의 숫자를 저장
첫번째 매개변수만큼의 소수점을 포함한 전체 자리만큼 숫자데이터를 저장하며 두번째 매개변수만큼 소수점 이하 자릿수를 표현한다.

DATE : 날짜 형식을 저장하기 위해 사용하는 자료형으로 세기, 연, 월, 일, 시, 분, 초 저장이 가능

주석은 
--한줄주석을 할수있고 여러줄 주석은 /*~*/로 가능하다.

--1.테이블 확인
select*from tab;

--테이블 구조 확인
desc dbtest;

--2.테이블 삭제

--1)휴지통 이동
drop table dbtest;

--복원하기
flashback table dbtest to before drop;

--휴지통 비우기
purge recyclebin;

--2)휴지통으로 이동하지 않고 바로 삭제
drop table dbtest purge;

레코드 추가
INSERT INTO 테이블명(필드명..) VALUES(값....);
테이블의 필드순서가 일치하면 필드명은 생략가능

검색결과 정렬
SELECT * FROM 테이블명 ORDER BY 필드명 ASC; -오름차순(ASC는 생략가능)
SELECT * FROM 테이블명 ORDER BY 필드명 DESC; -내림차순
SELECT * FROM 테이블명 ORDER BY 필드명 ASC, 필드명 DESE; - 첫번째 필드에 똑같은 데이터가 존재하면 두번째 필드로 정렬한다.

레코드 추출(검색)
SELECT * FROM 테이블명 WHERE 조건;
-조건에서 '문자'는 대소문자를 가진다.

레코드 삭제
DELETE 테이블명; //모든 레코드 삭제
DELETE 테이블명 WHERE 조건 //조건에 맞는 레코드 삭제

'SQL' 카테고리의 다른 글

MySQL, 데이터베이스  (0) 2023.07.12
sql 활용법  (0) 2023.06.21
61일차 sql  (0) 2023.06.21
sql 기본 사용법  (0) 2023.06.19