SELECT

SELECT命令は、データベースのテーブルからデータを選択する、SQLの中で最も基本的な命令です。
文法的な基本構成は、SELECTの次に「選択列リスト」を記述します。ここに記述された列のみが結果として得られます。テーブルのすべての列を得る場合には、メタ文字である*を使用すると簡単にすべての列を得ることが可能です。
FROMに続いてテーブル名を指定します。この部分を「FROM句」と呼ばれます。カンマを使用して複数のテーブル名を指定すれば、複数のテーブルからデータを抽出することも可能となります。

使用例)テーブルfooのすべての列、すべての行を選択します。
SELECT * FROM foo



SELECT

SELECT명령은 데이터베이스의 테이블에서 데이터를 선택합니다. SQL 중에서 가장 기본적인 명령입니다.
문법적인 기본구성은 SELECT의 다음에 '선택열리스트'를 기술합니다. 여기에 기술했던 열만이 결과로서 얻어집니다.
테이블의 모든 열을 구할 경우에는 메타문자인 '*'을 사용하면 간단하게 모든 열을 얻을 수 있습니다.
FROM에 이어서 테이블명을 지정합니다. 이 부분이 'FROM구'라고 불립니다. 콤마를 사용해서 복수의 테이블명을 지정하면 복수의 테이블에서 데이터를 추출하는 것도 가능하게 됩니다.

사용예) 테이블 foo의 모든 열, 모든 행을 선택합니다.
SELECT * FROM foo
Posted by 자수성가한 부자
DML(データ操作命令)

データ操作命令には「SELECT」「INSERT」「UPDATE」「DELETE」の4つがあります。

SELECT命令は、「問い合わせ」とか「クエリー」とも呼ばれます。SELECT命令はSQLの基本中の基本ともいえる命令で、使用頻度が最も高い命令です。SELECT命令で押さえておきたいでくニックの1つとして「結合」があります。これはテーブル同士を関係付け、1回のSELECT命令によって複数のテーブルから結果を得るというテクニックです。
SELECT命令は入れ子にして、SELECT命令の結果をSELECT命令中に使用することができます。このテクニックは「副問い合わせ」や「サブクエリー」と呼ばれます。



DML

데이터 조작 명령에는 「SELECT」「INSERT」「UPDATE」「DELETE」의 4가지가 있습니다.

SELECT명령은 '문의'라든지 '쿼리'라고도 불립니다. SELECT명령은 SQL의 기본중의 기본이라고 할 수 있는 명령으로 사용빈도가 가장 높은 명령입니다. SELECT명령으로 알려두고 싶은 테크닉의 하나로서 [결합]이 있습니다. 이것은 테이블 사이에 관계를 붙여 1번의 SELECT명령에 의해 복수의 테이블에서 결과를 얻을수 있는 테크닉입니다.
SELECT명령에는 입력자로 해서 SELECT명령의 결과를 SELECT명령중에 사용할 수 있습니다. 이 테크닉은 '부문의' 나 '서브쿼리'라고 불립니다.


Posted by 자수성가한 부자
シノニム

「シノニム」はデータベースオブジェクトの別名です。テーブルやビューに対してシノニムを作成すると、本当の名前ではなく別名でアクセスすることが可能となります。
PUBLICなシノニムは、スキーマによる名前空間には入りません。よって、すべてのユーザが使用できるデータベースオブジェクトとなります。この場合には、データベース全体で唯一のシノニム名を与えなくてはなりません。スキーマ内にシノニムを作成した場合、そのスキーマで有効な別名となります。
PUBLICなシノニムを作成しておけば、スキーマを意識する必要がなくなるため、ユーザ間で共有したいデータにアクセスしやすくなります。また、シノニムには権限を与えることが可能です。シノニムを介してデータのアクセスを制限することも可能です。



시노늄(synonym)

'시노늄'은 데이터베이스 오브젝트의 별명입니다. 테이블이나 뷰에 대해서 시노늄을 작성하면, 원래의 이름이 아닌 별명으로 억세스가 가능하게 됩니다.
PUBLIC한 시노늄은 스키마에 의한 이름공간에는 들어갈 수 없습니다. 따라서 모든 유저가 사용할 수 있는 데이터베이스 오브젝트가 됩니다. 이 경우에는 데이터베이스 전체로 유일한 데이터베이스명을 부여할 수 없게 됩니다. 스키마 내에 시노늄을 작성한 경우 그 스키마로 유효한 별명이 됩니다.
PUBLIC한 시노늄을 작성해두면, 스키마를 의식할 필요가 없어지기 때문에 유저간에 공유하고 싶은 데이터에 억세스하기 쉽게 됩니다. 또 시노늄에는 권한을 부여하는 것이 가능합니다. 시노늄을 개입시켜 데이터의 억세스를 제한하는 것도 가능합니다.



唯一(ゆいいち):유일
Posted by 자수성가한 부자
シーケンス

「シーケンス」オブジェクトは値を1つ持つオブジェクトです。シーケンスの疑似列「NEXTVAL」を参照すると、内部の値がインクリメントされます。「INSERT」時にシーケンスを使用すれば、重複がないキーを自動的に作成することが可能です。
「NEXTVAL」による、シーケンス値の参照はトランザクションと無関係に動作します。トランザクション内で、「NEXTVAL」を使用した「INSERT」をロールバックすると、「INSERT」によって作成されたデータ行は無効になりますが、シーケンスの値はもとには戻りません。



시퀀스

'시퀀스'오브젝트는 값을 1개 갖는 오브젝트입니다. 시퀀스의 유사열 'NEXTVAL'을 참조하면, 내부의 값이 증가됩니다. 'INSERT'시에 시퀀스를 사용하면, 중복되지 않는 키를 자동적으로 작성할 수 있습니다.
'NEXTVAL'에 의하면 시퀀스값의 참조는 트랜잭션과 관계없이 동작합니다. 트랜잭션 내에서 'NEXTVAL'을 사용한 'INSERT'를 롤백하면, 'INSERT'에 의해 작성된 데이터행은 무효가 되지만, 시퀀스의 값은 원래값으로 돌아가지 않습니다.
Posted by 자수성가한 부자
トリガー

「トリガー」はテーブルに対して作成します。あるテーブルに行を挿入したり、行を更新、削除したときに、トリガーが設定されていると、トリガー内のSQLステートメントが自動的に実行されます。この機能によってデータの追加、削除、更新に伴い、関係するテーブルに対してもなんらかの操作をし、データベースとして矛盾がない状態を自動的に生成することが可能です。



트리거

'트리거'는 테이블에 대해 작성합니다. 한 테이블의 행을 삽입한다든지, 행을 갱신, 삭제할 때에 트리거가 설정되어있다면, 트리거내의 SQL스테이트먼트가 자동적으로 실행됩니다. 이 기능의 의해서 데이터의 추가, 삭제, 갱신에 따라 관계하는 테이블에 대해서도 몇개의 조작을 하고, 데이터베이스로서 모순이 없는 상태를 자동적으로 생성하는 것이 가능합니다.
Posted by 자수성가한 부자
ストアードプロシージャ

「ストアードプロシージャ」は、データベースサーバにあらかじめ一連のSQL命令を作成しておき、プロシージャを実行することで、簡単にいくつもののSQL命令を実行できるように考えられたものです。プロシージャ内にはSQL文だけでなく、変数と「IF」文や「WHILE」文等の制御命令や繰り返し命令を記述することが可能ですので、一種のプログラムを作成することができます。



스토어 프로시져

'스토어 프로시져'는 데이터베이스 서버에 미리 일력의 SQL명령을 작성해두어, 프로시져를 실행하는 것으로 간단하게 몇개의 SQL명령을 실행할 수 있는 것으로 생각되는 명령이다. 프로시져 내에는 SQL문 뿐만아니라 변수와 'IF'문이나 'WHILE'문등의 제어 명령이나 반복되는 명령을 기술하는 것이 가능하기 때문에 일종의 프로그램을 작성하는 것이 가능합니다.
Posted by 자수성가한 부자
ビュー

「ビュー」は、データベースに実存するテーブルから「SELECT」命令を介して「仮想的なテーブル」として参照する機能です。テーブルはデータベース上にデータが保存する、ディスク領域を必要とします。一方ビューは、ビューの定義しか持ちません。ビューの内容を取得する命令が発行されるたびに、「SELECT」命令が実行されます。作成されたビューは「仮想表」とも呼ばれ、ユーザから見ると通常のテーブルと同じように見えます。
クライアントプログラムが頻繁に要求する「SELECT」命令を、あらかじめビューで作成しておけば、クライアント側での処理を簡略することが可能です。また、複雑な「SELECT」文をビューに置き換えることによって、段階的に「SELECT」を行うことが可能になれば、見通しのよいクエリーを記述することもできます。また、権限と併用することによって、テーブルの一部のみを参照可能にするといったことも可能です。




'뷰'는 데이터베이스에 실존하는 테이블에서 'SELECT'명령을 개입시켜 '가상적인 테이블'로서 참조하는 기능입니다. 테이블은 데이터베이스 상에 데이터가 존재하는 디스크영역을 필요로 합니다. 한편 뷰는 정의의 기능밖에 가지지 않습니다. 뷰의 내용을 취득하는 명령이 실행될 될때마다 'SELECT'명령이 실행됩니다. 작성된 뷰는 '가상표'라고도 불려, 유저 입장에서 보면 통상의 테이블과 같이 보입니다.
클라이어트 프로그램이 빈번하게 요구하는 'SELECT'명령을 미리 뷰로 작성해두면 클라이언트 측의 처리를 간단히 할 수 있습니다. 또 복잡한 'SELECT'문을 뷰에 치환하는 것으로 단계적인 'SELECT'을 실행하는 것이 가능하게 되면 전망 좋은 쿼리를 기술하는 것도 가능합니다. 또 권한과 병용하는 것으로 테이블 일부만을 참조가능하게 한다라는 것도 가능합니다.
Posted by 자수성가한 부자
ユーザと権限

データベースサーバはマルチユーザで使用できます。インストール直後は「管理ユーザ」のみが登録されます。この管理ユーザはデータベースのすべてを管理する権限を持っています。管理ユーザが新しくユーザを作成します。
ユーザが作成された直後では、そのユーザが操作できる命令はありません。権限を与えられるまで、データベースサーバに接続することさえできないのです。権限には、データベース全体に対して与えられるもの(システム/ステートメント権限)があります。



유저와 권한

데이터베이스 서버는 멀티유저로 사용할 수 있습니다. 인스톨 직후에는 '관리 유저'만 등록됩니다. 이 관리유저는 데이터베이스의 전부를 관리하는 권한을 가지고 있습니다. 관리 유저가 새로운 유저를 생성합니다.
유저가 생성된 직후에는 그 유저가 조작할 수 있는 명령은 없습니다. 권한을 부여하기까지 데이터베이스 서버에 접속하는 것 조차 할 수 없습니다. 권한에는 데이터베이스 전체에 대해 부여된 것(시스템/스테이트먼트 권한)이 있습니다.
Posted by 자수성가한 부자
スキーマ-2


使用例) スキーマBに含まれているテーブルfooの行をSELECTします。
SELECT * FROM B.foo

ここで、ユーザ名ではなく、スキーマ名と書きました。なぜ、ユーザ名ではなくスキーマ名なのでしょう。
スキーマはテーブルやビューなどのデータベースオブジェクトの集まりです。スキーマが集まってデータベースを構成します。スキーマはデータベース中に名前空間を作成できるという役割を持っています。ユーザAのテーブルfooとユーザBのテーブルfooとの区別は、スキーマがあることによって成り立っています。
スキーマは事実上ユーザと対応していますので、「スキーマ=ユーザ」と考えても大きな問題になりません。また、SQL-92では、スキーマの上には、カタログと呼ばれる器も用意されています。実際のデータベース製品では、カタログは、データベースとして扱われる場合が多いようです。



스키마 - 2

사용 예) 스키마B에 포함되어 있는 테이블 foo행을 SELECT합니다.
SELECT * FROM B.foo

여기에서 유저명이 아니라 스키마명이라고 썼습니다. 왜, 유저명이 아니고 스키마명 인것일까요?
스키마는 테이블이나 뷰등의 데이터베이스 오브젝트의 집합입니다. 스키마가 모여서 데이터베이스를 구성합니다.
스키마는 데이터베이스 중에 이름공간을 작성할 수 있는 역할을 가지고 있습니다. 유저A의 테이블foo와 유저 B의 테이블 foo의 구별은 스키마가 있는 것에 따라 성립됩니다.
스키마는 사실상 유저와 대응하고 있기 때문에 '스키마 = 유저'라고 생각해도 큰 문제는 없습니다. 또 SQL-92에서는 스키마 상에는 카타로그라고 불리는 기구도 준비되어 있습니다. 실제 데이터베이스 제품에서는 카타로그는 데이터베이스로써 다뤄지는 경우가 많다고 합니다.

Posted by 자수성가한 부자
スキマ-1

データベースサーバと呼ばれるサーバ型のシステムでは、「マルチユーザ」で使用されることを前提としています。ユーザがテーブルなどのデータベースオブジェクトを作成すると、作成されたオブジェクトの所有者はそのユーザとなります。別のユーザが同じ名前のデータベースオブジェクトを作成すると、別のデータベースオブジェクトとして作成されます。

例えば、ユーザAがテーブルfooを作成しました。テーブルfooの所有者はユーザAです。続いて、ユーザBがテーブルfooを作成したとします。ユーザAがテーブルfooを作成すると「既にテーブルが存在している」というエラーになりますが、ユーザBが所有するテーブルfooは存在しないのでエラーになりません。



스키마-1

데이터베이스 서버라고 불리는 유저형 시스템에서는 '멀티 유저'로 사용되는 것을 전제로 하고 있습니다. 유저는 테이블 등의 데이터베이스 오브젝트를 작성하면 작성된 오브젝트 소유자는 그 유저가 됩니다. 다른 유저가 같은 이름의 데이터베이스 오브젝트를 작성하면 다른 테이터베이스 오브젝트로서 작성됩니다.

예를 들면, 유저 A가 테이블 foo를 작성했습니다. 테이블 foo의 소유자는 유저 A입니다. 계속해서, 유저 B가 테이블 foo를 작성했다고 합시다. 유저 A가 테이블 foo를 작성하면 '이미 테이블이 존재하고 있다'라는 에러가 됩니다만, 유저 B가 소유하는 테이블 foo는 존재하지 않기 때문에 에러가 되지 않습니다.
Posted by 자수성가한 부자