database.sarang.net
UserID
Passwd
Database
ㆍDBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
DBMS Tutorials 864 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 864
SQL 의 기초 (1)
작성자
정재익(advance)
작성일
2003-10-22 22:32
조회수
15,285

2. SQL의 기초 (I)

여기서는 SQL에 대한 기초적인 내용을 소개합니다. 우선 SQL의 특성에 대해서 간단히 알아보죠.

  • SQL은 비프로시저 언어이다. 여러분은 SQL을 이용하여 검색할 데이터가 무엇인지를 DATABASE에 알려주거나 또는 그것이 어떻게 해야할 것인지를 알려주지 않고 변경을 수행합니다.
  • SQL은 어떠한 제어 흐름 프로그래밍 구조도 제공하지 않는다. SQL은 함수 정의문, 반복문, if문 등을 이용할 수 없습니다.
  • SQL은 공정된 데이터타입과 집합을 제공한다. 이건 사용자가 새로운 데이터타입을 정의할 수 없다는 뜻입니다. C 언어 같은 것은 특정 목적을 위해서 데이터타입을 정의할 수 있지만, SQL은 어떤 열을 작성하거나 변경할 때 일련의 사전정의 데이터타입으로부터 항목을 선택하도록 요구합니다.

1) 테이블은 행과 열이다.

앞서 말씀드린 것 같이 관계형 이론의 중심에는 테이블이란 개념이 있습니다. 테이블은 일련의 속성이나 열과 0개 이상의 행으로 구성되어 있으며, 각 행은 속성 값의 집합입니다.

관계형 데이터베이스가 나오기 전에는 계층적 유형(Hierarchial) 또는 네트워크 유형(Network)으로 분류되었던 데이터베이스 관리 시스템에 의존했습니다. 이 두가지 유형은 단점이 하나 있었는데, 기존 데이터 요소의 일부를 변경하거나 새로운 데이터 요소를 추가하려면 기존의 프로그램을 광범위하게 수정해야 했습니다. 그러나 관계형 데이터베이스에서는 데이터 요소(열)를 변경하는 것의 효과는 미세합니다. 관계형 데이터베이스에서, 열의 크기의 증감은 테이블 내의 다른 열로부터 독립적이기 때문이죠. 그만큼 소프트웨어 유지/관리 비용이 감소한다는 얘기가 됩니다.

관계형 이론의 규칙 중 하나는 열의 순서가 중요하지 않다는 점입니다. 이 말은 사실 개념적인 수준에서 테이블의 열이 여러분이 원하는 순서로 검색될 수 있다는 것을 의미합니다. 물론 물리적인 순서는 존재를 하겠죠.

관계형 이론의 또다른 규칙은 행의 순서가 중요하지 않다는 점이죠. 행이 어떤 특정 순서로 저장되지 않는다는 뜻이 아니라 행이 테이블로부터 검색될 방식에 있어서 함축적인 순서가 없다는 것을 의미합니다. 따라서 어떤 테이블의 행이 특정 순서로 복귀되기를 원한다면, 그 순서를 지정해 주어야 합니다.

2) 데이터 검색 및 변경

SQL문은 다음 세 가지 영역으로 크게 분류할 수 있습니다.

  • DML(Data Manipulation Language) 데이터를 검색하거나 변경하는 데이터 조작 언어
  • DDL(Data Definition Language) 데이터의 구조를 정의하는 데이터 정의 언어
  • DCL(Data Control Language) 데이터베이스 사용자에게 부여한 특권을 정의하는 데이터 제어 언어

DML에는 다음 네 가지 기본 문장이 있습니다.

  • SELECT 문 : 테이블로부터 행 검색
  • INSERT 문 : 테이블에 행 추가
  • UPDATE 문 : 테이블 내의 기존 행 변경
  • DELETE 문 : 테이블에서 행 제거

다음은 SQL의 특성이라고 할 수 있습니다.

  • 모든 SQL 문은 세미콜론(;)에 의해 종료된다.
  • SQL 문은 명료성을 위해 한 개 라인의 중앙에 위치시키거나 여러 라인으로 분할할 수 있다.
  • SQL은 대소문자를 구별하지 않는다.

3) SELECT 문의 구문

SELECT문은 네 개의 DML문 중에서 가장 많이 쓰이는 구문입니다. 그리고 UPDATE, INSERT, DELETE 문 내에서 서브 쿼리로써 존재할 수 있습니다. SELECT 문은 최소한 다음의 두 요소로 구성됩니다.

  • SELECT LIST : 검색될 열의 LIST
  • FROM 구 : 행을 검색하기 위한 TABLE

그럼 간단한 예를 보죠. 다음은 학생(Student)이란 Table에서 이름(name)을 검색하는 쿼리입니다.

SELECT name FROM student;

결과는 다음과 같이 나오겠죠.

NAME
----------
박상욱
배효일
이원희
윤면용
최인희
신관호
...
구교락 

학생의 이름과 나이를 알고 싶으면 희망하는 순서로 열을 나열하면 됩니다.

SELECT name, age FROM student;

결과는 다음과 같이 나옵니다.

NAME         AGE
----------  ----
박상욱        29
배효일        26
이원희        50
윤면용        28
최인희        27
신관호        28
...
구교락        28

테이블의 모든 열을 검색하려면 *을 사용하면 됩니다.

SELECT * FROM student;

NAME       AGE  ENG_SCORE  KOR_SCORE  ...   AVR_SCORE
---------- --- ---------- ----------  ...  ----------
박상욱      29        90         85   ...         93
배효일      26        70         90   ...         80
이원희      50        30         10   ...         15
윤면용      28       100        100   ...        100
최인희      27        90         90   ...         94
신관호      28        85        100   ...         96
...        ...       ...        ...   ...        ...
구교락      28         0         10                5

참! ORACLE에서는 DUAL이라는 유틸리티 TABLE을 사용해서 산술연산이나 현재시간 등을 알 수 있어요.

SELECT 3.14159*20 FROM DUAL;

3.14159*20
----------
62.8318

SELECT SYSDATE FROM DUAL;

SYSDATE
---------
05-JUN-98

모든 SELECT 문에 의해서 복귀된 결과는 임시 테이블을 구성합니다. 각 검색된 레코드는 이 임시 테이블 내에서 하나의 행이고 선택 리스트의 각 요소는 하나의 열입니다. 만약 쿼리가 어떠한 레코드도 복귀시키지 않는다면 임시 테이블은 빈 것으로 생각할 수 있죠. 이 기능은 관계형 모델의 근본 원칙입니다.

그리고 위에서 열을 지정한 것처럼 선택 리스트 네에서 표현식을 지정할 수 있습니다. 표현식은 열과 동일한 데이터타입 (문자, 수치, 날짜)에 속합니다. 여러분은 연산자, 내장함수, 그리고 상수를 이용하여 여러분의 APPLICATION의 필요를 만족시킬 수 있는 복잡한 표현식도 작성할 수 있습니다. 그리고 표현식이 다수의 열을 참조할 지라도 ORACLE이 선택 리스트 내에 있는 각 요소를 독립된 열로 간주한다는 것을 기억하세요.

SQL에서 사용되는 산술 연산자는 C 언어에서 사용되는 산술 연산자와 동일합니다. 더하기(+), 빼기(-), 곱하기(*), 나누기(/)... 모두 똑~ 같죠?

다음은 학생들의 영어 성적과 국어 성적을 평균내는 것입니다.

SELECT name, eng_score, kor_score, (eng_score+kor_score)/2 FROM student ;

NAME       ENG_SCORE  KOR_SCORE    (ENG_SCORE+KOR_SCORE)/2
---------- ---------  ----------   -----------------------
박상욱            90          85                      87.5
배효일            70          90                        80
이원희            30          10                        20
윤면용           100         100                       100
최인희            90          90                        90
신관호            85         100                      87.5
...              ...          ...                      ...
구교락             0          10                         5

SQL에서 사용되는 문자열 연산자(String Operator) 중 가장 중요한 것이 연결 연산자(Concatenation Operator) 입니다. 이 연산자는 둘 이상의 문자열을 함께 연결할 수 있게 합니다.

SELECT name || ', ' || city FROM student;

NAME||','||CITY
----------------
박상욱, 부산
배효일, 진주
이원희, 서울
윤면용, 수원
최인희, 수원
신관호, 서울
...
구교락, 부산

어떤 경우에 문자열을 연결할까요?

  • 쿼리에 의해서 복귀된 값 곳에 문자열을 내장하기 위해서
  • 문자열을 조합하기 위해서
  • 어떤 열에 할당할 수 있는 새로운 값을 작성하기 위해서

여러분은 두 개 이상의 문자열로 연결 연산자를 사용할 수 있습니다. ', '는 문자열을 콤마(,)와 공백으로 연결할 수 있도록 사용된 것입니다.

 

출처 : http://system.new21.net/zboard/view.php?id=db&page=2&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=12

[Top]
No.
제목
작성자
작성일
조회
915Introduction to data warehousing [1]
정재익
2004-02-05
13240
866SQL 의 기초 (3)
정재익
2003-10-22
12117
865SQL 의 기초 (2)
정재익
2003-10-22
12625
864SQL 의 기초 (1)
정재익
2003-10-22
15285
861SQL 에서 Join 이란...
정재익
2003-10-22
18510
860Database system 이란? [1]
정재익
2003-10-22
10548
859ACID
정재익
2003-10-22
8921
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2020 DSN, All rights reserved.
작업시간: 0.010초, 이곳 서비스는
	PostgreSQL v13.0으로 자료를 관리합니다