728x90
반응형

데이터베이스 25

[Programmers]동명 동물 수 찾기(GROUP BY, HAVING)

동명 동물 수 찾기 https://school.programmers.co.kr/learn/courses/30/lessons/59041 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Q : 동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 조회하는 SQL문을 작성해주세요. 이때 결과는 이름이 없는 동물은 집계에서 제외하며, 결과는 이름 순으로 조회해주세요. SELECT NAME, COUNT(*) FROM ANIMAL_INS WHERE NAME IS NOT NULL GROUP BY NAME HAVING COUNT(NAME)..

[Programmers]고양이와 개는 몇 마리 있을까(GROUP BY, PARTITION BY)

고양이와 개는 몇 마리 있을까 https://school.programmers.co.kr/learn/courses/30/lessons/59040 Q : 동물 보호소에 들어온 동물 중 고양이와 개가 각각 몇 마리인지 조회하는 SQL문을 작성해주세요. 이때 고양이를 개보다 먼저 조회해주세요. 1. GROUP BY 사용 SELECT ANIMAL_TYPE, COUNT(*) FROM ANIMAL_INS GROUP BY ANIMAL_TYPE ORDER BY ANIMAL_TYPE 2. PARTITION BY 사용 SELECT DISTINCT(ANIMAL_TYPE), COUNT(*) OVER (PARTITION BY ANIMAL_TYPE) FROM ANIMAL_INS ORDER BY ANIMAL_TYPE 두 개의 차이..

[Programmers]자동차 대여 기록에서 장기/단기 대여 구분하기(CASE WHEN, DATEDIFF)

자동차 대여 기록에서 장기/단기 대여 구분하기 https://school.programmers.co.kr/learn/courses/30/lessons/151138 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Q : CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 대여 시작일이 2022년 9월에 속하는 대여 기록에 대해서 대여 기간이 30일 이상이면 '장기 대여' 그렇지 않으면 '단기 대여' 로 표시하는 컬럼(컬럼명: RENT_TYPE)을 추가하여 대여기록을 출력하는 SQL문을 작성해주세요. 결과는 대여 기록 ID를 기준으로 내림차..

[MySQL] 소수점 관리(ROUND, TRUNCATE, FORMAT)

0) 기본 SELECT AVG(DAILY_FEE) FROM CAR_RENTAL_COMPANY_CAR WHERE CAR_TYPE LIKE 'SUV' >> 93727.2727 1) ROUND(숫자, 소수점 개수) - 소수점 반올림 소수점 자리를 0개로 설정했을 때 (=소수 첫 번째 자리에서 반올림 했을 때 (0으로 설정 또는 생략가능)) SELECT ROUND(AVG(DAILY_FEE)) FROM CAR_RENTAL_COMPANY_CAR WHERE CAR_TYPE LIKE 'SUV' >> 93727 소수점 자리를 1개로 설정했을 때 (=소수 두 번째 자리에서 반올림 했을 때) SELECT ROUND(AVG(DAILY_FEE), 1) FROM CAR_RENTAL_COMPANY_CAR WHERE CAR_TYPE..

[MySQL] 날짜 관련 함수

MySQL에서 날짜 변환은 오라클(TO_CHAR, TO_DATE)과는 다르게 DATE_FORMAT, STR_TO_DATE를 사용한다. 1. 날짜 형식 변환 함수 (1) DATE_FORMAT 날짜 데이터를 다른 날짜 형식으로 변환 SELECT DATE_FORMAT('2019-03-01 12:23:01', '%Y-%m-%d') >> 2019-03-11 SELECT DATE_FORMAT('2019-03-01 12:23:01', '%Y-%M-%D') >> 2019-March-11th (2) STR_TO_DATE 문자열에서 날짜 형식으로 변환 SELECT STR_TO_DATE('20201103', '%Y-%m-%d') >> 2020-11-03 2. 날짜 연산 함수 (1) DATEDIFF(날짜1, 날짜2) 두 날짜..

[Programmers] 나이 정보가 없는 회원 수 구하기 (COUNT, SUM)

https://school.programmers.co.kr/learn/courses/30/lessons/131528 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Q : USER_INFO 테이블에서 나이 정보가 없는 회원이 몇 명인지 출력하는 SQL문을 작성해주세요. 이때 컬럼명은 USERS로 지정해주세요. (1) COUNT, WHERE IS NULL 조건 사용 SELECT COUNT(*) as USERS FROM USER_INFO WHERE AGE IS NULL; (2) SUM(AGE IS NULL) 사용 SELECT SUM(AGE IS NULL) as..

[Programmers] 여러 기준으로 정렬하기 (ORDER BY 여러개)

https://school.programmers.co.kr/learn/courses/30/lessons/59404 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ORDER BY 를 사용해 여러개의 기준으로 정렬하는 법 Q : 동물 보호소에 들어온 모든 동물의 아이디와 이름, 보호 시작일을 이름 순으로 조회하는 SQL문을 작성해주세요. 단, 이름이 같은 동물 중에서는 보호를 나중에 시작한 동물을 먼저 보여줘야 합니다. SELECT ANIMAL_ID, NAME, DATETIME FROM ANIMAL_INS ORDER BY NAME, DATETIME DESC;..

집합연산자(UNION, INTERSECT, EXCEPT)

집합연산자(Set Operator) : 두 개 이상의 SQL 쿼리문을 합치는 방법 (SELECT구문과 SELECT구문 합치기) 컬럼의 개수가 같아야하고, 각 컬럼의 데이터타입이 같아야한다. 검색 결과의 헤더는 앞쪽 SELECT문에 의해 결정된다. ORDER BY 절은 문장의 제일 마지막에 사용한다. 집합연산자 종류 기호 의미 쿼리문 UNION A ∪ B 두 개 쿼리문 조건의 모든 행 (중복 제거) SELECT * FROM A UNION SELECT * FROM B UNION ALL 두 개 쿼리문 조건의 모든 행 (중복 포함) SELECT * FROM A UNION ALL SELECT * FROM B INTERSECT A ∩ B 양 쪽 조건 모두가 포함된 행만 검색 SELECT * FROM A INTERS..

[PostgreSQL] 문자열 한개 또는 여러개 치환하기(REPLACE, REGEXP_REPLACE, CASE WHEN)

1. REPLACE() : 문자열 한 개 치환 SELECT REPLACE(컬럼, '문자열', '바꿀문자') select customerid, custstate, replace(custstate,'A','000') from customers; 2. REGEXP_REPLACE() : 다중 문자열 치환 REGEXP_REPLACE(컬럼, '문자열1|문자열2|문자열3', '바꿀문자') 1. 다중 문자열을 하나의 문자열로 치환하기 --custstate 지역 중 WA 지역에 사는 사람과 WA 가 아닌 지역에 사는 사람을 구분해서 보여주세요.-- select customerid, custstate, regexp_replace(custstate,'TX|OR|CA','Others') as newstate_flag from..

[PostgreSQL] 년도,월,일,시간 등 추출하기(EXTRACT)

EXTRACT(A FROM B) - A (Field 값) : year, month, day 와 같은 추출할 날짜/시간 A (Field 값) 의미 CENTURY 세기(21세기, 20세기) DAY 1~31에 해당하는 해당 월의 일 DOW 일요일(0) ~ 토요일(6)까지 반환하는 값 DOY 1~366 까지 해당하는 연중일수 EPOCH 1970년 1월 1일 00:00:00 UTC 부터 현재까지의 초 (unixtime) HOUR 0 ~ 23 에 해당하는 시간정보 MILLISECONDS 1/1000에 해당하는 밀리초 MINUTE 0 ~ 59에 해당하는 분 정보 MONTH 1 ~ 12에 해당하는 월 정보 QUARTER 1(1~3월), 2(4~6월), 3(7~9월), 4(10~12월) 분기로 나뉘어지는 정보 SECON..

[PostgreSQL] 문자열 이어 붙이기, 합치기 (concat, ||)

1. concat(문자열1, 문자열2, 문자열3) (이름+' '+성 합치기) select concat(first_name,' ',last_name) from actor ; 2. 문자열1||문자열2||문자열3 (중복제거, 대문자, 이름+' '+성 합치기) select distinct upper(first_name||' '||last_name) from actor ; *주의 MySQL에서 ||는 문자열 합치기가 아닌 OR(또는)을 뜻한다. Oracle에서 concat 사용시 매개변수를 두 개만 허용하기 때문에 concat(concat(문자열1, 문자열2), 문자열3) 와 같이 사용할 수 있다. Reference https://jhnyang.tistory.com/369

Database, ORM, SQLAlchemy, Flask 간단 정리

알아야 할 프로그래밍 기본 단어 : 쿼리, SQL, Application, Framwork 데이터베이스는 애플리케이션 부분에서 아주 중요한 부분이다. 바로 동력의 원천인 데이터를 저장 하기 때문이다. 데이터베이스에서는 SQL(Structured Query Language)을 사용해서 쿼리를 수행하고 내부의 데이터를 조종(?), 조작한다. 원래는 전용 SQL 도구를 사용해 쿼리를 수행했지만, 지금은 애플리케이션 안에서 SQL을 사용하는 방식(ORM)이라는 것도 생겼다. ORM(Object Relational Mapper). 처음에 들을 때 너무 생소하고, 정의된 글을 아무리 읽어도 머릿속에 100% 쏙쏙 박히지 않았다. 하지만 지금 흐름을 정리하니 이해가 된다. 요약 : 애플리케이션을 만드려면 데이터가 필..

SQLAlchemy 사용

1) 패키지 설치 pip install sqlalchemy # 1.3 버전 pip install --pre sqlalchemy # 1.4Beta 버전 2) 데이터베이스와의 연결 코어의 엔진으로 연결 : 추상화를 통해(Pool) DBAPI 사용가능해짐 Connection Pooling from sqlalchemy import create_engine engine = create_engine("데이터베이스 주소") # 예시 engine = create_engine("sqlite:///:memory:") ./// - 디렉토리 상대적 경로 .//// - 절대적 경로 :memory: - 스토리지가 아닌 메모리에서 임시적으로 데이터 베이스 사용. 접속 끊는 순간 데이터베이스 날아감. 3) Mapping 매핑 데이터..

SQLAlchemy 정의, 구조

ORM은 선택이며 반드시 사용해야 하는 것이 아니며 SQLAlchemy가 ORM의 전부를 나타내는 것 또한 아님을 주의. SQLAlchemy는 파이썬에서 사용할 수 있는 ORM 라이브러리 중 하나이며 다양한 기능을 제공합니다. 다른 ORM 라이브러리와 다른 점 중 하나는 자체적으로 스키마를 생성하지 않는 다는 것 입니다(사용자가 정의한 DDL 제외). 그렇기 때문에 어플리케이션 코드나 데이터베이스 시스템에 간섭하지 않는 다는 특징이 있습니다. 1. SQLAlchemy 구조 SQLAlchemy는 크게 'Core'와 'ORM'으로 나뉘어져 있습니다. 1) Core 아래의 코어의 기능들만 봐도 Core는 큰 역할을 하고 있고 단순히 데이터베이스와 프로그래밍 언어를 연결해주고 SQL 쿼리문을 변경하는 것이 아닌..

ORM 장점과 단점, 언제 사용?

장점 - 현재 쓰는 언어만 사용해도 됨. - 데이터베이스 시스템으로부터 분리가 됨. -> MYSQL, PostgreSQL 등 원하는 시스템 사용 가능. - 라이브러리마다 다양한 기능 지원 단점 - 데이터베이스와 바로 연결하는 것보다 초기설정이 더 많아지거나 복잡해질 수 있음. - 내부 동작에 대한 충분한 이해가 없는 경우 문제 해결이 힘듦. - 데이터베이스에 직접 쿼리문을 보내는 것이 아니기 때문에 성능 저하가 발생함. - 데이터베이스 복잡도를 데이터베이스 시스템에서 어플리케이션 코드로 옮기게 됨. - Object-Relaional Impedance Mismatch (임피던스 불일치) : 관계형 테이블과 애플리케이션 객체간에 데이터를 이동할 때 발생하는 차이, 어려움을 포괄하는 용어 객체를 사용하는 방식..

ORM(Object-Relational Mapper)

ORM (Object-Relational Mapper)은 관계형 데이터베이스 테이블에 저장된 데이터를 응용 프로그램 코드에서 더 일반적으로 사용되는 개체로 자동 전송하는 코드 라이브러리입니다. 위 그림과 같이 SQL 언어의 관계형 데이터베이스와 프로그래밍 코드 사이의 다리 역할을 해준다고 생각하면 됩니다. ORM은 개발자가 SQL 대신 Python 코드를 작성하여 데이터베이스에서 데이터와 스키마를 생성, 읽기, 업데이트 및 삭제와 같은 일을 수행할 수 있도록 합니다. 물론 알맞은 데이터베이스 엔진을 활용해 직접 SQL 쿼리문을 보내는 방법도 있지만, ORM을 사용하면 개발자는 SQL 또는 stored procedures를 작성하지 않고 데이터베이스 작업에 익숙한 프로그래밍 언어를 사용할 수 있습니다. 즉..

ORM 관련 영상 및 자료

1. full stack python - ORM 뿐만 아니라 database sql Django DevOps 등 다양한 개발 관련 자료 www.fullstackpython.com/object-relational-mappers-orms.html Object-relational Mappers (ORMs) Object-relational mappers (ORMs) bridge relational databases and data represented in Python code. www.fullstackpython.com 2. SQLAlchemy 공식문서 사이트 - ORM 사용법 등 docs.sqlalchemy.org/en/14/ SQLAlchemy Documentation — SQLAlchemy 1.4 Doc..

SQL 테이블 유형 허용조건/제약조건

1. ⭕ 허용 조건 INTEGER, BOOLEAN : 정수 데이터 유형은 숫자 또는 나이의 개수와 같은 정수 값을 저장할 수 있습니다. 일부 구현에서 부울 값은 0 또는 1의 정수 값으로 표시됩니다. FLOAT, DOUBLE, REAL : 부동 소수점 데이터 유형은 측정 값 또는 분수 값과 같은 보다 정확한 숫자 데이터를 저장할 수 있습니다. 해당 값에 필요한 부동 소수점 정밀도에 따라 다른 유형을 사용할 수 있습니다. CHARACTER(num_chars), VARCHAR(num_chars), TEXT : 텍스트 기반 데이터 유형은 모든 부분에서 문자열과 텍스트를 저장할 수 있습니다. 다양한 유형 간의 차이는 일반적으로 텍스트로 작업 할 때 데이터베이스의 효율성을 뒷받침합니다. CHARACTER 및 VA..

[SQL 명령어] INSERT, UPDATE, DELETE (DML)

1. Inserting new data 1) 기본 INSERT INTO mytable VALUES (value_or_expr, another_value_or_expr, …), (value_or_expr_2, another_value_or_expr_2, …), …; 2) 열을 지정해 데이터 삽입 경우에 따라, 불완전한 데이터가 있고 테이블에 기본값을 지원하는 열이 포함 된 경우, 행 추가 시 원하는 열의 공간을 지정해 데이터를 추가 할 수 있다. (column, another_column, …) VALUES (value_or_expr, another_value_or_expr, …), (value_or_expr_2, another_value_or_expr_2, …), …; 3) 값에 수식, 문자열 표현식 가..

728x90
반응형