
おはようございます、未経験からITエンジニア転職を目指すいずみです。
今回は、MySQLの基礎を学び始めたのでアウトプットをしたいと思います。
Contents
なぜMySQL??
先週、初めて転職面接×2件を行いました。そちらの場で、「入社までに学んでおいた方がよいスキルはありますでしょうか、、、?」と質問したところ、2件とも「MySQL」と回答をいただいたのです。
私が志望している職種にもよるかもしれませんが、「複数の企業から必要だと言われたこと」と「そういえばデータベースについて、カリキュラムで1時間ちょっと触れた程度でよくわからん」という思いが交錯して、学び始めたというわけです。
とは言っても、就職活動やらオリジナルアプリやら重なっているのでまとまった時間が取れないことと、マルチタスクが苦手な私なので、「1週間で身につく」というボリューム感に惹かれて、こちらの教材を試してみようと思います。
一週間で身につくMySQL|トップページ~データベースの初心者でも、気軽にSQLが学習できるサイトです。「1週間で身に付くMySQL」で学べること
前置きが長くなりました。こちらの教材は、基礎編と発展編に分かれていて、まず基礎編では、、、
- MySQLの基本
- SQLの各コマンドを試す
- データの検索と結合
ということで、TechCampのカリキュラムでは未カバーの範囲を学べそうです。
続いて発展編では、、、
- データの変更と削除
- テーブルの書き換え
- データベースの正規化、ER図、テーブルの制約、運用まで
ということで、書き換えや正規化など、現時点ではどうやるのか理解できてませんが、手を動かしながら体系的に学べそうですね。
基礎編、発展編がそれぞれ1週間のボリューム感なので、日々コツコツと進めていきたいと思います。
SQL(Structure Query Language)入門
データベースを操作するための言語のこと。
主要なデータベース一覧
- Oracle -> Oracle社のDBで、高いシェアを誇る
- MySQL -> Webを中心に、手軽に使えることで高い支持を得る
- PostgresSQL -> Webシステムを中心に仕様
- Access -> マイクロソフトオフィスの製品の一つ
MySQLの特徴
- 高速で使いやすい
- 複数人が同時利用するようなWebアプリケーションに適していると言われている。
- レンタルサーバーやGoogleなどで用いられている
MySQLの仕組み
- インデックス -> テーブルの検索速度を向上させるための付箋
- スキーマ -> デーブルの目的や所有者に応じて格納場所を分けるための仕組み。まるでディレクトリ。
- クエリ -> データベース操作の命令のこと
コミットとロールバック
- トランザクション -> 一連のクエリの集合体。クエリが一つでも失敗したら、すべてのクエリの結果が反映されない。
- ロールバック -> データベースに対する変更処理を全て取り消すこと。
- コミット -> クエリの一部の処理を確定させること。コミットされたクエリは、ロールバックによる処理取り消しができない。
Railsでオリジナルアプリケーションを制作しているとき、トランザクションを使用しました。保存に失敗したとき、トランザクション内の処理は行わず、ロールバックするという記述をしたと思いますが、記述に従ってMySQLで処理が行われていたのですね。
データタイプ(文字列型)
型 | バイト | 特徴 |
---|---|---|
CAHR | 255 | 固定長文字列(後述) |
VARCHAR | 255 | 可変長文字列 |
TEXT | 65535 | 文章に利用 |
固定長と可変長
- 固定長文字列として、CHAR(5)と定義する。
- ここに「PEN」を格納すると、カラムの長さを5文字とするためブランク2文字が入る。-> 格納結果 : PEN□□
- 可変長文字列として、VARCHAR(5)と定義する。
- ここに「PEN」を格納すると、カラムの長さは3文字で入る。-> 格納結果 : PEN
データタイプ(NULL型)
- NULL値は「データが存在しないこと」を表す値。文字列における「ブランク」や数値における「0」ではないので注意。
- テーブルを作り、データは作ったけど、情報が追加されなかったときNULLとなる。
SQL命令の分類
- DDL(データ定義言語) -> CREATE/ALTER/DROP
- DML(データ操作言語) -> INSERT/DELETE/UPDATE/SELECT
- DCL(データ制御言語) -> COMMIT/ROLLBACK/SAVEPOINT
リテラル
- SQL文中に書かれる具体的なデータのこと。それぞれのリテラルで記述ルールがある。
- 数値リテラル -> 半角数値
- 文字リテラル -> シングルクォーテーションでくくる
- 日付リテラル -> シングルクォーテーションでくくる
まとめ
ActiveRecordのおかげでSQLを書かずともデータベースとやりとりをしてくれる一方で、裏側の処理がよくわからなかったのですが、少しイメージできた気がします。
またアウトプットしたいと思います。