목록전체 글 (49)
걸음마부터 달리기
일반집합연산자와 순수관계연산자로 처음 시작하여 이를 바탕으로 SQL의 기반 이론이 되었다.일반집합연산자와 현재의 SQL은1. UNION 연산은 UNION 기능으로, 2. INTERSECTION 연산은 INTERSECT 기능으로, 3. DIFFERENCE 연산은 EXCEPT(Oracle은 MINUS) 기능으로, 4. PRODUCT 연산은 CROSS JOIN 기능으로 구현되었다. 첫번째의 UNION은 기존에 공통 교집합의 중복을 없애기 위해 사전 작업으로 정렬을 하는 추가적인 시스템 부하가 발생했다. 추후 UNION ALL 이 나왔는데 결과값이 UNION ALL과 UNION이 같다면 오버헤드가 적은 UNION ALL을 사용하자. 아래는 DB 구현을 위한 새롭게 만들어진 순수관계연산자이다. 5. SELECT ..
두 개 이상의 테이블 들을 연결 또는 결합하여 데이터를 출력하는 것을 JOIN일반적인 경우 행들은 PRIMARY KEY(PK)나 FOREIGN KEY(FK) 값의 연관에 의해 JOIN이 성립된다. 하지만 어떤 경우에는 이러한 PK, FK의 관계가 없어도 논리적인 값들의 연관만으로 JOIN이 성립 가능하다. 주의할 점은 FROM 절에 여러 테이블이 나열되더라도 SQL에서 데이터를 처리할 때는 단 두 개의 집합 간에만 조인 이 일어난다는 것이다. FROM 절에 A, B, C 테이블이 나열되었더라도 특정 2개의 테이블만 먼저 조인 처리되고, 2개의 테이블이 조인되어서 처리된 새로운 데 이터 집합과 남은 한 개의 테이블이 다음 차례로 조인되는 것이다 EQUI JOIN두개의 테이블 간 칼럼값들이 서로 정확하게 일..
ORDER BY 절은 SQL 문장으로 조회된 데이터들을 다양한 목적에 맞게 특정 칼럼을 기준으로 정렬하여 출력하는데 사용한다. ORDER BY 절에 칼럼(Column) 명 대신에 SELECT 절에서 사용한 ALIAS 명이나 칼럼 순서를 나타내는 정수도 사용 가능하다. 그리고 별도로 정렬 방식을 지정하지 않으면 기본적으로 오름 차순이 적용되며, SQL 문장의 제일 마지막에 위치한다. ORDER BY 를 기입하지 않으면 튜플은 서로 순서가 없는게 맞다. 하지만 ORDER BY 칼럼명 까지만 기입하여 ORDER BY를 실행하면 뒤에 DESC 냐 ASC냐 상관없이 그냥 오름차순 정리한다는 거다. SELECT 칼럼명 [ALIAS명] FROM 테이블명 [WHERE 조건식] [GROUP BY 칼럼(Column)이나..
쿼리 실행 순서는 아래와 같다.FROM > WHERE > GROUP BY > HAVING > SELECT > ORDER BY > LIMIT/OFFSET이거때문에 집계함수가 WHERE 절에는 올 수가 없다. 왜냐하면 집계함수를 쓸려면 어찌됐든 GROUP BY 로 인한 그룹화 이후에 써야하는데 GROUP BY보다 WHERE절 실행이 먼저라 그룹화 이전이기 때문이다.추가) 만약 같은 절 안에서 서브쿼리가 있을 경우 해당 서브쿼리가 메인쿼리보다 먼저 수행된다.HAVING AVG(P.HEIGHT) 일단 메인쿼리의 순서대로 FROM , WHERE 등등 하다가 HAVING절까지 오면 그 HAVING 절 안에서 서브쿼리의 연산이 우선된다. 여러 행들의 그룹(GROUP BY)이 모여서 그룹당 단 하나의 결과를 돌려주는..
함수는 다양한 기준으로 분류할 수 있는데, 벤더에서 제공하는 함수인 내장 함수(Built-in Function)와 사용자가 정의할 수 있는 함수(User Defined Function)로 나눌 수 있다. 본 절에서는 각 벤더에서 제공하는 데이터베이스를 설치하면 기본적으로 제공되는 SQL 내장 함수에 대해 설명한다 내장 함수는 다시 함수의 입력 값이 단일행 값이 입력되는 단일행 함수(Single-Row Fun ction)와 여러 행의 값이 입력되는 다중행 함수(Multi-Row Function)로 나눌 수 있다. == 결국엔 함수에는 행이 들어가야된다는거고 행이 들어갈수 있는 어떤곳이라도 함수사용은 가능하다.다중행 함수는 다시 집계 함수(Aggregate Function), 그룹 함수(Group Fun c..
자료를 검색할 때 SELECT 절과 FROM 절만을 사용하여 기본적인 SQL 문장을 구성한다면, 테이블에 있는 모든 자료들이 결과로 출력되어 실제로 원하는 자 료를 확인하기 어려울 수 있다. 사용자들은 자신이 원하는 자료만을 검색하기 위해서 SQL 문장에 WHERE 절을 이용하여 자료들에 대하여 제한할 수 있다Where절에는 크게두 개 이상의 테이블에 대한 조인 조건을 기술하거나 결과를 제한하기 위한 조건을 기술할 수도 있다. SELECT [DISTINCT/ALL] 칼럼명 [ALIAS명]FROM 테이블명WHERE 조건식조건식은 [칼럼명] [연산자] [문자,숫자,표현식 | 비교칼럼명(JOIN시)]이다.이때 연산자는 SQL연산자, 비교연산자가 가능하고 논리연산자는 조건식과 조건식을 묶을때 사용한다. 연산자 ..
트랜잭션트랜잭션은 데이터베이스의 논리적 연산단위이다. 트랜잭션(TRANSACTION)이란 밀접히 관련되어 분리될 수 없는 한 개 이상의 데이터베이스 조작을 가리킨다. 하나의 트랜잭션에는 하나 이상의 SQL 문장이 포함된다. 트랜잭션은 분할할 수 없는 최소의 단위이다. 그렇기 때문에 전부 적용하거나 전부 취소한다. TCL ( TRANSACTION CONTROL LANG)결국엔 하나의 트랜잭션을 수행시킨 후 커밋을 치던지 , 롤백을 하던지 , 롤백을 할때는 특정 DB의 저장지점으로 돌려놔야 한다. 이때의 저장점(SAVEPOINT) 가 필요하다. 이들을 수행하는 명령어이다. COMMIT입력한 자료나 수정한 자료에 대해서 또는 삭제한 자료에 대해서 전혀 문제가 없다고 판단되었을 경우 COMMIT 명령어를 통해서..
DML의 자료들 입력 수정 삭제 조회의 SQL을 살펴보자. INSERTINSERT INTO 테이블명 (COLUMN LIST~)VALUES (COLUMN LIST에 넣을 순서대로 VALUE LIST)INSERT INTO 테이블명 VALUES (전체 COLUMN LIST에 넣을 순서대로 VALUE LIST)순서는 1대1 매핑해서 입력하면 된다. CHAR나 VARCHAR일 경우 ' ' 로 감싸서 입력한다.사실 COLUMN 일부분만 INSERT할때는 정확히 1대1 매핑해서 VALUE LIST를 입력하지 않아도 된다. 이때 입력하지 않은 데이터는 자동으로 NULL로 들어간다. 단 이때도 만약 PK이거나 NOT NULL 제약이 있으면 이또한 허용하지 않는다. UPDATE 입력한 정보 중에 잘못 입력되거나 변경이 ..