전체 글 217

Join

JOIN이란 두 개 이상의 테ㅔ이블을 서로 묶어서 하나의 결과를 만들어 내는 것을 말한다. RDBMS에서는 두 테이블을 엮어야만 형태가 나오는 것들이 많다. 1. Inner Join 두 테이블의 조인을 위한 조건으로는 테이블이 One to Many 관계로 연결되어야 한다. 학생 테이블과 강의 테이블을 생성했다. -- 학생 테이블 CREATE TABLE Students ( StudentID INT PRIMARY KEY, FirstName VARCHAR(255), LastName VARCHAR(255), Age INT ); -- 강의 테이블 CREATE TABLE Courses ( CourseID INT PRIMARY KEY, CourseName VARCHAR(255), Instructor VARCHAR(2..

언어/MYSQL 2023.12.08

변수 사용, 데이터 형식 변환

SQL도 다른 프로그래밍 언어처럼 변수를 선언하고 사용할 수 있다. # 변수 선언 SET @변수이름 = 변수의 값; #변수 값 출력 SELECT @변수이름; >> 변수의 값 데이터 형 변환에는 두 가지가 있다. 1. 명시적인 변환 : 직접 함수를 사용해서 변환 2. 암시적인 변환 : 별도의 지시 없이 자연스럽게 변환 1. 명시적인 변환 데이터 형식을 변환하는 함수로 CAST(), CONVERT()가 있다. -- 숫자를 문자열로 변환 SELECT CAST(123 AS VARCHAR(10)); -- 날짜를 문자열로 변환 SELECT CAST(GETDATE() AS VARCHAR(10)); -- 문자열을 날짜로 변환 SELECT CAST('2023-12-08' AS DATE); -- 숫자를 문자열로 변환 SE..

언어/MYSQL 2023.12.08

서브 쿼리

SELECT 안에는 또 다른 SELECT가 들어갈 수 있다. 이것을 서브 쿼리 또는 하위 쿼리라고 부른다. SQL문 2개를 작성해보고, 이 두 개의 코드를 하나로 합쳐보는 작업을 통해 연습해보았다. # 에이핑크의 평균 키 SELECT height From membeer where men_name = '에이핑크'; 에이핑크의 평균 키를 조회했더니, height = 164가 나왔다. #164보다 평균 키가 큰 그룹 조회 SELECT mem_name, height FROM member WHERE height >164; 그 다음에는 에이핑크의 평균 키(164)보다 큰 그룹을 조회하는 코드를 썼다. 이것을 통해 결과문을 얻는데, 두 SQL문을 하나로 합치고 싶을 때 활용하는 것이 서브 쿼리이다. SELECT me..

언어/MYSQL 2023.12.08

Select ~ from ~ where 기본 조건식

SQL에 대해 어느 정도 망각한 것 같아서 다시 복습해보기로 했다. 특정 조건에 대해서 조회하기 위해서는 기본적으로 많이 사용하는 문구가 아래와 같다. SELECT 열_이름 FROM 테이블_이름 WHERE 조건식; 조건식에 다양한 것을 넣을 수 있는데, 1. 행 이름 SELECT 열_이름 FROM 테이블_이름 WHERE 행 이름 = " "; 간단하게 행 이름을 설정해주는 방법이다. 2. 관계 연산자, 논리 연산자 사용 SELECT 열_이름 FROM 테이블_이름 WHERE 비교대상 >= INT; >=, ==,

언어/MYSQL 2023.12.08

generator, yield

generator란 이터레이터를 생성해주는 함수이다. 메모리를 효율적으로 사용하면서 반복을 수행하도록 돕는 객체다. 이터레이터는 클래스에 __iter__, __next__ 또는 __getitem__ 메서드를 구현해야 한다. 하지만 제너레이터 함수 내부에는 이 메서드들이 내장되어 있기 때문에 이터레이터보다 훨씬 간단하게 작성할 수 있다. 아래 사이트에서 그림을 가져왔는데, 간단히 이해하기 위해서 이 그림을 읽어보았고 간단하게 구현도 해보았다. def generator(): yield 0 yield 'Alphabet' yield False gen = generator() print(next(gen)) # 0 print(next(gen)) # 'Alphabet' print(next(gen)) # False d..

언어/Python 2023.12.04

백준 4949. 균형잡힌 세상(Python)

https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 각 문자열은 마지막 글자를 제외하고 영문 알파벳, 공백, 소괄호("( )"), 대괄호("[ ]")로 이루어져 있으며, 온점(".")으로 끝나고, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마지막에 www.acmicpc.net 이 문제의 조건은 다음과 같다. 1. 문자열의 괄호는 균형이 맞아야 한다. 2. 괄호는 일반적인 공식에 맞게 해야 한다. 3. 입력의 종료조건으로 맨 마지막에 온점 하나(".")가 들어온다. 그래서 이 3개의 조건에 초점을 두고 풀었다. 이번 문제의 경우에는 명확히 스택을 사용하는 문제이다. 문장에 있는 글자들을 하나씩 꺼내서 체크해주는 방법을 고민해보았는데, 2번 조건이 너..

cording test 2023.11.09

DRF manage.py 해석

개인 프로젝트를 진행하면서 DRF를 하나하나 이해해보기 위해 여러 가지를 보고 있는데, 모든 명령 코드가 manage.py에서 시작되기 때문에 manage.py 코드를 꼼꼼히 읽어보았다. #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" import os import sys def main(): """Run administrative tasks.""" os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Studysyncer.settings') try: from django.core.management import execute_from_command_line except..

Framework/Django 2023.10.31

원형연결리스트

원형연결리스트는 말 그대로 연결리스트가 원형 형태로 이루어진 것으로, 가장 큰 특징으로는 마지막 노드와 첫 번째 노드가 만난다는 점이다. 이러한 원형의 특징을 가졌기에 원형연결리스트, 다른 말로 순환연결리스트라고도 부른다. 이 원형 연결리스트는 시작과 끝이 없기 때문에 헤드 포인터를 설정해주지 않으면 무한히 순환할 수 있다. 그래서 이 부분에 주의해야 한다. 원형 연결 리스트는 하나의 노드에서 모든 노드로의 접근이 가능하다는 장점을 가지고 있다. 구현 코드에 주석을 달아놓았으니 이해하기 어렵지 않을 것이다. # 노드를 정의하며, # 각 노드는 데이터 (data)와 다음 노드를 가리키는 링크 (link)를 포함함 class ListNode: def __init__(self, data): self.data ..

이중연결리스트

정의 : 하나의 노드가 선행 노드와 후속 노드에 대한 두 개의 링크를 가지는 리스트 핵심은 노드와 노드가 서로 연결되어 있다는 점이다. 아래 그림을 보면 단순 연결 리스트(linked list)와는 다르게 노드가 이전 노드(previous)와 다음 노드(next)로 구성되어 있다. 이것의 가장 큰 장점은 양방향으로 연결되어 있기 때문에 노드를 탐색하는 방향이 양쪽으로 가능하다는 것이다. 삽입 구현 과정 다음과 같이 head와 tail 노드만 존재하고 있을 때, 새로운 데이터를 가진 노드(new)를 넣고 싶다면 1. tail의 Llink가 가리키는 노드의 Rlink가 new를 가리키게 한다. (tail->Rlink->Rlink = new) 2. newnode의 Llink를 tail의 Llink가 기리키는 ..

에자일 방법론이란?

1. 애자일(Agile)방법론이란 '애자일(Agile)'이란 용어는 소프트웨어 개발 방식의 하나로, 작업 계획을 짧은 단위로 세우고 제품을 만들고 고쳐 나가는 사이클을 반복함으로써 고객의 요구 변화에 유연하고도 신속하게 대응하는 개발 방법론이다. 좋은 것을 빠르게 취하고, 유연하고 효율적으로 개발을 할 수 있도록 만드는 다양한 방법론을 통칭해 일컫는 말이다. 애자일은 어떠한 규정이나 툴이 아니며, 개발 업무는 어떤 방식으로 진행되는 것이 좋은지에 대한, 협업과 워크플로우를 바라보는 관점, 가치체계, 문화라고 보는 것이 더 가깝다. 즉, 위의 프레임워크들이 지향하는 것을 통칭하는 상위 개념이 애자일이라고 할 수 있다. 미리 정해진 몇 개의 단계에 따라 엄격한 순서대로 이루어지는 일직선의 과정인 폭포수(Wa..