MariaDB과 HeidiSQL에 대해서는 정리했는데 SQL에 대해서는 정리하지 않았다는걸 지금 알았다.
정보처리기사 공부하면서 이해하고 외웠던 내용이지만 지금은 전부 까먹은 관계로..😅
자료들을 다시 꺼내서 복기하면서 SQL이 뭔지부터 가볍게 복기해본다.✍
릴레이션의 개요 및 구조
관계형 데이터베이스는 그를 구성하는 개체(Entity)나 관계(Relationship)를 모두 릴레이션(Relation)이라는 표(Table)로 표현한다. 여기서 '관계'란 서로 다른 테이블끼리 연결할 수 있는 방법이다. 예를 들어, "학생" 표와 "수업" 표가 있다면, 학생이 어떤 수업을 듣고 있는지 연결할 수 있다.
- 릴레이션 (Relation, =테이블): 데이터를 표 형태로 표현한 것.
- 릴레이션 스키마 (Schema): table head 태그
- 릴레이션 인스턴스 (Instance): td 태그 부분
- 속성 (Attribute): 릴레이션의 열, 스키마에 있는 요소들.
DB를 구성하는 가장 작은 논리적 단위. 개체의 특성. 파일 구조에서 '데이터 필드'- 차수 (Degree): 속성의 수
- 튜플 (Tuple): 릴레이션의 행, 속성의 모임. 파일 구조에서 '레코드'와 같은 의미. 순서가 없다.
- 기수, 카디널리티 (Cardinality): 튜플의 수
- 도메인 (Domain): 속성에 들어가는 원자값 집합. 예를 들어, 속성이 성별이면 도메인은 '남' 혹은 '여'이다.
그러므로 위 예시 사진은 1개의 릴레이션(테이블)이 있고
차수는 5 (학번, 이름, 학년, 신장, 학과)
기수는 4 (값이 들어가는 실질적인 행의 개수)
릴레이션의 특징
- 릴레이션에 포함된 튜플은 모두 다르다. (똑같은 튜플 포함 불가능)
- 튜플, 스키마에는 순서가 없다.
- 튜플의 삽입, 삭제 등 작업으로 릴레이션은 시간에 따라 변한다.
- 속성의 명칭은 유일해야 하지만, 값은 동일할 수 있다. (ex.같은 학년, 학과 등)
- 속성의 값은 원자 값만 저장한다.
- 튜플을 유일하게 식별하기 위해 속성들의 부분 집합을 key로 설정한다.
(ex. 특정 튜플 하나만 뽑아내고 싶을 때, 유니크한 값을 key로 설정)
관계형 데이터베이스의 제약조건 - 키, 무결성
DB에 저장되는 데이터의 정확성을 보장하기 위해, Key를 활용해 입력되는 데이터에 제한을 주는 것.
키(Key)는 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때, 구분할 수 있는 기준이 되는 속성을 의미한다.
슈퍼키* Super key |
- 속성들의 집합으로 구성된 키 (ex. 학번+성명) - 유일성은 만족하지만, 최소성은 만족하지 못하는 키 ※ 유일성(Unique): 하나의 키 값으로 하나의 튜플만을 유일하게 식별할 수 있어야 한다. ※ 최소성(Minimality): 모든 튜플을 유일하게 식별하는데 꼭 필요한 속성으로만 구성되어야 한다. |
후보키* Candidate key |
- 특정 튜플 하나만 뽑아낼 때 사용하는 속성들의 부분집합 - 중복된 튜플 존재 불가 → 반드시 하나 이상의 후보키가 존재한다 - (모든 튜플에 대해) 유일성과 최소성 모두 만족하는 키 ※ 기본키로 사용할 수 있으면 후보키 |
기본키* Primary key |
- 후보키 중에 선정된 main key → null이나 중복 값을 못 가지는 키 - 특정 튜플을 유일하게 구별할 수 있는 속성 |
외래키 Foreign key |
- 기본키를 참조하는 키 (원본 테이블에서 인용한 키), 중복 허용 - null 입력 가능 → ‘참조 무결성’과 연관되는 내용! (“모든 사원은 부서가 있지만, 신입은 부서가 없을 수 있다”) |
대체키 Alternative key |
기본키가 없을 때 그 자리를 대신해줄 수 있는 키 |
무결성(Integrity)은 DB에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제 값이 일치하는 정확성을 의미한다.
DB에 들어있는 데이터의 정확성을 보장하기 위해, 부정확한 자료가 저장되는 것을 방지하기 위한 제약조건이다.
개체(실체) 무결성 Entity Integrity |
- 기본 키를 구성하는 어떤 속성도 null이나 중복값을 가질 수 없다. |
참조 무결성 Referential Integrity |
- 외래키 값이 null이거나, 참조 릴레이션의 기본 키 값과 동일해야 한다. (릴레이션은 참조 불가능한 외래키 값을 가질 수 없다.) ※ 외래키와 참조하려는 테이블의 기본키는 도메인과 속성 개수가 같아야 한다. |
도메인(영역) 무결성 Domain Integrity |
- 주어진 속성 값이 정의된 도메인에 속한 값이어야 한다. |
SQL의 개요
Structured Query Language. 데이터베이스와 상호작용하기 위해 사용되는 언어.
관계대수와 관계해석을 기초로 하고 있으며, '질의어'지만 데이터 구조의 정의, 조작, 제어 기능을 갖추고 있다.
1974년 IBM 연구소에서 개발한 SEQUEL에서 유래한다.
💡 용어 설명
- 질의어: 대화식으로 쉽게 DB를 이용할 수 있도록 하는 언어. 원래 질의어 자체는 데이터를 '조회'하는데 초점이 맞춰져있다. 질의어의 종류는 다양하지만 특수한 데이터 관리에 사용되고, SQL은 다양한 데이터 관리에 사용되는 보편적인 언어이다.
※ 프로그래밍 언어의 종류 - https://hjinn0813.tistory.com/82
- 관계대수: 관계형 DB에서 원하는 정보와 그 정보를 검색하기 위한 유도방식을 기술하는 절차적 언어. 릴레이션을 처리하기 위해 연산자와 연산규칙을 제공한다.
- 관계해석: 관계 데이터의 연산을 표현하는 방법. 수학의 술어해석(Predicate Calculus)에 기반을 두고 만들어졌다. 원하는 정보가 무엇이라는 것만 정의하는 비절차적 특성을 가진다.
프로그래밍 언어의 종류와 개념
프로그래밍 언어에 대해서 여러 군데(아래 링크들)에 기록해놔서, 내가 찾아보기 편하려고 한 곳에 정리함!🙂
hjinn0813.tistory.com
SQL 명령어 종류
기능에 따라 DDL, DML, DCL로 나눌 수 있다.
DDL (Data Definition Language) 데이터 정의어 (데이터 구조를 정의한다) |
- CREATE : 테이블 생성/정의 - ALTER : 테이블 속성 변경 (속성 추가 등) - DROP : 테이블, 스키마, 도메인 등 지정 삭제 (복구 불가능) - TRUNCATE: 테이블의 모든 데이터 삭제 (구조만 남겨두고 내용 전체 삭제) |
DML (Data Manipulation Language) 데이터 조작어 (데이터에 변형을 준다) |
- SELECT : 조건에 맞는 튜플 검색/조회 - INSERT : 새로운 튜플 삽입 - UPDATE : 튜플 수정 - DELETE : 튜플 삭제 |
DCL (Data Control Language) 데이터 제어어 (DB 접근, 객체 사용 권한 설정) |
- GRANT : 권한 부여 - REVOKE : 권한 회수/취소 - COMMIT : 변경된 결과 반영(작업 정상 완료 알림) - ROLLBACK : 커밋되지 않은 내용을 취소하고 상태 복구 - SAVEPOINT : 롤백할 위치를 지정하는 명령어 |
'💾 Backend > DB, SQL' 카테고리의 다른 글
MySQL, PostgreSQL 차이 (1) | 2024.12.10 |
---|---|
MySQL 권한 에러, DB 이관하기 (0) | 2024.10.31 |
MySQL 기본 개념, MariaDB와 비교 (1) | 2024.10.28 |
SQL 데이터 타입 정리 (0) | 2024.10.28 |
MariaDB, HeidiSQL 기본 개념과 설치 방법 (1) | 2024.10.24 |