작성자 | 성창민 |
일 시 | 2024. 5. 23 (목) 18:00 ~ 21:00 |
장 소 | 복지관 b128-1호 |
참가자 명단 | 임혜진, 이재영, 성창민, 김명원, 장원준 |
사 진 | ![]() |
백엔드를 하다보면 쿼리문을 사용하진 않지만 개념적으로는 잘 바탕이 되어있어야 한다는 생각이 들었습다.
그렇기에 기본 쿼리문을 정리해 보도록 하겠습니다.
SQL (Structured Query Language)
• SQL은 관계형 데이터 모델을 따르는 DBMS의 표준 데이터베이스 언어라고 합니다.
• 관계 대수를 기초로 만드러진 DB관련 명령어 형식을 SQL이라고 합니다.
SQL 명령어 분류는
데이터 정의어,
데이터 조작어
데이터 제어어로 나뉩니다.
1) 데이터 정의어는
데이터베이스나 테이블등을 생성, 삭제, 구조변경을 위한 명령어입니다.
데이터베이스를 정의하거나 수정하는 언어입니다.
명령어를 수행하고 나면 이전 상태로 복귀할 수 없습니다.
1-1 생성
- 데이터 정의어 : CREATE
- 데이터베이스 오브젝트를 생성합니다.
1-2 변경
- 데이터 정의어 : ALTER
- 데이터베이스 오브젝트를 변경합니다.
1-3 삭제
- 데이터 정의어 : DROP
- 데이터베이스 오브젝트를 삭제합니다.
- 데이터 정의어 : TRUNCATE
- 데이터베이스 오브젝트의 내용을 삭제합니다.
2) 데이터 조작어는
데이터베이스에 저장된 데이터를 처리하거나 조회, 검색하기 위한 명령어입니다.
데이터를 검색, 삽입, 삭제, 갱신합니다.
사용자와 데이터베이스 관리 시스템간의 인터페이스 제공합니다.
트랜잭션 제어어를 활용하여 실행 전 상태로 복귀 가능합니다
2-1 데이터 삽입
- 데이터 조작어 : INSERT
- 삽입 형태로 신규 데이터를 테이블에 저장합니다.
2-2 데이터 수정
- 데이터 조작어 : UPDATE
- 테이블의 내용을 수정합니다.
2-3 데이터 삭제
- 테이터 조작어 : DELETE
- 테이블의 내용을 삭제합니다.
2-4 데이터 조회
- 데이터 조작어 : SELECT
- 테이블의 내용을 조회합니다.
3) 데이터 제어어는
무결성을 유지시키면서 내부적으로 여러가지 규정이나 제약조건 등을 기술하기 위해 사용되는 명령어입니다.
사용자 별로 데이터베이스에 접근할 수 있는 권한을 부여하거나 회수합니다.
3-1 GRANT : 데이터베이스 사용자에게 권한을 부여합니다.
3-2 REVOKE : 데이터베이스 사자에게 권한을 회수합니다.
테이블 구조
이 SQL을 장고에서는 그대로 사용하지 않고, ORM 을 사용합니다.
ORM이란?
Object Relational Mapping 의 줄임말로 객체(Object) 와 데이터베이스의 데이터(Relational)를 연결(Mapping)해주는 개념
개발자가 별도의 SQL 쿼리를 짤 필요 없이 코드 작성만으로 DB를 조작할 수 있게 해주는 개념으로 장고만 있는게 아니라 다양한 언어/프레임워크 등에서 사용 되는 개념입니다.
Queryset 이란?
Django 의 ORM을 사용하여 Database와 소통할때 발생하는 자료형.
마치 list 와 매우 비슷한데 데이터베이스의 데이터가 list 처럼 Queryset 안에 들어오는 형태입니다.
Queryset 접근 방식
Queryset은 Dictonary 형태로 반환 된다.
이 Dictonary 형태는 model 객체의 Key를 통해 객체를 표현 할 수 있습니다.
Queryset Method 소개
.all()
현재 QuerySet(또는 QuerySet 하위 클래스)의 복사본을 반환한다. 테이블 데이터의 전체를 가져옵니다.
.values()
Queryset 내부의 value값으로 전체 데이터를 모두 가져옵니다.
.filters()
인수로 필드명 = 조건값이 들어가며 특정 데이터로 필터링된 데이터를 가져옵니다.
.get()
필드명 = 조건값 을 인수로 해당하는 데이터가 1개인 경우 사용 가능.
0개 이거나(DoesNotExist) 2개 이상(MultipleObjectsReturned)이면 에러 발생
지금까지 Django 를 사용해서 개발했지만, DB를 정확히 이해하고 사용하진 않았습니다. 아직까지도 DB에 대해 정확하게 이해하지는 못했지만, 이번 학습을 통해 DB의 개념에 대해 조금 이해하게 되었고, 사용할 때 조금 더 잘 접근할 수 있을 것 같다는 자신감이 생겼습니다.