[KT AIVLE SCHOOL] 15주차: 난이도上

ofohj·2023년 5월 13일
0

KT AIVLE SCHOOL AI 3기

목록 보기
15/21
post-thumbnail

SQL

1. 개념

데이터베이스 관리 시스템(DBMS)에서 데이터를 조작하고 조회하는 데 사용되는 표준화된 언어

2. 종류

  • DDL(Data Definition Language) 문
    : CREATE, ALTER, DROP

  • DML(Data Manipulation Language) 문
    : SELECT, INSERT, UPDATE, DELETE

  • DCL(Data Control Language) 문
    : GRANT, REVOKE, DENY


MYSQL

1. 개념

  • 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)의 한 종류
  • SQL을 사용하여 데이터를 조작하고 관리

🧩 RDBMS

  • 데이터베이스의 구조와 데이터 간의 관계를 정의 및 관리

2. 구성

타 SQL

Server → Database → Schema → Table

MYSQL

Server → Database → Table
👉 네 단계로 구성된 다른 SQL에 비해 MYSQL은 Database와 Schema가 한번에 표현된 구조를 가짐

🛠 사용 툴

  • MYSQL Workbench 8.0 CE

3. Null값 처리

SQL문의 범위가 매우 넓어서 여러 사용법 중 처음 알게된 null값 처리방법에 대해 정리해보려 한다.

IFNULL

의미

💡 만약 A가 null이면 B 처리를 해주세요.
IFNULL(A, b)

예시

# 만약 desk가 null이면 empty를 압력해주세요.
UPDATE mytable SET cup = IFNULL(desk, 'empty');

비교

DBMS마다 사용하는 문법에 차이가 있다.

  • MySQL: IFNULL()
  • MSSQL: ISNULL()
  • ORACLE: NVL()

ISNULL

⭐MySQL에서 IFNULL과 ISNULL의 사용에 주의해야한다!!⭐
ISNULL()은 MySQL, MSSQL에서 사용되지만 의미가 다르다.

의미

💡 전달된 값이 null이면 1, 아니면 0을 반환해주세요
isnull(A)

예시

SELECT ISNULL(column_name) AS is_null FROM mytable;

COALESCE

의미

첫 번째로 NULL이 아닌 값을 반환해주세요
COALESCE(A, B) , COALESCE(A, B, C)

사용 경우

1) 값 반환

  • 주어진 인자들 중에서 첫 번째로 NULL이 아닌 값 반환

  • NULL이 아닌 첫 번째 값이 없을 경우, NULL을 반환

  • 일반적으로 데이터베이스에서 NULL 값을 처리하거나 대체할 때 사용

  • COALESCE 함수를 사용하여 특정 열의 NULL 값을 다른 값으로 대체 가능

예시

# 1) 값 반환
SELECT COALESCE(bag, pouch, cup) FROM mytable;
# 2) 값 대체
SELECT COALESCE(column_name, replacement_value) FROM mytable;


Django

백엔드 재밌고~ 웹 의외로 잘맞는듯~?했던 지난날들이여 완전히 바이바이다
앞서 배웠던것들도 어려웠지만 장고는 증말 어렵다! 증말

개념

백엔드 개발 툴

필요성

이전에 만든 기능 재사용 가능 → 개발이 빠름

장점

  • 파이썬 사용 가능
  • 필요한 기능 대부분이 이미 마련됨
  • 관리자 인터페이스(admin) 구축이 비교적 쉬움 (이미 만들어져있어서!)

실습

django의 장점 중 하나로 admin page 구축 쉬움이 있었다.
그래서 admin page를 만들어보자~
✔ 참고. admin: 회원관리 페이지

1. 가상환경 설정

설정 이유

머리가 조금이라도 편해지고싶다면?!!
컴퓨터는 1대지만 여러개의 환경에서 프로젝트를 진행하고싶다면?
>>가상환경$설정하기#☆

프로젝트에 맞게 환경을 설정하여

  • 코드 공유 및 재사용
  • 프로그램 유지보수

를 보다 수월하게 할 수 있다!

이런 가상환경이 없으면 프로젝트끼리 충돌이 일어나 오류가 발생할 수 있다. 가상환경이 필수!는 아니나 오류 해결에 시간을 쏟지 않으려면 꼮 가상환경을 세팅하자!

❗ 문제
1. 원인: 이름 중복
conda create로 같은 이름의 환경을 만드려 하면
'같은 이름의 환경이 있습니다. 이전 환경을 삭제할까요?'라는 문구가 나온다. 당연히 영어로.
암것도 모르고 y누르지 말고 꼭 확인하자 꼭

2. 내용
윈도우 환경단위로 실습이 이루어지기 때문에 대부분의 경우 가상환경끼리 영향을 주지 않지만, 환경명 중복을 허용하지 않아 이 경우엔 삭제된다고 한다.

그래서말인데 난 방금 지난3일동안 한 myenv가 날아갔다 . ㅎㅎ

code

visual studio code powershell에서 설정을 진행하였다.

# django라는 이름으로 새로운 파이썬 가상환경 생성
$ conda create -n django python=3.10.11

# 가상환경 사용
$ conda activate django

# 가상환경 종료
# $ conda deactivate

2. django 설치

$ pip install django

3. 프로젝트 만들기

#1. 프로젝트 생성 및 이동

#code
$ django-admin startproject mysite
$ cd mysite

위 코드를 입력하면 비어있던 django_test안에 mysite라는 폴더가 생긴다.
그 후에 cd mysite를 입력해 이동까지 완료하기!

#2. 앱 생성

#code
$ python manage.py startapp myapp

아래 사진처럼 myapp이 추가된다.

이대로 끝나는 것이 아니다!
settings.py에서 직접 myapp을 추가해줘야 한다.

#3. DB 초기화 & 마이그레이션

💡 migration: 모델의 변경사항(추가, 수정, 삭제)을 감지하여 db에 반영
(= 스키마 업데이트)

#code
$ python manage.py makemigrations
$ python manage.py migrate

아직은 만들어진 앱이 하나기때문에 코드 뒤에 아무것도 붙이지 않아도 되지만, 앱이 여러개라면 앱별로 migrations, migrate 하는 것이 좋다고 한다.

아무튼 달라진점을 찾아보자!
$1. DB초기화를 했는데 애초에 db가 없었기 때문에 no change가 뜬다.
$2. migrate로 db를 생성해줬더니 좌측상단에 🟥db.sqlite3이 생겼다.

#4. super user 생성

admin page에서 사용할 유저를 생성해주자~
비밀번호 왜 입력안되지? 싶지만 보안을 위해 눈에 안보이는 것이다.
걱정말고 또박또박 입력만 하기~

#code
$ python manage.py createsuperuser

#5. 실행

#code
$ python manage.py runserver

위 사진처럼 뜨면 서버가 돌아가고있다는 것이다~!
ctrl + url을 클릭하면 아래처럼 창이 뜬다.

내가 원한건 admin 페이지이다!
그래서 기존 url 뒤에 /admin 을 붙이면 원하는 페이지로 이동이 가능하다.

이게 가능한 이유는 '3-1. mysite 프로젝트 생성'시에 urls.py에 자동으로 admin 주소가 생성되기 때문이다.

그래서 admin 외에 다른 사이트로 이동하고싶다면 path를 새로 설정해주면 된다!

0개의 댓글