概要
今回は、MySQLを利用して学習を行なっていく。
自分自身はSQLはほとんど触っていないため、高度な内容は今回行わない。
MySQL、PostgreSQL、GoogleBigQueryなどの操作の基本を学ぶためにも記載しておく。
基本的に環境構築と、参照系のSQLと挿入系のSQLを知る事ができればよいとここでは考えている。
環境
- 今回はmacOSにダイレクトでいれる。
- MySQL5.7を使用する。
事前説明
そもそもデータベースって何?って思うかもしれないのでここで説明。
- データベース(DB)とは、、
検索・蓄積が容易にできるように整理された情報の集まり
。DBと訳される。 - データベースマネジメントシステム(DBMS)
- DBを管理するコンピュータシステムのこと。
当たり前だが、DB自体は色々なところで利用されている。
WebサイトやSNS、アプリケーションなど。。
→なんでDBを使うのか?
- 大量のデータから必要なデータを取り出す
- Excelだと大量になったら重くて使えなくなる。
- 大人数でデータを共有して利用する。
- データを保護するため。
- 冗長構成などにしてデータを保護したり、アクセス権を特定したりも可能。
DBの種類
RDB、リレーショナルデータベース
オープンソースで無料で使える。
- MySQL:いろんなところで使われている。
- MariaDB MySQLから派生している。
- PostgreSQL
商用(有料)のDB
- Oracle Database
- SQL Server (Microsoft)
など。
キーバリュー型データストア
検索に使うKeyと、Valueの組み合わせだけの単純な形。
Redisなどで使われる。
### オブジェクト指向DB
現在はあまり使われていない・
XMLDB
XMLをDBに使いやすくできるようにしたもの。インターネットで使用されるもので使われる。
SQLについて
SQLとは。。
データベースやテーブル、行や列wぽ扱うための言語。
IBMが作成したSEQUELが元とも言われる。
select * from users where age >= 20
みたいな感じ。
SQLにおいて基本的な形、標準SQL
という考え方がある。
しかしMySQLで使えてもPostgreSQLで使えないというような、SQLの方言がいくつかあったりするので注意する。
なのでまずは標準SQLを学ぶと応用が効きやすい。
基本記述ルール。
- 大文字と小文字は区別されない。ただし読みにくいので注意。最近は小文字が多い。
- SQLの最後には、セミコロン
;
をつける - 文字
Saito
と日付2024
などは、シングルクウォーテーション''
囲う。 - 単語は半角スペースもしくは改行で区切る。
- SQLは全角でかかない。
RDBMSの基本用語
- データベース データを管理するもの。全体的なもの。
- テーブル
- Excelでいう、表。データベースの中に複数作れる。
- ユーザのテーブル、商品のテーブルみたいな感じ。
- 列(フィールド、カラム)Excelでいう列。
- 行(レコード、ロウ)ともいう。ここには、idが割り振られる。
- クエリ
- データの検索や更新などの要求をDBに送信すること。
参考サイト
https://academy.gmocloud.com/wp/know/20160425/2259
データの型
データ型とは。
テーブルを作成する時、それぞれの列に指定した形式のデータしか入力できないように設定する。
具体的には、
- 数値型
- int:整数。1,2,3
- tinyint:小さな整数 -128 ~ 127
- float:小さい浮動小数点 -3.4 ~ -1.17~~
- double:普通の浮動小数点
- int unsigned
- 数値は符号なしとすることができる。これにより、扱える数が増える。
- tinyint(1)
- true,falseを使う事ができる。
- 内部的には1,0で管理されている。
- ただし、MySQLでは0とnullがfaulse、それ以外はtrueとなる。
- nullは、データが存在しない状態。
- 文字列型
- char型キャラ
- 255文字まで使える。文字列を格納する時、指定した長さになるようにされる。
- 商品コードで5桁固定"CD123"なら、
char(5)
で定義する
- varchar型( バーキャラ)
- 可変長の文字列だが、255文字までの場合。
- メルアドみたいな、文字数が決まってないもの。
sample@example.com
みたいな
- text(テキスト)
- 長いものを使うときに使う。65535まで。
- char型キャラ
- 日付型
- date型 日付を表す。
1000-01-01
から、9999-12-31
まで - datetime 日付と時刻を表す。
- time 時刻を芦原図。
- date型 日付を表す。
floatはあまり使わず、doubleを使っている。
環境構築
mysqlと、mysql workbenchという管理ツールを使用していく。
macでは、homebrewか、cloudにあるDBを使ってインストールすることも可能。
windowsでは結構つまづく部分があったりするらしい。
XAMPPもしくはMAMP、またはクラウドの無料枠を利用していく。
そもそもMYSQLとは。
以下が公式ページ。ドキュメントのタブをひらけば、リリースノートなどを確認することも可能。
8.0が現在使われている。今回受講しているUdemyの内容では5.7を使用している。
ただし、補足があり、8.0.xを利用する事とする。(8.1.xでは動かないらしい。)
9.~~が開発用で使われている・
- オープンソースのRDBMSの一つ・。
- 無料で利用可能。
- 2010年からオラクルで利用可能。
- シェアが高い。
- 以下のサイトで、DBのシェア率を確認することができる。
インストール(mac)
以下のサイトからインストールできる。
8.0.~~を利用する。この時は8.1がworkbenchに対応していないらしい。
今回自分はmac_os 14である。
そして、OSのCPUによって選択肢が出ている。
今回自分のPCはM1Proなので、CPUはARMを選択する。
x86だったら、IntelのCPUになる。
そして、DMG Archiveをダウンロードする。
ダウンローラをアプリケーションで開いて、インストーラを選択。
パスワードの縁くりぷしょんは、上を選択。上が新しい。
次に、rootユーザーのパスワードを入力して、Finishする。これはのちに使うので忘れないように。
システム環境設定からMysQLを検索できるようになる。この画面から、MySQLの軌道や停止ができる。画面を見ると、現在は起動状態になっている。
Workbenchのインストール
以下のリンクからDLできる。
MysQLの公式ツールで、
DBの設計・作成・管理をヴィジュアル的に扱う事ができる。
ただし、バージョンによっては致命的なバグがあるので注意。
今回は、Productバージョン8.0.34を選択して、DLする。
dmgを開いて、アプリケーションフォルダに入れる。
実際に接続してみる。
- mysql
- workbench
を起動している状態にする。
workbenchの、/Database/Connect to Databaseを選択する。
この状態になっているのをみたら、OKを押す。ホストネームとかは今回Localで使うのでそのまま。
ここで、mysqlのrootのパスワードを入力する。
上のタブを見ると、アクセスできているのが確認できる。
データを取り込んでみる。
ワークベンチで、DBに接続した状態にしておく。
今回、サンプルでsqlをDLしてある。MySQLに取り込んだらすぐに使えるようになる。
すると、スキーマネーム(DBの名前)をいれる。
- Schemaname
- mydb
- Character Set
- utf8 (日本語も使えるようになる)
- Collation
- utf8_general_ci
- 照合順序といい、ソートの順番の設定になる。
すると、以下の画面がでる。(このSQLを実行するがよいかという内容である。)
Applyを押す。
Schemaタブで、mydbを選択する。(ダブルクリック)
その後、File/Open SQL Scriptを選択し、今回実行するSQL文を指定する。
その後、雷のマークを押すと、SQLの読み込みが行われる。
その後、Refresh All を選択する。
mydbの中のtablesをクリックすると、色々出てきているのがわかる。
DBについて
DBは架空の売り上げ図である。ER図(DBの構造を表す。)
ER図での線はテーブルの紐付けである。
各テーブルにて、それぞれの情報の表があるというイメージ。