2025/01/20 12

SQL 4장 실습문제

소스파일 : https://github.com/bjpublic/postgresql1한해 동안 특수학교에서 졸업한 학생의 수가 25명 이상이었던 학교 이름과 남, 여 졸업생 수를 출력.# 테이블 정보 확인\dt # 어떤 컬럼에 "특수학교"라는 데이터가 있는지 유추되는 컬럼 하나씩 직접 확인학교급명에 들어있음# 졸업한 학생의 수가 25명 이상졸업학생수에 대한 칼럼은 없고, 남자 졸업생수와 여자 졸업생수만 있어서 둘을 합침# 정답select 학교명, 졸업남자수, 졸업여자수 from graduates where 학교급명 = '특수학교' AND (졸업남자수 +졸업여자수) >= 25;22015년에 남,여 통합 취업률이 50%가 넘은 학교의 지역명, 이름과 취업률 출력.# 졸업년도 확인. date_trunc로 년도만..

SQL 2025.01.20

SQL 문자열 연산자

# || 연산자. 문자열 데이터 + 문자열이 아닌 데이터 가능. 결과는 문자열 데이터select 'postgre' || 'sql' as result, 'price: ' || 300 || 'won' as result;# length() 문자열의 길이 반환# substring( from 정수 for 정수)문자열의 지정 위치부터 위치까지 반환# left(, 정수)문자열의 지정 위치까지 반환# concat(, , , ...)다수의 문자열을 병합# position( in ) 문자열의 위치 반환select position('postgre' in 'my sql language is postgresql'); ㅡ> 20# replace(, , )문자열의 바뀔문열을 바뀔문자열로 대체함select replace('my sq..

SQL 2025.01.20

SQL 패턴매칭 연산자

# LIKE 연산자조회할 컬럼명에서 설정한 패턴을 가지고 있는 값들 조회조회할 컬럼명 LIKE '패턴'; 특정 값이 패턴과 일치하면 true, 불일치하면 false특정 값 LIKE '패턴';와일드카드 문자 %,_% = 문자열대체, _ = 문자대체select 'pink' like '_in_', 'pink' like 'p%k', 'pink' like 'p__';# ILIKE 연산자대소문자 구분하지 않음, LIKE 연산자는 구분함LIKE = ~~, NOT LIKE = !~~, ILIKE = ~~*, NOT ILIKE = !~~*

SQL 2025.01.20

SQL 서브쿼리 연산자

이전글 https://spring0691.tistory.com/59서브쿼리 연산자# 1개이상의 행을 반환하면 true, 아무것도 없으면 falseEXISTS (서브쿼리)select exists(select * from current_time); ㅡ> true# 서브쿼리에서 같은 행이 하나라도 있으면 true, 아니면 falseselect * from table where amount in (10,20,30); id | name | amount | | id | name | amount -----+------------+--------+ +-----+--------+-------- 1 | apple | 30 | | 1 | a..

SQL 2025.01.20

SQL 날짜 & 시간 연산자, 날짜 & 시간 함수

연산자# 날짜 + 정수select date '2020-07-15' + integer '7' as result; ㅡ> 2020-07-22# 날짜 + 시간select date '2020-07-15' + time '13:00' as result; ㅡ> 2020-07-15 13:00:00# 날짜 - 날짜select date '2020-07-15' - date '2020-07-01' as result; ㅡ> 14# 시간 - 시간select time '13:00' - time '5:00' as result; ㅡ> 08:00:00 (INTERVAL 데이터 타입)# 정수 * 시간 간격(INTERVAL)select 60 * interval '1 second' as result; ㅡ> 00:01:00# 시간 간..

SQL 2025.01.20

SQL JSON 생성,처리 함수

json 입력테스트의 정확한 사본 생성 처리속도가 느림jsonb 처리속도가 비교적 빠름 데이터 저장속도가 비교적 느림기능/특성TEXT 타입JSON/JSONB 타입데이터 저장문자열 그대로 저장JSON 형식 유지 (JSONB: 바이너리)구조적 무결성보장되지 않음JSON 문법 검증이 필요검색 및 접근문자열 연산(일치, 패턴 검색)키-값 기반 접근, 내부 필드 검색속도간단한 문자열 검색 시 빠름JSONB는 빠른 검색 및 인덱싱 지원인덱스 지원일반 인덱스 사용 가능GIN 인덱스 등 JSON 전용 인덱스유연성비구조적 데이터에 적합반정형 데이터 저장 및 쿼리에 적합공간 효율성그대로 저장 (공백 포함)JSONB는 압축되어 저장됨수정 기능전체 업데이트만 가능개별 키 수정 가능(JSONB)JSON 생성함수# JSON ..

SQL 2025.01.20

SQL 배열 연산자

배열 연산자# 원소 단위로 비교하여 같으면 같다. (INTEGER 형변환 하면서 반올림처리)select array[5.1,1.6,3]::INTEGER[] = ARRAY[5,2,3] as results; ㅡ> true# 원소 단위로 앞에서부터 비교하여 크면 크다. 작거나 같으면 작다. select array[5,3,3] > ARRAY[5,2,4] as results; ㅡ> true# 배열의 포함관계. 집합의 포함기호 ⊃와 같은 의미select array[1,2,3] @> Array[1,3] as results; ㅡ> true# 원소가 하나라도 겹치는게 있는지select array[1,2,3,4] && array[1,5,6] as results; ㅡ> true# 배열병합, 2차원 배열도 1차원 배열과 입력..

SQL 2025.01.20

SQL COALESCE 함수

COALESCE 함수데이터 조회시 NULL값을 다른 기본값으로 대체할때 자주사용.# map함수처럼 인자들을 반복하며 null값인지 조회하고 null값이 아닌값이 나오면 해당값을 리턴.각 매개변수들의 타입은 같아야함SELECT COALESCE(null, null, null, '빈 값') as column1; column1--------- 빈 값(1 row)단 여기서 COALESCE의 인자로 특정값이 아닌 컬럼을 넣는다면 해당 컬럼의 모든 값을 조회후 모든 null값을 그 뒤에 지정한 값으로 대체한다.select * from student_score; id | name | score----+-----------+------- 1 | Heewon | 87 2 | Gahye |..

SQL 2025.01.20