SQLとは?
関係データベース言語であるSQLは、関係データモデルに基づく標準のデータベース言語であり、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つがある。
SQLの特徴
関係データモデルへの準拠
関係データベースモデルに基づいて定義された言語です
公的機関による標準化
公的機関によって標準化されているために、どのRDBMS製品にも使用されています。
管理機能の実装
テーブルの危機管理機能も標準化されています。
セット処理への対応
データに1件ずつアクセスするだけでなく、条件を満たす複数のデータに対して一括して操作を行えます。
関係データモデルとSQLの用語の対応
関係データモデル | SQL |
関係(リレーション) | 表(テーブル) |
タプル | 行 |
属性(アトリビュート) | 列 |
定義域(ドメイン) | 定義域(ドメイン) |
データ定義言語(DDL)
データベースにデータを格納するには、まずデータの入れ物をどのような構造にするかを定義する必要があります。以下の命令により構造決定します。
命令 | 意味 |
CREATE TABLE | テーブルの作成 |
CREATE VIEW | ビューの作成 |
DROP TABLE | テーブルの削除 |
DROP VIEW | ビューの削除 |
ALTER TABLE | 列の追加・削除 |
CREATE TABLE
CREATE TABLE テーブル名( 列名1 データ型 列制約, 列名1 データ型 列制約, ・・・ 表制約 )
データ型
分類 | データ型 | 説明 |
文字列型 | CHAR(n) | n文字の固定長文字列 |
NCHAR(n) | n文字の国際化対応文字列 | |
VARCHAR(n) | 最大n文字の可変長文字列 | |
整数型 | NUMBER(p.q) | q桁の小数部を持つp桁の10進数 |
INT | 符号付き整数 | |
REAL | 符号つき浮動小数 | |
日付/時間型 | DATE | 日付(年月日) |
TIME | 時間(時分秒) | |
TIMESTANP | タイムスタンプ |
テーブルの制約
制約 | 説明 |
UNIQUE | テーブルの中で値が一意であることを保証される。NULL値は複数の行に存在しても良い。 |
NOT NULL | NULL値は許可しない。この制約を定義した列には、必ず値を設定する必要がある。 |
PRIMARY KEY | 主キー制約を定義する。UNIQUEとNOT NULLの制約を持っている |
CHECK | 設定可能な値の範囲などを指定できる |
DEFAULT | 値を明示せずに行を追加する場合m自動的に設定される値を指定できる |
FOREIGN KEY | 外部キー制約を定義する。指定したテーブルの列に存在しない値を設定できないと言う制約をかけることができる。 |
例
CREATE TABLE 商品( 商品コード CHAR(4) PRIMARY KEY, 商品名 NCHAR(10) NOT NULL, 単価 INT, 仕入れ先コード CHAR(4), FOREIGN KEY (仕入れ先コード) REFERENCES (仕入れ先), CHECK (単価<=500) )
CREATE VIEW
CREATE VIEW ビュー名(列名1,列名2,..) AS SELECT ・・・
CREATE VIEW 合格者一覧(受験番号,点数) AS SELECT 受験者番号, 点数 FROM 試験成績 WHERE 合否 = '合格'
ビューとは、CREATE TABLE で定義された実テーブルから作成される仮想的なテーブルのことです。ビューはあくまでも仮想テーブルなので、その中にデータは存在しません。ビューは実テーブルをどのように見るのかを定義したものと言えます。 参照:https://www.techscore.com/tech/sql/SQL9/09_01.html/
データ操作言語(DML)
表内のデータの参照・更新・追加・削除などを行えます。
命令 | 意味 |
SELECT | データの参照 |
INSERT | データの追加 |
UPDATE | データの変更 |
DELETE | データの削除 |
SELECT文
SELECT 列名 → どの列から抽出するかを指定
FROM 表名 → どの表から抽出するかを指定
WHERE 条件式 → どのような条件で抽出するかを指定
良く使われるので、以下のように覚えておきましょう!
Select – From – Where – Group by – Having – Order by
・SELECT * で全ての列を抽出します。
・SELECT 列名 FROM テーブル名 WHERE LIKE 列名 ‘文字列’ で対象の列に対して、文字列検索が行えます。このLIKEの文字列には、ワイルドカードが使用できます。
ワイルドカード文字 | 意味 |
% | 0文字以上の任意の文字列 |
_ (アンダーバー) | 任意の1文字 |
・SELECT 氏名,担任 FROM 学生,担任 WHERE 学生.クラス=担任.クラスで2つのテーブル(学生と担任)を連結し表を作成する。学生テーブルのクラス列と担任テーブルのクラス列が等しい行が表の要素となる。
INSERT文
UPDATE文
DELETE文
データ制御言語(DCL)
データベースのアクセス権などと定義します。
GRANT | 権限の付与 |
REVOKE | 権限の取り消し |