「大人の教養・知識・気付き」を伸ばすブログ

一流の大人(ビジネスマン、政治家、リーダー…)として知っておきたい、教養・社会動向を意外なところから取り上げ学ぶことで“気付く力”を伸ばすブログです。データ分析・語学に力点を置いています。 →現在、コンサルタントの雛になるべく、少しずつ勉強中です(※2024年1月21日改訂)。

MENU

データベースとSQL(02/20)

はじめに

 データ分析を行う場合、データの管理運用、蓄積も重要な論点となる。そのためにはSQLやデータベースの知識が求められる。そこでまずは

を基にSQLの勉強をしていく。

1. データベースとは何か

 情報を大量に保存しコンピュータを使ってそれらに効率よくアクセスできるように加工したデータの集まりをデータベース(DB)という。DBを管理するコンピュータシステムをデータベースマネジメントシステム(DBMS)という。

1.5 SQLの概要

  • SQLはデータベースを操作するために開発された言語である。
  • SQLは標準規格があるものの、実際はRDBMSごとに相違がある。
  • SQLでは操作したいことをSQL文で記述しRDBMSに向けて送信する。
  • 原則として文末には区切りとしてセミコロンを付ける。
  • SQLはその目的に応じてDDL, DML, DCLに分類できる。
1.5.1 SQLとは

 SQLRDBを操作するための言語で、DBからのデータ検索やデータ登録や削除を行うことができる。SQLには国際標準化機構で定められた標準規格があり、それに準拠したSQLを標準SQLという。しかし標準SQLに準拠したRDBMSは少なく、たいてい独自のSQL文が定義されている。

1.5.2 SQL文とその種類
  (1) DDL
     データベースやテーブルなどを作成したり削除したりする。
  (2) DML
     テーブルの行を検索したり変更したりする。
  (3) DCL
     データベースに対して行った変更を確定したり取り消したりする。
1.5.3 SQLの基本的記述ルール

 1つのDB操作は1つのSQL文で記述する。RDBMSでもSQL文を1つずつ実行していく。SQLではキーワードの大文字・小文字は区別しない*1
 SQL文の中に直接記述する文字列や日付、数値などを定数と呼ぶ。定数について以下のルールがある:

  (1) 文字列はシングルクオーテーション(')で囲む。
  (2) 日付を記述する場合もシングルクオーテーション(')で囲む。
  (3) 数値はそのまま記述する。

 SQL文では単語と単語の間を「半角スペース」または「改行」でつなぐ。それ以外ではエラーになる。

1.6 テーブルの作成

  • テーブルはCREATE TABLE文で作成する。
  • テーブルや列の名前に利用してよい文字は規定がある。
  • 列にはデータ型を指定する。
  • テーブルには制約を設定できる。
1.6.1 データベースの作成

 まずテーブルを格納するためのデータベースを作成する。

CREATE DATABASE <データベース名>;

 次にテーブルをそのデータベース内に作成する

CREATE TABLE <テーブル名>;
(<列名1> <データ型> <この列の制約>,
<列名2> <データ型> <この列の制約>,
<列名3> <データ型> <この列の制約>,
      ........

<このテーブルの制約1> <このテーブルの制約2>,... ... ... ...);
1.6.2 命名ルール

 標準SQLではデータベースやテーブル、列の名前には半角文字のアルファベット、数字およびアンダーバーのみが利用できる。また名前の最初は必ず半角のアルファベットを用いなければならない。テーブル名は重複してはならない。

1.6.3 データ型の指定

 テーブルの列にはデータ型を必ず定義しなければならない。標準SQLには以下のような型がある*2

  (1) INTEGER型 整数を入れる列に指定する。
  (2) CHAR型 文字列を入れる列に指定する。列に入れる文字列の長さを指定する。
  (3) VARCHAR型 文字列を入れる列に指定する。列に入れる文字列の長さを指定する。CHAR型は指定した文字列になるように

半角空欄を入力する必要があるものの、VARCHAR型は指定した長さ以下であればよい。
  (4) DATE型 日付を入れる列に指定する。
1.6.4 制約の設定

 列に入れるデータに与える制約・条件を追加するのが制約の設定である。たとえば「NOT NULL」はNULL(空欄)を許さないことを意味する。また「主キー設定」は特定のデータを指定するときに使う列の組み合わせを指す。

1.7 テーブルの削除と変更

  • テーブルを削除する場合、DROP TABLE文を用いる。
  • テーブル列の追加・削除を行う場合にはALTER TABLE文を用いる。
1.7.1 テーブルの削除

 作成したテーブルを削除するにはDROP TABLE文を用いる。削除したテーブルおよびそのデータは復活できない。

DROP TABLE <テーブル名>;
1.7.2 テーブル定義の変更

 既存のテーブルの列名定義を変更する*3

ALTER TABLE <テーブル名> ADD (COLUMN) <列の定義>; --列名を変更する
ALTER TABLE <テーブル名> DROP COLUMN <列名>;         --列を削除する

 テーブルにデータを登録する場合は以下のとおりにする。

BEGIN TRANSACTION;
INSERT INTO <テーブル名> VALUES (<データ列1の値>,<データ列2の値>,…,<データ列nの値> )
INSERT INTO <テーブル名> VALUES (<データ列1の値>,<データ列2の値>,…,<データ列nの値> )
…
INSERT INTO <テーブル名> VALUES (<データ列1の値>,<データ列2の値>,…,<データ列nの値> )

COMMIT;
1.7.3 テーブルの訂正

 テーブルを定義しデータをある程度登録した後にテーブル名を修正したい場合、登録したデータ数が少なければそのテーブルを一度削除し、再定義およびデータの再登録をすればよい。しかし一定程度のデータが登録されていればそれは困難である。そこでテーブル名を変更したい場合、以下のようにする*4

-- Oracle, PostgreSQL
ALTER TABLE <変更対象のテーブル名> RENAME TO <変更後のテーブル名>
-- DB2
RENAME TABLE <変更対象のテーブル名 TO <変更後のテーブル名>
-- SQL Server 
sp_rename <変更対象のテーブル名>, <変更後のテーブル名>
-- MySQL
RENAME TABLE <変更対象のテーブル名 to <変更後のテーブル名>

*1:ただしテーブルに登録されているデータは大文字・小文字を区別する。

*2:RDBMSごとに異なるので随時確認した方が良い。

*3:SQL Server, Oracle Serverでは「CLOUMN」の記述は不要。

*4:RDBMSによってコマンドが相応に違うので注意。

プライバシーポリシー お問い合わせ