SQL 첫걸음왕초보를 위한 정말 쉬운 SQL 입문서를 만나보자!본격적인 빅데이터 시대에 접어들면서 기존 대비 더 효율적이고 폭넓은 데이터 분석을 위한 수요가 커질 것으로 기대되는 가운데, SQL 활용 범위 역시 더욱 확대될 전망이다. 그 과정에서 취업 준비생이나 일반
넓은 의미로는 컴퓨터 안에 기록된 모든 것으로 일반적으로 통용되는 의미는 특정 데이터를 확인하고 싶을 때 간단하게 찾아낼 수 있도록 정리된 형태의 데이터입니다.생산성시스템 개발 과정에서 생산성 향상을 도모하며 어떤 시스템에서 데이터를 검색, 추가, 삭제, 갱신과 같은
계층형 데이터베이스폴더와 파일 등의 계층 구조로 데이터를 저장하는 방식의 데이터베이스이다.하드디스크 / DVD파일시스템을 이러한 계층형 데이터베이스라고 하며 최근에는 많이 사용하고 있지 않다.관계형 데이터베이스행과 열을 가지는 표 형식의 데이터(2차원 데이터)를 저장하
클라이언트 / 서버 모델사용자 조작에 따라 요청을 전달하는 "클라이언트"와 해당 요청을 받아 처리하는 "서버"로 소프트웨어를 나누고, 복수의 컴퓨터 상에서 하나의 모델을 구현하는 시스템이다.웹 시스템 클라이언트 / 서버클라이언트 기능을 하는 사용자가 지정한 URL과 연
SELECT 명령어는 DML에 속하는 명령어로 데이터베이스의 데이터를 읽어올 수 있습니다.SELECT는 질의나 쿼리로 불리기도 합니다.SELECT : 명령의 종류: 모든 열FROM: 처리 대상을 지정하는 키워드테이블명: 테이블명;(세미콜른): 명령문의 마지막을 지정SE
DESC 명령어를 사용하면 테이블의 어떤 열이 정의되어 있는지 알 수 있다.즉 조회하고 싶은 테이블의 구조를 확인할 수 있다.Field : 컬럼 이름.Type : 자료형.Null : Null 허용 유무. YES 는 아무것도 입력하지 않아도 된다는 의미.Key : Key
기존에 SELECT 구를 사용하여 \*를 사용하면 모든 열을 취득했다. 하지만 원하는 열만 조회를 원하면 해당하는 열의 이름을 넣어 조회가 가능하다.열은 콤마(,)로 구분지어 여러개로 조회가 가능하다.테이블의 행은 열에 비해 훨씬 많을 수 있다. 이처럼 많은 행 속에서
복수의 조건을 조합할 경우 AND를 가장 많이 사용합니다. AND는 논리연산자의 하나로 좌우의 항목이 필요한 이항 연산자가 됩니다.AND 연산은 조건을 만족하는 행을 집합으로 표현했을 때 이들 집합이 겹치는 부분, 즉 "교집합" 으로 계산할 수 있습니다. AND연산자는
열명 LIKE '패턴'패턴을 정의할 때 사용할 수 있는 메타문자로는 %(퍼센트)와 \_(언더스코어)가 있다. 퍼센트는 임의의 문자열을 의미하며, 언더스코어는 임의의 문자 하나를 의미한다.패턴을 정의할 때는 메타문자를 여러개 사용 가능하며 와일드카드로 자주 쓰이는 \*는
\-SELECT 명령에 ORDER BY 구를 지정하면 검색 결과의 행 순서를 바꿀 수 있다.ASC는 생략 가능하다.검색 조건이 필요없으면 WHERE 구를 생략한다.1 < 2 < 10 < 1001999 < … < 2013 < … <
복수의 열을 지정해 정렬하는 경우ex) 상품코드와 해당 상품의 하위 번호까지 함께 고려하는 경우 정렬할 때 NULL값에 주의해야 한다!ORDER BY구를 지정해도 1개의 열만으로는 정확히 순서를 결정할 수 없는 경우가 많다.언제나 같은 순서로 결과를 얻고 싶다면, 반드
LIMIT구는 표준 SQL은 아니다.MYSQL과 PostgreSQL에서 사용할 수 있는 문법LIMIT 다음에는 최대 행수를 지정한다.만약, 테이블에 1개의 행만 있다면, LIMIT 3으로 지정하더라도 1개의 행만 반환된다.LIMIT으로 제한하는 행수는 최대 행수이므로
별명이 중복되지 않게 지정한다.별명은 예약어 AS를 사용해서 지정한다.SELECT구에서는 콤마(,)로 구분해서 복수의 식을 지정할 수 있고, 각각의 식에 별명을 붙일 수 있다.MySQL에서는 별명을 중복해서 지정해도 에러는 발생하지 않는다.But, 프로그래밍 언어에서
문자열 결합이란 문자열 데이터를 결합하는 연산을 말한다.문자열을 결합하는 연산자에는 데이터베이스 제품마다 방언이 있어서 차이가 있다.\+: SQL Server||: Oracle, DB2, PostgreSQCONCAT: MySQL연산자, || 연산자, CONCAT함수로
RDBMS에서는 시스템 날짜와 시간을 확인하는 함수를 제공한다.CURREUNT_TIMESTAMP는 함수이지만 인수를 필요로 하지 않는다.즉, 괄호를 사용하지 않는 함수이다.위의 예문에서 FROM구를 생략했는데, SELECT구만으로도 실행되지만, Oracle과 같이 전통
임의의 조건에 따라서 독자적으로 변환 처리를 지정해서 데이터를 변환하고 싶을 때CASE문을 사용할 수 있다.예를 들어, NULL값을 0으로 간주해서 계산하고 싶을 때는 어떻게 해야 할까?NULL값으로 연산한 결과는 모두 NULL이 되는데?이 경우에 CASE문을 이용해서
SELECT는 질의를 하면 DB 서버에서 클라이언트로 결과를 반환하는 검색 명령이다.반대로 INSERT,UPDATE,DELETE 등 데이터를 변경하는 명령은 클라이언트에서 서버로 데이터를 전송한다.sample41 저장된 데이터가 없는 테이블이다.DESC로 조회한 저장가
DELETE 명령을 실행하기 전 SELECT 명령으로 기존 테이블의 데이터를 확인하는 것이 좋다.WHERE구를 따로 지정하지 않고 DELETE하면 테이블의 모든 데이터가 삭제된다.또한 DELETE는 다른 명령처럼 열을 지정할 수 없어 WHERE 조건에 일치하는 모든 행
테이블에 저장되어 있는 데이터를 갱신하기 위해서는 UPDATE 명령을 사용한다.데이터를 잘못 입력하거나 변경되어 값을 수정해야 하는 경우 UPDATE 명령으로 셀 값을 갱신할 수 있다.SET구에서 =는 비교 연산자가 아닌 대입 연산자이다.위 명령을 실행하면 WHERE
데이터베이스에서 데이트를 삭제할 때는 ‘물리 삭제’와 ‘논리 삭제’ 두 가지 방법이 있다물리삭제 : DELETE 명령을 사용해 직접 데이터를 삭제하는 방식논리삭제 : 테이블에 '삭제플래그'와 같은 열을 만들어 UPDATE 명령으로 '삭제플래그' 값을 유효하게 갱신해두는
SQL에서 대표적인 집계함수(집합을 다루는 함수)는 다음과 같다. 일반적인 함수는 하나의 값을 인수로 받는 반면 집계함수는 집합을 인수로 받는다.COUNT는 인수로 주어진 집합의 개수를 반환한다.sample51에는 총 5개의 행이 있고, COUNT집계함수에서 \*은 '
SUM함수는 수치형 집합만을 지정한다.SUM/COUNT같이 반환값으로 연산도 가능하지만 AVG 함수로 쉽게 평균값을 구할 수 있다.MIN과 MAX 집계합수는 문자열형과 날짜시간형에도 사용할 수 있다.
GROUP BY구를 통해 지정된 열의 값이 같은 행을 하나의 그룹으로 묶어서 집계함수로 넘겨줄 수 있다.결과는 DISTINCT와 같다. GROUP BY의 의미는 집계함수와 함께 사용할 때 나타난다.GROUP BY에 의해 name이 4개의 그룹으로 나뉘고, 각 그룹별로
서브쿼리는 SELECT 명령으로 괄호로 묶어 지정하는 하부의 부수적인 질의이다. 보통 SQL명령의 WHERE구에 주로 지정된다.sample54 테이블에서 a값이 가장 작은 행을 삭제하려한다.보통 아래와 같은 순서로 진행된다.SELECT MIN(a)으로 가장 작은 값 검
서브쿼리의 일종을 상관 서브쿼리라 합니다. 더 자세한 정의는 상관 서브쿼리에서 확인하겠습니다.서브쿼리를 사용해 검색할 때 데이터 존재여부를 판별하기 위해 조건을 지정할 수 있습니다. 이런 경우 EXISTS 술어를 사용할 수 있습니다. 이때 EXISTS 술어는 단지 반환
데이터베이스 객체란 테이블이나 뷰, 인덱스 등 데이터베이스 내에 정의하는 모든 것을 일컫는 말로 구체적으로 이야기하면 실체를 가지는 어떤 것입니다. 따라서 객체의 종류에 따라 데이터베이스에 저장되는 내용도 달라집니다.쉽게 테이블은 객체이며 해당 테이블을 조작할 수 있는
데이터베이스 객체인 테이블을 작성, 삭제, 변경하는 명령을 DDL(Data Definition Language)이라 합니다.CREATE 명령을 사용하여 테이블, 뷰, 인덱스 등의 객체를 작성할 수 있습니다. 그 형태는 간단하게 표현해보면 아래와 같습니다.열을 정의할 때
CREATE TABLE로 테이블을 정의할 때 NOT NULL과 같은 제약 또한 정의할 수 있습니다. 이러한 제약은 저장될 데이터를 단어 의미 그대로 제한하는 역할을 합니다. NOT NULL 외에도 대표적인 제약조건으로는 기본기(Primary Key) 제약이나 외부참조(
인덱스(Index)는 색인이라고도 불리며 그 역할은 검색속도를 향상시키는 데 있습니다. 여기서 검색은 SELECT 명령 및 WHERE 구를 통해 조건을 지정하여 그에 알맞는 행을 찾는 과정을 의미합니다. 테이블에 인덱스가 존재하면 효율적인 검색이 가능해져 WHERE 구
인덱스(Index)는 DDL(Data Definition Language)을 사용하여 작성하거나 삭제합니다.사실 표준 SQL에서는 인덱스 자체가 데이터베이스 제품에 의존하는 선택적인 항목으로 취급되어 CREATE INDEX 명령이 존재하지 않습니다. 하지만 대부분의 유
뷰 작성과 삭제 FROM 구에 서브쿼리를 사용할 수 있다는 걸 서브쿼리 부분에서 알 수 있었습니다. 이때 서브쿼리에 이름을 붙여 데이터베이스 객체화하여 쓰기 쉽게 한 것을 뷰(View)라고 합니다. 뷰 본래 객체로 사용할 수 없는 SELECT 명령을 객체로서 이름을
관계형 모델을 채택한 데이터베이를 관계형 데이터베이스라 부릅니다. 이때 관계형 모델에서의 관계형은 수학 집합론의 관계형 이론에서 유래했습니다. 쉽게 설명하면 관계형 데이터베이스는 결국 데이터를 집합으로 간주해 다루기 쉽게 하는 목적에서 나온 개념입니다.SQL에서 하나의
보통 데이터베이스는 하나의 테이블에 많은 데이터를 저장하지 않고 몇 개의 테이블로 나누어 저장합니다. 이처럼 여러 개로 나뉜 데이터를 하나로 묶어 결과를 내는 방법이 바로 테이블 결합이며 이 개념이 집합론에서는 곱집합입니다.곱집합은 두 개의 잡합을 곱하는 연산 방법으로
관계형 데이터베이스는 관계형 모델(Relational Model)을 기반으로 작성된 데이터베이스입니다. 그러나 관계형 모델에서 사용하는 용어와 SQL의 용어가 완벽하게 일치하지는 않습니다.관계형 모델(Relational Model)의 기본적인 요소는 관계, 릴레이션(R
데이터베이스 설계는 곧 데이터베이스 스키마 내의 테이블, 인덱스, 뷰 등의 객체를 정의하는 것을 의미합니다. 스키마 내에 정의하기 때문에 스키마 설계라 불리기도 합니다.이때 설계의 주된 내용은 테이블의 이름이나 열, 자료형을 결정하는 것입니다. 그리고 테이블 간의 관계
정규화(Normalization)는 데이터베이스의 테이블을 규정된 올바른 형태로 개선해나가는 걸 의미합니다. 보통 설계 단계에서 행해지지만 기존 시스템을 바꿔야할 때도 정규화하는 경우가 있습니다.정규화에는 순서가 존재하는데 이를 참고하여 관계형 데이터베이스가 효율적으로
데이터베이스는 트랜잭션(Transaction)이라는 기능을 제공합니다. INSERT, UPDATE 명령에도 트랜잭션 기능을 사용하는 데 별도로 신경쓰지 않았던 이유는 자동 커밋(Auto Commit)이라 불리는 기능이 동작했기 때문입니다.앞서 정규화에서 사용했던 테이블