Rokoisブログ

自分用技術メモ

初めてのSQL

はじめに

のちのちSQLを使うことになりそうなので、学んでおこうかな。 今回は下の書籍を参考に書いていこうと思います。

リレーショナルデータベースの実践的基礎

リレーショナルデータベースの実践的基礎

目次

MySQLのインストール

環境はWindows10で行いました。 ググればいろいろなサイトに方法が載っているのでそれを参考にした。 インストールした際に参考にしたサイト環境変数の設定まで行う。

インストールができたら、Windowsボタン押しながらX押して、そのあとIを押しPower Shellを起動する。 次に

mysql -u root -p --local_infle=1

を入力するとパスワードを要求されるので、打ち込みます。

mysql>

になればMySQLを起動することができました。

--local_infile=1はクライアント側でCSVファイルを入出力するためのおまじない。セキュリティーの関係上デフォルトではできないみたい。 参考にしたサイト

データ定義

データベースを定義

「OrderDB」データベースを定義します。

create database OrderDB;

定義されたか確認

show databases;

データベースを指定

定義したデータベースを指定する。

use OrderDB;

表を定義

注文表「OrderT」を定義

create table OrderT(
orderID char(5) primary key,
OData date not null,
OCorpID char(4) not null);

定義した表を確認する。

show columns from OrderT;

会社表「CorpT」を定義

create table CorpT(
CorpID char(4) primary key,
CorpName varchar(20) not null,
CorpAddr varchar(100));

定義した表を確認する

show columns from CorpT;

注文明細表「DetailT」を定義

create table DetailT(
OrderID char(5) not null,
Item varchar(20) not null,
Price int unsigned not null,
Qty smallint unsigned not null,
primary key(OrderID, Item));

定義した表を確認する

show columns from DetailT;

データロード

今回はExcelを使ってデータを作成し、CSVファイルを生成する。

データを作成

Excelで、「OrderT」「CorpT」「DetailT」の表のデータを入力する。

f:id:koby1916:20191105130726p:plain
OrderT

f:id:koby1916:20191105130825p:plain
CorpT

f:id:koby1916:20191105130901p:plain
DetailT

表に入力ができたら、ファイルからエクスポートを選択し、ファイルの種類の変更からCSVを選択して、CSVファイルを作成します。 それぞれのCSVファイルをロードしていきます。

CSVファイルをロード

windowsの場合、作成したCSVファイルの文字列がshift-jisなので設定する

set character_set_database=sjis;

「OrderT」へロードする

load data local infle '**ファイルディレクトリ**\\OrderT.csv' into table OrderT fields terminated by ',' lines terminated by '\r\n';

表を確認する

select * from OrderT;

「CorpT」へロードする

load data local infile '**ファイルディレクトリ**\\CorpT.csv' into table CorpT fields terminated by ',' optionally enclosed by '"' lines terminated by '\r\n';

表を確認する

select * from CorpT;

表を確認すると、空白の箇所があるがそれをNULLに変更する

update CorpT set CorpAddr = null where CorpAddr = '';

「DetailT」へロードする

load data local infile '**ファイルディレクトリ**\\DetailT.csv' into table DetailT fields terminated by ',' optionally enclosed by '"' lines terminated by '\r\n'; 

表を確認する

select * from DetailT;

ロードのオプションについて

今回ロード時のオプションで使用したのが

  • fields terminated by
  • optionally enclosed by
  • lines terminated by

の3つでした。それぞれの機能について説明をする。

fields terminated by

このオプションはデータの区切りが何であるかを指定します。 デフォルトではタブの\t

optionally enclosed by

このオプションは文字列型のデータに対して指定した区切り文字で囲う。 optionallyをとるとすべてのデータに対して指定した区切り文字で囲います。 デフォルトは''です。

lines terminated by

行の終わりの文字が何であるかを指定する。windowsの場合、改行文字は\r\nである。デフォルトは\n

参考にしたサイト

おわりに

今回はMySQLのインスールからデータベースの作成、表を作成、CSVのロードを行いました。 次回は今回作成したデータベースに対して問い合わせを行うことについて書きたいと思います。