본문 바로가기

BackEnd129

SQL 16편: 데이터 정의어 DDL(CREATE, ALTER, RENAME, TRUNCATE, DROP) 데이터 정의어 DDL(Data Definition Language) - 객체의 생성/변경/삭제 관련 기능 수행 - DML(데이터 조작어)와 달리 명령어를 수행하자마자 DB에 수행한 내용이 바로 반영된다(즉 바로 COMMIT 되는 것이며, ROLLBACK이 불가하다). 대표적으로 CREATE, ALTER가 있다. CREATE 테이블을 생성하는 명령어 CREATE TABLE 소유계정.테이블 이름(열이름1 열1자료형, 열이름2 열2자료형, .... ); 테이블 이름 생성 규칙 1. 테이블 이름은 문자로 시작해야 한다. 2. 30byte 이하여야 한다. 3. 같은 사용자 소유의 테이블 이름은 중복될 수 없다 4. 특수문자는 $, #, _ 를 사용할 수 있다. 5. SQL 키워드는 테이블 이름으로 사용할 수 없다.. 2022. 1. 9.
SQL 15편: 트랜잭션과 세션 (ROLLBACK, COMMIT, 읽기 일관성, LOCK, HANG) 트랜잭션 - 한 개 이상의 데이터 조작 명령어(DML)로 이루어진 어떤 기능 한 가지를 수행하는 SQL문 덩어리이다. - 하나의 트랜잭션 내에 있는 여러 명령어를 한 번에 수행하여 작업을 완료하거나 아예 모두 수행하지 않는 상태, 즉 모든 작업을 취소하도록 한다. ='ALL OR NOTHING' - 트랜잭션을 제어하기 위해 사용하는 명령어를 TCL이라고 하며, COMMIT과 ROLLBACK이 이에 해당된다. - 데이터베이스에 접속하는 동시에 시작되어 TCL, DDL, DCL을 실행할 때 기존 트랜잭션이 끝나고 새 트랜잭션이 시작되는 것이 반복된다. ROLLBACK :트랜잭션을 취소하고 싶을 때 현재 트랜잭션에 포함된 데이터 조작 관련 명령어의 수행을 모두 취소한다. 명령어가 취소될 경우에 대비해 변경 전.. 2022. 1. 3.
SQL 14편: 데이터 조작어 DML(INSERT, DELETE, UPDATE) INSERT문 INSERT INTO 테이블 이름 (열1, 열2, ...) (생략시= 테이블을 만들 때 설정한 순서) VALUES (열1 값, 열2 값, ...); 특정 테이블에 데이터를 새로 추가할 때 사용한다. 열 지정을 생략하면 해당 테이블을 만들 때 설정한 열 순서대로 모두 나열되어 있다고 가정하고 데이터를 작성하면 된다. NULL을 INSERT하고 싶은 경우 세 가지 방법 1. NULL이라고 작성하기 - VALUES(1, 'A', NULL); 2. ''으로 표현하기 - VALUES(1, 'A', ''); 3. INSERT INTO 절에서 열 이름을 생략하는 방법 - INSERT INTO 테이블 이름 (열1, 열2) VALUES(1, 'A') 날짜 데이터를 INSERT하고 싶은 경우 1. '2021.. 2021. 12. 30.
SQL 13편: 서브쿼리 서브쿼리 서브쿼리는 SQL문을 실행하는 데 필요한 데이터를 추가로 조회하기 위해 SQL문 내부에서 사용하는 SELECT문을 의미한다. 이에 반해 서브쿼리의 결과 값을 사용하여 기능을 수행하는 영역은 메인쿼리라고 부른다. 서브쿼리의 특징 서브쿼리의 특징을 정리하면 다음과 같다. 1. 서브쿼리는 비교 대상의 오른쪽에 놓인다. 2. 괄호 ()로 묶어 사용한다. 3. ORDER BY절을 사용할 수 없다. (특수한 경우 제외) 4. 메인 쿼리의 비교 대상과 같은 자료형과, 같은 개수로 지정해야 한다. 5. 서브쿼리의 결과 행 수는 메인쿼리의 연산자 종류(단일행 연산자인지, 다중행 연산자인지)와 호환 가능해야 한다. 단일행 서브쿼리 특정 함수를 사용한 결과 값이 하나일 때 단일행 서브쿼리로서 사용할 수 있다. 단일.. 2021. 12. 30.
SQL 12편: 조인 (집합 연산자와 조인의 차이점, WHERE절 조인, SQL-99 표준 문법 조인) 집합 연산자와 조인의 차이점 - 집합 연산자를 사용한 결과는 두 개 이상의 SELECT문의 결과 값을 세로로 연결한 것. 즉 행이 늘어나는 것 - 조인을 사용한 결과는 두 개 이상의 테이블 데이터를 가로로 연결한 것. 즉 열이 늘어나는 것 FROM절에는 여러 개 테이블을 지정하는 것이 가능하다. 꼭 테이블이 아니더라도 테이블 형태이면 모두 FROM절에 지정할 수 있다. (뷰, 서브쿼리 등) FROM절에 명시한 각 테이블을 구성하는 행이 모든 경우의 수(데카르트 곱)로 출력된다. 그렇기 때문에 이 모든 경우의 수들 중에서 적절한 출력 행을 선정하는 조건식을 담은 WHERE 절이 필요하다. 다른 테이블의 동일한 열 이름 구분하기 여러 테이블에 동일한 열이 들어 있는 경우, 구분을 위해 아래와 같이 표현한다... 2021. 12. 27.
SQL 11편: GROUP BY절 사용하기(+ HAVING절) GROUP BY절 GROUP BY절의 값이 동일한 것 끼리 같은 그룹이 되며, 이 같은 그룹끼리 연산된다. GROUP BY절에 명시하는 열은 여러 개 지정할 수 있다. 먼저 지정한 열로 대그룹을 나누고 그 다음 지정한 열로 소그룹을 나눈다. GROUP BY 절에는 별칭이 인식되지 않으므로, 열 이름이나 연산식을 그대로 지정해 주어야 한다. 다중행 함수를 사용하지 않은 일반 열은 GROUP BY절에 명시하지 않으면 SELECT 절에서 사용할 수 없다. 행의 개수가 차이가 나기 때문이다. HAVING 절 GROUP BY절에 조건을 줄 때 사용한다. 즉, 그룹화된 결과 값의 범위를 제한하는 데 사용한다. SELECT문에 GROUP BY절이 존재할 때만 사용할 수 있으며, GROUP BY절 바로 다음에 작성한다.. 2021. 12. 27.
SQL 10편: 다중행 함수(SUM, COUNT, MAX, MIN, AVG) 다중행 함수란 여러 행을 입력 받아 하나의 행으로 결과가 나오는 함수이다. SUM(DISTINCT(생략시 기본값=ALL) 열 이름) NULL데이터는 제외하고 합계를 구하므로 NULL데이터가 있어도 정상적으로 연산된다. DISTINCT 를 쓸 경우, 중복 데이터는 제외하고 계산한다. COUNT(DISTINCT(생략시 기본값=ALL) 열 이름) WHERE절의 조건식과 함께 사용하면 조건에 맞는 행의 개수를 구할 수 있다. EX1. 특정 회원이 작성한 총 글 수, 댓글 수, 등을 잘 조합하여 회원 등급을 관리할 수 있다. EX2. 웹 쇼핑몰에서 어떤 상품이 많이 구매되었는지 분석할 때도 활용할 수 있다. MAX(DISTINCT(생략시 기본값=ALL) 열 이름) MIN(DISTINCT(생략시 기본값=ALL) 열.. 2021. 12. 27.
SQL 9편: DECODE 함수와 CASE문 열 값이나 데이터 값에 따라 어떤 데이터를 반환할 지 정할 때 사용한다. DECODE 함수 DECODE(검사 대상, 조건1, 조건1 일치 반환 결과, ... , 조건 N, 조건N 일치 반환 결과, 조건1~N과 일치한 경우가 없을 때 반환할 결과(기본값=NULL)) CASE문 CASE 검사 대상 WHEN 조건1 THEN 조건1 true일 때 반환할 결과 ... WHEN 조건N THEN 조건N true일 때 반환할 결과 ELSE 조건1~N과 일치하는 경우가 없을 때 반환할 결과 END AS 열이름 2021. 12. 27.
SQL 8편: NULL 처리 함수(NVL, NVL2) NULL 처리 함수 특정 열의 데이터가 NULL일 경우에 연산 수행을 위해 데이터를 NULL이 아닌 다른 값으로 대체해 주어야 할 때 사용한다. NVL 함수 NVL(검사할 열, 데이터가 NULL일 경우 반환할 데이터) NULL이 아닐 경우 데이터를 그대로 반환, NULL인 경우 지정한 데이터를 반환 NVL2 함수 NVL2(검사할 열, NULL아닐 경우 반환할 데이터 OR 계산식, NULL일 경우 반환할 데이터 OR 계산식) 데이터가 NULL이 아닐 때 반환할 데이터도 지정할 수 있다. 2021. 12. 27.
SQL 7편: 형 변환 함수(TO_CHAR, TO_NUMBER, TO_DATE) 형 변환 함수 지정된 자료형을 바꿔 주는 함수 암시적 형 변환(= 자동 형 변환) 숫자로 인식 가능한 문자 데이터가 자동으로 숫자로 바뀐 후 연산이 수행 되는 것. 숫자 + '500' 계산 시 '500'의 500은 문자 데이터이지만, 숫자 데이터로 취급하고 더해 줌. 명시적 형 변환 TO_CHAR(날짜, '날짜or시간or숫자 형식') TO_NUMBER('문자열', '숫자 형식') TO_DATE('문자열', '날짜 형식') TO_CHAR 숫자, 날짜 → 문자 TO_NUMBER 문자 → 숫자 TO_DATE 문자 → 날짜 원하는 형식으로 형 변환을 해주는 함수. ※ 날짜 형식 CC 세기 YYYY, RRRR 연(4자리 숫자) YY, RR 연(2자리 숫자) MM 월(2자리 숫자) MON 월(월 이름 약자) MON.. 2021. 12. 27.
SQL 6편: 날짜 함수(SYSDATE, ADD_MONTHS, MONTHS_BETWEEN, NEXT_DAY, LAST_DAY, ROUND) 날짜 데이터의 간단한 연산 날짜 데이터 + 숫자 숫자 만큼의 일 수 이후의 날짜 날짜 데이터 - 숫자 숫자 만큼의 일 수 이전의 날짜 날짜 데이터 - 날짜 데이터 두 날짜 데이터 간의 일 수 차이 날짜 데이터 + 날짜 데이터 X(불가) SYSDATE 오라클 DB 서버가 놓인 OS의 현재 날짜와 시간을 보여준다. 입력 값이 없지만, 함수이다. ADD_MONTHS(날짜, 더할 개월 수) 지정한 날짜에서 N달 후의 날짜를 반환한다. 윤년(2월 29일이 있는 년도) 계산을 편하게 해준다. MONTHS_BETWEEN(날짜1, 날짜2) 두 날짜 간의 개월 수 차이를 소수 점 단위까지 구해준다. NEXT_DAY(날짜, 요일 문자) 특정 날짜를 기준으로 돌아오는 요일의 날짜를 출력해주는 함수 LAST_DAY(날짜) 해.. 2021. 12. 27.
SQL 5편: 숫자 함수(ROUND, TRUNC, CEIL, FLOOR, MOD) 숫자 함수 종류 요약 ROUND(숫자, 연산 위치(기본값=0)) 반올림 TRUNC(숫자, 연산 위치(기본값=0)) 버림 CEIL(숫자) 가장 가까운 큰 정수 FLOOR(숫자) 가장 가까운 작은 정수 MOD(나눠질 숫자, 나눌 숫자) 나머지 ROUND(숫자, 연산 위치(기본값=0)) TRUNC(숫자, 연산 위치(기본값=0)) *연산 위치 -2 10^2 자리까지 표현 -1 10^1 자리까지 표현 0 소수 없이 정수만 표현 1 소수점 첫째자리까지 표현 2 소수점 둘째자리까지 표현 CEIL(숫자) 입력된 숫자와 제일 가까운 큰 정수 FLOOR(숫자) 입력된 숫자와 제일 가까운 작은 정수 MOD(나눠질 숫자, 나눌 숫자) 나머지 반환 2021. 12. 27.