데이터베이스 관리 시스템(DBMS)에서 데이터를 조작하고 조회하는 데 사용되는 표준화된 언어
DDL(Data Definition Language) 문
: CREATE, ALTER, DROP
DML(Data Manipulation Language) 문
: SELECT, INSERT, UPDATE, DELETE
DCL(Data Control Language) 문
: GRANT, REVOKE, DENY
🧩 RDBMS
Server → Database → Schema → Table
Server → Database → Table
👉 네 단계로 구성된 다른 SQL에 비해 MYSQL은 Database와 Schema가 한번에 표현된 구조를 가짐
🛠 사용 툴
SQL문의 범위가 매우 넓어서 여러 사용법 중 처음 알게된 null값 처리방법에 대해 정리해보려 한다.
💡 만약 A가 null이면 B 처리를 해주세요.
IFNULL(A, b)
# 만약 desk가 null이면 empty를 압력해주세요.
UPDATE mytable SET cup = IFNULL(desk, 'empty');
DBMS마다 사용하는 문법에 차이가 있다.
⭐MySQL에서 IFNULL과 ISNULL의 사용에 주의해야한다!!⭐
ISNULL()은 MySQL, MSSQL에서 사용되지만 의미가 다르다.
💡 전달된 값이 null이면 1, 아니면 0을 반환해주세요
isnull(A)
SELECT ISNULL(column_name) AS is_null FROM mytable;
첫 번째로 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 page 구축 쉬움이 있었다.
그래서 admin page를 만들어보자~
✔ 참고. admin: 회원관리 페이지
머리가 조금이라도 편해지고싶다면?!!
컴퓨터는 1대지만 여러개의 환경에서 프로젝트를 진행하고싶다면?
>>가상환경$설정하기#☆
프로젝트에 맞게 환경을 설정하여
를 보다 수월하게 할 수 있다!
이런 가상환경이 없으면 프로젝트끼리 충돌이 일어나 오류가 발생할 수 있다. 가상환경이 필수!는 아니나 오류 해결에 시간을 쏟지 않으려면 꼮 가상환경을 세팅하자!
❗ 문제
1. 원인: 이름 중복
conda create로 같은 이름의 환경을 만드려 하면
'같은 이름의 환경이 있습니다. 이전 환경을 삭제할까요?'라는 문구가 나온다. 당연히 영어로.
암것도 모르고 y누르지 말고 꼭 확인하자 꼭
2. 내용
윈도우 환경단위로 실습이 이루어지기 때문에 대부분의 경우 가상환경끼리 영향을 주지 않지만, 환경명 중복을 허용하지 않아 이 경우엔 삭제된다고 한다.
그래서말인데 난 방금 지난3일동안 한 myenv가 날아갔다 . ㅎㅎ
visual studio code powershell에서 설정을 진행하였다.
# django라는 이름으로 새로운 파이썬 가상환경 생성
$ conda create -n django python=3.10.11
# 가상환경 사용
$ conda activate django
# 가상환경 종료
# $ conda deactivate
$ pip install django
#code
$ django-admin startproject mysite
$ cd mysite
위 코드를 입력하면 비어있던 django_test안에 mysite라는 폴더가 생긴다.
그 후에 cd mysite
를 입력해 이동까지 완료하기!
#code
$ python manage.py startapp myapp
아래 사진처럼 myapp이 추가된다.
이대로 끝나는 것이 아니다!
settings.py에서 직접 myapp을 추가해줘야 한다.
💡 migration: 모델의 변경사항(추가, 수정, 삭제)을 감지하여 db에 반영
(= 스키마 업데이트)
#code
$ python manage.py makemigrations
$ python manage.py migrate
아직은 만들어진 앱이 하나기때문에 코드 뒤에 아무것도 붙이지 않아도 되지만, 앱이 여러개라면 앱별로 migrations, migrate 하는 것이 좋다고 한다.
아무튼 달라진점을 찾아보자!
$1. DB초기화를 했는데 애초에 db가 없었기 때문에 no change
가 뜬다.
$2. migrate로 db를 생성해줬더니 좌측상단에 🟥db.sqlite3이 생겼다.
admin page에서 사용할 유저를 생성해주자~
비밀번호 왜 입력안되지? 싶지만 보안을 위해 눈에 안보이는 것이다.
걱정말고 또박또박 입력만 하기~
#code
$ python manage.py createsuperuser
#code
$ python manage.py runserver
위 사진처럼 뜨면 서버가 돌아가고있다는 것이다~!
ctrl + url을 클릭하면 아래처럼 창이 뜬다.
내가 원한건 admin 페이지이다!
그래서 기존 url 뒤에 /admin 을 붙이면 원하는 페이지로 이동이 가능하다.
이게 가능한 이유는 '3-1. mysite 프로젝트 생성'시에 urls.py에 자동으로 admin 주소가 생성되기 때문이다.
그래서 admin 외에 다른 사이트로 이동하고싶다면 path를 새로 설정해주면 된다!