こんにちは
基礎からのMySQLを読んだ備忘録です。
書籍
図書館で借りました。
対象
・何も知らない状態でSQLを学びたい人
・SQLが何なのかよくわかっていない人
業務でSQLをちょいちょい見ることがあるので勉強のために読み始めました。
SQLの知識は「データベース関係のやつだな」程度で全く知りませんでしたが, 本書を読んでSQLの概要を知ることは出来たと思います。
SQLの知識がほとんどないので正当な評価が出来ているとは思えませんが, 本書はSQLを全く知らない人向けの内容で, MySQLの詳細やSQLの深い知識を求めている人向けでは無い気がします。
ただ,SQL入門として初めに読む1冊としては 挫折せずに最後まで読み進められると思うので結構良いのかなと感じました。
本書は簡単なWEBサイトの構築まで行います。
メモ
雑に
・クエリ
データベースに処理する内容を指定するコマンド
-> 問い合わせ
・Structured Query Language (SQL)
クエリを記述するプログラミング言語
-> IBMが始祖
・MAMP
Macintosh, Apache, MySQL, PHP
-> XAMPP, LAMP
・localhost
ローカル・ループバック・アドレス
・cmd中にF7
入力履歴を表示
-> MySQL関係ないけど,知らなかったのでメモ
・コピー
CREATE TABLE テーブル名 SELECT * FROM 元となるテーブル名; CREATE TABLE テーブル名 LIKE 元となるテーブル名; INSERT INTO テーブル名 SELECT * FROM 元となるテーブル名;
・条件
SELECT カラム名 CASE WHEN 条件1 THEN 表示する値 WHEN 条件2 THEN 表示する値 END AS エイリアス FROM テーブル名
・並び替え
SELECT * FROM テーブル名 ORDER BY カラム名 DESC LIMIT 数値;
OFFSETで表示開始レコードのシフト数を指定可能。
SELECT * FROM テーブル名 ORDER BY カラム名 DESC LIMIT 数値 OFFSET 数値;
・HAVINGとWHERE
HAVING: グループ化した値
WHERE: グループ化する前の値
・UNION
SELECT カラム名1 FROM テーブル名1 UNION SELECT カラム名2 FROM テーブル名2;
ALL: 重複を許容
・内部結合
一致するレコードを取り出すような結合
SELECT カラム名 FROM テーブル1 JOIN 結合するテーブル2 ON テーブル1カラム=テーブル2カラム;
・外部結合
一致かどうか関係なく,一方のテーブルのレコードを全て取り出す
-> 左外部結合と右外部結合があり,混同はあまり良くない。
・サブクエリ
クエリ実行によって得られたデータにクエリを発行する。
SELECT * FROM テーブル名 WHERE カラム名 IN (1段階目の処理結果);
・ビュー
テーブルのように見えるけど実体がないデータの集合情報
-> 仮想的なテーブルのイメージかな?
CREATE VIEW ビュー名 AS SELECT カラム名 FROM テーブル名 WHERE 条件;
・ストアドプロシージャ
複数のSQL文を1つにまとめたもの
未完成状態で実行されるのを防ぐためにデリミタを定義する。
delimiter // CREATE PROCEDURE ストアドプロシージャ名() BEGIN SELECT * FROM テーブル名; SELECT * FROM テーブル名; SQL文が続く… END // CALL ストアドプロシージャ名;
・トリガ
テーブルに処理が走ると,それをトリガとしてコマンド実行する仕組み
・ストレージエンジン
データベースを操作するエンジン的なものなのかね?
SHOW CREATE TABLE テーブル名;
・トランザクション
コミットとロールバックと一緒によく出てくるやつ。
感想
SQLについて全く知らない状態で読み始めましたが, SQLが何者で何に利用されているかなどの基礎知識は身につけられたので良かったです。
特にWEBサイトを構築する際に気を付ける項目(SQLインジェクションなど)についても解説されており, 今まで触れてこなかったWEB系の技術についても簡単に学べたので勉強になりました。
いつか自分のサイトを作ってみたい。