분류 전체보기
-
SQL - STR (문자열 표현)SQL 2022. 12. 12. 10:08
-- 2. 문자형 함수: CHAR, VARCHAR 타입을 인수로 받아 VARCHAR 타입의 값을 반환하는 함수이다. -- 1) CONCAT(char1, char2, ...) SELECT CONCAT('www.', 'mariadb','.org'); -- 2) LOWER(char), UPPER(char) -- LOWER : 주어진 문자열을 소문자로 변환시켜 준다. -- UPPER : 주어진 문자열을 대문자로 변환시켜 준다. SELECT UPPER('mariadb') name UNION ALL SELECT LOWER('mariadb') name; -- UNION 은 합집합이며, UNION ALL 은 중복을 포함하는 합집합 이다. -- 3) LPAD(char1, n [,char2]), RPAD(char1, n ..
-
SQL - NUMBERIC (숫자 표현)SQL 2022. 12. 10. 16:17
-- 1. 숫자형 함수 : 수 값을 인수로 받아 NUMBER 타입의 값을 반환하는 함수. -- 여기서는 자주 사용 하는 함수 몇가지만 소개 한다. -- 1) ABS(n) : 절대값을 계산하는 함수이다. SELECT ABS (-1.234) absolute; -- 결과 : 1.234 -- 2) CEIL(n) : 올림값을 반환하는 함수이다. SELECT CEIL(10.1234) "CEIL"; -- 결과 : 11 SELECT CEIL(-10.1234) "CEIL"; -- 결과 : -10 -- 3) FLOOR(n) : 버림값을 반환하는 함수이다. SELECT FLOOR(10.1234) "FLOOR"; -- 결과 : 10 SELECT FLOOR(-10.1234) "FLOOR"; -- 결과 : -11 -- 4) RO..
-
SQL - DATE TIME (날짜 표현)SQL 2022. 12. 10. 16:17
/* 1. 날짜 표시 */ -- 1) dayofweek(date) : 날짜를 한 주의 몇 번째 요일인지를 나타내는 숫자로 리턴한다. -- (1 = 일요일, 2 = 월요일, ... 7 = 토요일) select dayofweek('2021-06-30') as '요일'; -- 4 -- 2) weekday(date) : 날짜를 한 주의 몇 번째 요일인지를 나타내는 숫자로 리턴한다. -- (0 = 월요일, 1=화요일 ... 6 = 일요일) select weekday('2021-06-30') as '요일'; -- 2 -- 3) dayofmonth(date) : 그 달의 몇 번째 날인지를 알려준다. 리턴 값은 1에서 31 사이이다. select dayofmonth('2021-06-29') as '일'; -- 4) d..
-
SQL - AGGREGATE (집계 함수)SQL 2022. 12. 10. 16:16
-- 집계 함수 : 여러행 또는 테이블 전체 행으로부터 하나의 결과값을 반환하는 함수 -- 집계함수(Aggregate function)의 이해 -- GROUP BY절을 이용하여 그룹 당 하나의 결과로 그룹화 할 수 있다. -- HAVING절을 사용하여 집계함수를 이용한 조건 비교를 할 수 있다. -- MIN, MAX 함수는 모든 자료형에 사용 할 수 있다. -- 숫자 뿐 아니라 정렬 가능한 대상은 최대 값을 뽑아 낼 수 있다. -- 일반적으로 가장 많이 사용하는 집계함수에는 AVG(평균), COUNT(개수), MAX(최대값), MIN(최소값), SUM(합계) 등이 있다. -- 1) COUNT : 검색된 행의 수를 반환 한다. -- 검색된 행의 총 수 4개를 반환. 즉 4개의 부서가 존재한다. SELECT..
-
SQL - 정규화SQL 2022. 12. 10. 16:15
*정규화란? RDBMS 설계에서 중복을 최소화하게 데이터를 구조화하는 것 자료 중복으로 이상 현상을 방지하기 위해 사용한다. *이상현상 삽입 이상 : 원치않는 데이터도 삽입 삭제 이상 : 원치않는 데이터도 삭제 갱신 이상 : 데이터 일부만 갱신 *정규화의 종류 정규화는 1NF, 2NF, 3NF, BCNF, 4NF, 5NF가 있다. 3NF까지 완료되었다면 정규화가 되었다고 본다. 각 단계는 이전 단계를 기본적으로 모두 만족해야 한다. *1NF 모든 항목에 값이 있어야 하며(NOT NULL), 중복열이 없어야 한다. *2NF 개체의 속성이 한 식별자에 종속되어야 한다. (부분 함수 종속 제거) 즉, 복합키를 없애야 한다는 뜻이다. *3NF X로 인해 Y가 결정되고 Y로 인해 Z가 결정되는 경우 (이행 함수 ..
-
SQL - limit, offset (페이징)SQL 2022. 12. 10. 16:12
*limit&offset 많은 데이터를 페이징하여 보여주기 위해 사용한다. limit n : n개까지 보여준다. limit n, m : n행부터 m개까지 보여준다. limit m offset n : n행부터 m개까지 보여준다. limit와 offset은 대용량 데이터일 경우 성능 저하가 있다. 그래서 데이터를 먼저 찾아서 특정 컬럼을 추려내고 그 안에서 뽑아오는 다른 방법이 존재한다. select * from employees e ; -- 19개 -- 5개씩 쪼개보자 -- 0~4/5~9/10~14/15~18 -- 1) limit n : n개를 보여준다. select * from employees e limit 5; -- 2) limit n,m : n번 인덱스부터 m개 보여준다. select * from ..
-
SQL - auto_increment (자동 증가)SQL 2022. 12. 10. 16:10
*auto_increment 자동으로 증가하는 속성이다. auto_increment 속성을 사용하는 컬럼은 반드시 키 설정이 되어있어야 한다. -> 순차적으로 증가하는데 겹치면 안 되기 때문에 테이블을 생성할 때 설정하거나 이미 만들어진 테이블에도 설정 가능하다. 속성값을 초기화 할 수 있다. (이 때, 초기화는 0이 아니라 초기의 값을 정해주는 것이다.) -- auto_increment는 자동증가 '속성'이다. -- 중복되지 않는 값을 만들 때 자주 사용한다. (pk 생성 시 설정해준다.) -- 1. 테이블을 만들면서 생성 create table auto_inc( no int(10) primary key auto_increment, name varchar(10) not null ); insert int..
-
SQL - VIEWSQL 2022. 12. 10. 16:09
*VIEW 실체하는 테이블이 아닌 가상에 존재하는 임시 테이블이다. 복잡한 서브쿼리나 조인을 통해 view로 생성해두면 이후에는 테이블에서 조회하듯이 간단히 select문으로 데이터를 검색할 수 있다. view는 자신만의 인덱스를 가질 수 없다. view를 생성할 때 OR REPLACE를 사용하면 기존에 같은 이름으로 뷰가 있다면 수정하고, 없다면 생성을 한다. 원래는 보기만 가능하지만 점점 수정도 가능해지는 추세이다. *view의 장점 누군가 어려운 쿼리로 만들어두면 다른 사람이 사용하기 쉽다. 보안성이 높다. (원본 테이블에 직접 관여하는 것이 아니기 때문에 보여져도 되는 데이터만 뷰로 만들 수 있어서) *view의 수정 view를 수정했을 때 왜 원본테이블의 모든 값이 변경되지 않았을까? 이유 : ..