SQLによるデータベース操作に関する世界観です。データベースの世界観とMySQLの世界観も参照のこと。
徹底攻略 応用情報技術者教科書 平成30年度などを参考にしています。
RDBMSでは、データを複数の行と列で構成された「テーブル」(表)の形で取り扱います。
この仕組みにより、データベースはより安全かつ高速に大量のデータを取り扱うことができます。
SQLの基本はデータの保管、更新、削除、検索です。
基本は、追加(INSERT)、更新(UPDATE)、削除(DELETE)、取り出し(SELECT)の4つです。 DELETEの時WHEREを指定しないと「全削除」になってしまうので注意してください。
データベース用語として、Create(生成)、Read(読み取り)、Update(更新)、Delete(削除)の4つをCRUDと言います。
Webやデータベースの世界でよく使う言葉なので覚えておきましょう。
データーベースサーバー。MySQLがサン・マイクロシステムズ(現オラクル)に買収されたことで、MariaDBと言う派生版が生まれている。
MySQLを参照のこと。
データーベースサーバー。MySQLのライバル。
PostgreSQLを参照のこと。
軽量なデーターベースサーバー。
SQLiteを参照のこと。
PHPで実装されたMySQL設定ソフトウェア。
SQLの記述は【新人教育 資料】第4章 SQLへの道 〜SQL基本操作編〜 - Qiitaと徹底攻略 応用情報技術者教科書 平成30年度などを参考にしています。
CREATE データベースのテーブルやビューを作成する。
テーブルの作成:
CREATE TABLE customer ( id INTEGER PRIMARY KEY, name CHAR(35) NOT NULL, address CHAR(125), email CHAR(45) UNIQUE );
ビューの作成:
CREATE VIEW viewname AS SELECT ...;
後日注記:ビューとはユーザに見せるための仮想的な表で、実体はSQL文であり、物理テーブルの実体を持たない。ユーザにテーブルの一部を見せたり、結合したテーブルを見せるためなどに利用できる。
(徹底攻略 応用情報技術者教科書 平成30年度を参考に執筆しました。)
MySQLでは、テーブルの作成は、phpMyAdminというブラウザ上のツールを使って行うこともできます。
SQLの記述は【新人教育 資料】第4章 SQLへの道 〜SQL基本操作編〜 - Qiitaと徹底攻略 応用情報技術者教科書 平成30年度などを参考にしています。
INSERT データを追加する。
INSERT INTO tablename (column1, column2, ...) VALUES (value1, value2, ...);
SELECT データを参照する。
SELECT column1, column2, ... FROM tablename [WHERE search];
searchは検索条件です。
句 | 説明 |
---|---|
DISTINCT | 重複したデータを削除して一行にまとめる。 |
JOIN | テーブルの結合。 すべての表をFROMで列挙して、WHERE句で列を結合する方法と、 JOIN句で結合する方法の2つの方法がある。 |
WHERE | 選択するための条件式を指定する。 |
GROUP BY | グループ化を行う。グループ化すると、集計関数で集計できるようになる。 |
ORDER BY | 並べ替え(ソート)を行う。 |
(詳しくは徹底攻略 応用情報技術者教科書 平成30年度が参考になります。)
UPDATE データを更新する。
UPDATE tablename SET column1=value1 [, column2=value2 ...] [WHERE search];
DELETE データを削除する。
DELETE FROM tablename [WHERE search];
徹底攻略 応用情報技術者教科書 平成30年度を参考にしています。
あいまいな検索にはLIKEを使う。
たとえば、
氏名 LIKE '加藤%'
の場合は、「加藤」で始まる氏名を検索する。
カーソルは、一連の連続したデータにひとつひとつアクセスするための機能。
後日注記:カーソルはDECLAREで宣言し、OPEN~CLOSEの間で、データをFETCHで取得し、ループ処理の中でWHERE CURRENT OFを使って現在位置にあるデータを編集・削除する。カーソルを使うことで、ファイルシステムとよく似た感じで「現在位置」を保持しながらデータを操作することができる。
SUM(合計値を求める), AVG(平均値を求める), MAX(最大値を得る), MIN(最小値を得る), COUNT(行数のカウントを行う)などの集計関数がある。
SQLインジェクションは、悪意のあるユーザーによってSQL文の行末などに別のSQL文をあたかも値であるかのように入力され、不正なSQLを実行されてしまう脆弱性。
こうした場合、プレースホルダによって値を入れるべき部分に$1、$2、あるいは?などの特別な文字列(プレースホルダ)を入れておき、その中に可変の文字列が代入されるようにすることで、「必ず値が値として評価されるようにする」ことで脆弱性を回避できる。
また、プレースホルダを使う他にも、入力された値を適切にエスケープするという対策もある。
プレースホルダの例についてはPHP(データベース)を参照のこと。
データベース専用言語。