mysql 情報理工学部 情報システム工学科 3 年 h107042 纐纈琢真. データベース...

24
MySQL MySQL 情情情情情情 情情情情情情情情情 情情情情情情 情情情情情情情情情 3 3 H107042 H107042 情情情情 情情情情

Post on 21-Dec-2015

218 views

Category:

Documents


2 download

TRANSCRIPT

MySQLMySQL

情報理工学部 情報システム工学科 情報理工学部 情報システム工学科 33年年

H107042 H107042 纐纈琢真纐纈琢真

データベースデータベース データベース データベース (Database) (Database) は、特定のテーマに沿ったデータを集は、特定のテーマに沿ったデータを集

めて管理し、容易に検索・抽出などの再利用をできるようにしためて管理し、容易に検索・抽出などの再利用をできるようにしたもの。 狭義には、コンピュータによって実現されたものを言もの。 狭義には、コンピュータによって実現されたものを言う。う。 OSOS が提供するファイルシステム上に直接構築されるものや、が提供するファイルシステム上に直接構築されるものや、データベース管理システム を用いて構築されるものを含む。データベース管理システム を用いて構築されるものを含む。

データベースをコンピュータ上で管理するためのシステムをデーデータベースをコンピュータ上で管理するためのシステムをデータベース管理システム タベース管理システム (DBMS) (DBMS) という。という。

コンピュータ上では、データの再利用を高速かつ安定に実現するコンピュータ上では、データの再利用を高速かつ安定に実現するため、データを格納するための構造について様々な工夫が払われため、データを格納するための構造について様々な工夫が払われており、このデータ構造とアルゴリズムは情報工学において重要ており、このデータ構造とアルゴリズムは情報工学において重要な研究分野のひとつである。な研究分野のひとつである。

(Wikipedia(Wikipediaよりより ))

RDBMSRDBMS

リレーショナルデータベースマネジメントシステム リレーショナルデータベースマネジメントシステム (RDBMS; (RDBMS; 英英 : relational database management : relational database management system) system) とは、エドガー・とは、エドガー・ FF ・コッドが提唱した関係モ・コッドが提唱した関係モデル(リレーショナルモデル)に基づいた、コンピューデル(リレーショナルモデル)に基づいた、コンピュータのデータベース管理システム タのデータベース管理システム (DBMS) (DBMS) である。 である。

現在では、現在では、 RDBMS RDBMS という用語は、次のようなシステムという用語は、次のようなシステムに対して使われている。に対して使われている。 システムの利用者が、データをいくつかの関係 システムの利用者が、データをいくつかの関係 (( 複数の行と複複数の行と複

数の列からなる表数の列からなる表 ) ) の形で、扱うことができるシステムの形で、扱うことができるシステム システムの利用者が、表形式のデータを参照・更新する手段としシステムの利用者が、表形式のデータを参照・更新する手段とし

て、関係演算 て、関係演算 (( 選択、射影、結合、和などの関係代数や関係論選択、射影、結合、和などの関係代数や関係論理理 ) ) を、使うことができるシステムを、使うことができるシステム

(Wikipedia(Wikipedia よりより ))

SQLSQL

SQLSQL (エスキューエル(エスキューエル ,, シークェル)は、シークェル)は、 RDBMS RDBMS ににおいて、データの操作や定義を行うためのデータベーおいて、データの操作や定義を行うためのデータベース言語(問い合わせ言語)である。ス言語(問い合わせ言語)である。

(Wikipedia(Wikipedia よりより ))

SQLSQL は、は、 Structured Query LanguageStructured Query Language の略。の略。

MySQLMySQL

MySQLMySQL (マイエスキューエル)は、(マイエスキューエル)は、 RDBMSRDBMS の実装の一つでの実装の一つである。ある。

世界で最も有名なオープンソース・データベースとして知ら世界で最も有名なオープンソース・データベースとして知られている。 他のフリーれている。 他のフリー RDBMSRDBMS と比較して高速性に定評があと比較して高速性に定評があり、特に更新よりも参照の頻度の高いアプリケーションに向り、特に更新よりも参照の頻度の高いアプリケーションに向くとされている。くとされている。

C, C++, Eiffel, Smalltalk, Java(JNI), Lisp, Perl, PHP, C, C++, Eiffel, Smalltalk, Java(JNI), Lisp, Perl, PHP, Python, Ruby, TclPython, Ruby, Tcl はは MySQLMySQL のの APIAPI を介してデータベースへを介してデータベースへアクセスできる。またアクセスできる。また ODBCODBC インターフェース インターフェース (MyODBC) (MyODBC) もサポートされている。もサポートされている。

Open Database ConnectivityOpen Database Connectivity (( ODBCODBC )は、)は、 RDBMSRDBMS にアにアクセスするための共通インタフェース クセスするための共通インタフェース (API)(API) である。 である。

(Wikipedia(Wikipedia よよりり ))

データベースとデータテーブルデータベースとデータテーブル

データベース A

テーブル 1 テーブル 2

データベース B

テーブル 1 テーブル 2

IDID NAMENAME SCORESCORE

001001 AA 7070

002002 BB 6868

003003 CC 9191

ユーザ管理ユーザ管理

通常のデータ操作が行えるユーザを登録する通常のデータ操作が行えるユーザを登録するGRANTGRANT   権限 権限  ONON  データベース名 データベース名 .. テーブル名 テーブル名 

TOTO    ユーザ名ユーザ名 @@ ホスト名 ホスト名  IDENTIFIEDIDENTIFIED BY 'BY ' パスパスワードワード ';';

FLUSH PRIVILEGES;(FLUSH PRIVILEGES;( 権限テーブルから権限を再読み込権限テーブルから権限を再読み込みみ ))

「データベース名「データベース名 .. テーブル名」を「テーブル名」を「 ** .*.* 」にすると、全」にすると、全てのデータベースを利用できる。「データベース名てのデータベースを利用できる。「データベース名 .*.* 」」なら、指定したデータベース内の全てのテーブルを利用なら、指定したデータベース内の全てのテーブルを利用できる。できる。

ホスト名を「ホスト名を「”” %% ”” 」にすると、」にすると、 locallocal ホスト以外のどのホスト以外のどのホストからでも接続できるようになる。ホストからでも接続できるようになる。

IDENTIFIEDIDENTIFIED BY ‘BY ‘ ‘パスワード‘パスワード は省略可能。その場合パは省略可能。その場合パスワードは設定されない。スワードは設定されない。

ユーザ管理ユーザ管理

設定できる権限設定できる権限 (( 一部一部 ))

権限権限 内容内容

ALLALL GRANT OPTIONGRANT OPTION 以外全て以外全て

CREATECREATE データベースやテーブルの作データベースやテーブルの作成成

DROPDROP データベースやテーブルの削データベースやテーブルの削除除

INSERTINSERT データの挿入データの挿入

UPDATEUPDATE データの修正データの修正

DELETEDELETE データの削除データの削除

SELECTSELECT データの検索データの検索

GRANT OPTIONGRANT OPTION ユーザの作成ユーザの作成

ユーザ管理ユーザ管理

管理者権限を持つユーザを登録する管理者権限を持つユーザを登録するGRANTGRANT ALLALL ONON *.**.* TOTO ユーザー名 ユーザー名

@“%”@“%” IDENTIFIEDIDENTIFIED BYBY ‘パス ‘パス’ワード’ワード

WITHWITH GRANTGRANT OPTION;OPTION;

GRANTGRANT ALLALL ONON *.**.* TOTO ユーザー名 ユーザー名@localhost@localhost IDENTIFIEDIDENTIFIED BYBY ‘パス ‘パス

’ワード’ワードWITHWITH GRANTGRANT OPTION;OPTION;

FLUSH PRIVILEGES;FLUSH PRIVILEGES;

※※ユーザ名、パスワードは上と下で同じものを入力するユーザ名、パスワードは上と下で同じものを入力する

SQLSQL 分基礎分基礎

データベース一覧を見るデータベース一覧を見るSHOWSHOW DATABASES;DATABASES;

データベースを作るデータベースを作るCREATECREATE DATABASEDATABASE データベース名 データベース名 ;;

データベースを削除するデータベースを削除するDROPDROP DATABASEDATABASE データベース名 データベース名 ;;

使用するデータベースを指定使用するデータベースを指定 ((切り替え切り替え ))

USEUSE データベース名 データベース名 ;;

SQLSQL 分基礎分基礎

テーブルを作成するテーブルを作成するCREATECREATE TABLETABLE  テーブル名  テーブル名 (( カラムカラム 11 名 カラム名 カラム 11 の型の型 ,, カラムカラム 22 名 カラ名 カラ

ムム 22 の型・・・の型・・・ );); テーブルを削除するテーブルを削除する

DROPDROP TABLETABLE  テーブル名 テーブル名 ;; テーブルの一覧を見るテーブルの一覧を見る

SHOWSHOW TABLES;TABLES; テーブルのカラム構造を見るテーブルのカラム構造を見る

DESCDESC  テーブル名 テーブル名 ;;

SQLSQL 分基礎分基礎

使用できる型使用できる型 (( 一部一部 ))型名型名 内容内容

INTINT 44 バイトの整数。バイトの整数。

FLOATFLOAT 44 バイトの浮動小数点。バイトの浮動小数点。

DOUBLEDOUBLE 88 バイトの浮動小数点。バイトの浮動小数点。

DECIMALDECIMAL

(( 桁数桁数 ,, 小数点以下の桁小数点以下の桁数数 ))

DOUBLEDOUBLE と同じだが桁数制限あり。と同じだが桁数制限あり。正確な制度で保存したいときに使用。正確な制度で保存したいときに使用。

CHAR(CHAR(文字列の長さ文字列の長さ )) 固定長文字列。固定長文字列。格納した文字列が指定した長さ未満だ格納した文字列が指定した長さ未満だと、後ろに空白を付け加える。と、後ろに空白を付け加える。

VARCHAR(VARCHAR(文字列の長文字列の長ささ ))

可変長文字列。可変長文字列。空白を付け加えない。空白を付け加えない。

SQLSQL 分基礎分基礎

主キー(主キー( PRIMARY KEY:PRIMARY KEY: プライマリキープライマリキー )) をを 指定し指定してテーブルを作成てテーブルを作成

CREATECREATE TABLETABLE  テーブル名  テーブル名 (( カラムカラム 11 名名 カラムカラム11 の型 の型  PRIMARY KEY,PRIMARY KEY,カラムカラム 22 名 カラム名 カラム 22 の型・・・の型・・・ ););

主キーとは、レコードを主キーとは、レコードを 11 行ずつ識別するためのフィール行ずつ識別するためのフィールドド

主キーを重複させる、主キーを重複させる、 NULL(NULL( 入力されていない状態入力されていない状態 )) にすにすることは出来ない。ることは出来ない。

主キーの指定により、膨大なデータから必要なレコードだけ主キーの指定により、膨大なデータから必要なレコードだけを確実に取り出すことが可能。を確実に取り出すことが可能。

主キーに指定できるカラムは、主キーに指定できるカラムは、 11 つのテーブルにつきつのテーブルにつき 11 つつだけ。だけ。

SQLSQL 分基礎分基礎 レコードの追加レコードの追加

INSERTINSERT INTOINTO  テーブル名 テーブル名 (( カラム名カラム名 1,1,カラム名カラム名 2…) 2…) VALUES(VALUES(値値 1,1,値値 2…);2…);  または またはINSERTINSERT INTOINTO  テーブル名  テーブル名  VALUES(VALUES(値値 1,1,値値 2…);2…);

レコードの変更レコードの変更UPDATEUPDATE  テーブル名  テーブル名  SETSET  カラム名 カラム名 2 = 2 = 値値 2,2,カラム名カラム名 3 3

= = 値値 33WHEREWHERE  カラム名 カラム名 1=1=値値 1;1;※※WHEREWHERE 以下の部分の条件に当てはまるレコードの、指定し以下の部分の条件に当てはまるレコードの、指定し

た部た部  分を変更する。  分を変更する。 WHEREWHERE 以下を省略すると、テーブル内の以下を省略すると、テーブル内の全ての全ての   レコードが対象になる。  レコードが対象になる。

レコードの削除レコードの削除DELETEDELETE FROMFROM  テーブル名  テーブル名  WHEREWHERE  カラム名 カラム名 1 = 1 = 値値

1;1;※※WHEREWHERE 以下の部分の条件に当てはまるレコードを削除する。以下の部分の条件に当てはまるレコードを削除する。     WHEREWHERE 以下を省略すると、テーブル内の全てのレコードを以下を省略すると、テーブル内の全てのレコードを 削除する。 削除する。

SQLSQL 分基礎分基礎 テーブルを作って次のレコードを入力してみようテーブルを作って次のレコードを入力してみよう

numbernumber を主キーにするを主キーにする

numbenumberr

codecode namename priceprice

11 11 りんごりんご 8080

22 11 みかんみかん 5050

33 11 ぶどうぶどう 120120

44 22 コーラコーラ 100100

55 22 サイサイダーダー

9090

numbenumberr

cosuucosuu

11 33

44 44

55 22

22 22

11 22

33 33

tableAtableA tableBtableB

SQLSQL 分基礎分基礎

レコードの検索レコードの検索SELECTSELECT  カラム名 カラム名 1,1,カラム名カラム名 2…2… FROMFROM  テーブ テーブ

ル名ル名 ;; 条件に合うレコードを検索条件に合うレコードを検索

SELECTSELECT  カラム名 カラム名 1,1,カラム名カラム名 2…2… FROMFROM  テーブ テーブル名ル名

WHEREWHERE  カラム名 カラム名 = = 値値 ;;

※※「カラム名「カラム名 1,1,カラム名カラム名 2…2… 」で指定したカラムのみ」で指定したカラムのみ表示表示   する。この部分を「  する。この部分を「 **」にするとテーブル内の全て」にするとテーブル内の全てのカのカ   ラムを表示する。  ラムを表示する。

※※カラム名カラム名 11 ASAS ‘‘別名’とすると、表示の際カラム別名’とすると、表示の際カラム名名 11   を  を’’別名別名’’で指定した名前にして表示する。で指定した名前にして表示する。

SQLSQL 分基礎分基礎 使用できる演算子使用できる演算子 (( 一部一部 ))

比較演算子比較演算子 内容内容

==  または  または  <=><=> 等しい等しい ( <=> ( <=> はは NULLNULL にもにも使用可使用可 ))

>> ~より大きい~より大きい

<< ~より小さい~より小さい

>=>= 以上以上

<=<= 以下以下

<><>  または  または  !=!= 以外以外

IN(IN( リストリスト )) リスト内のいずれかと一致リスト内のいずれかと一致

BETWEENBETWEEN aa ANDAND bb

a a と と b b の間の間

論理演算子論理演算子 内容内容

ANDAND かつかつ

OROR またはまたは

NOTNOT ~でな~でないい

算術演算子算術演算子 内容内容

++ 加算加算

-- 減算減算

** 乗算乗算

// 除算除算

%% 除余除余

SQLSQL 分基礎分基礎

昇順に並び替えて表示昇順に並び替えて表示SELECTSELECT (( 中略中略 )) ORDERORDER BYBY  基準にす 基準にす

るカラムるカラム ;;

※※基準にするカラムの後に基準にするカラムの後に「「 descdesc 」を付けると降順に」を付けると降順に

なるなる 指定したカラムが同じレコードを、一つのグループと指定したカラムが同じレコードを、一つのグループと

して表示して表示SELECTSELECT    ** FROMFROM  テーブル名 テーブル名

GROUPGROUP BYBY  カラム名 カラム名 ;;

SQLSQL 分基礎分基礎

カラムの価に対して関数で計算を行って表示カラムの価に対して関数で計算を行って表示 SERECTSERECT  関数 関数 (( カラム名カラム名 )) FROMFROM  テーブル名 テーブル名 ;; 使用できる関数(一部)使用できる関数(一部)

関数関数 内容内容

AVG(AVG(カラム名カラム名 )) 平均を計算する平均を計算する

COUNT(COUNT(カラムカラム名名 ))

レコード数を数レコード数を数えるえる

MAX(MAX(カラム名カラム名 )) 最大値を調べる最大値を調べる

MIN(MIN(カラム名カラム名 )) 最小値を調べる最小値を調べる

SUM(SUM(カラム名カラム名 )) 合計を計算する合計を計算する※※グループ化した物に使うと、それぞれのグループ化した物に使うと、それぞれの

グループごとに計算などをするグループごとに計算などをする

SQLSQL 分基礎分基礎

22 つのテーブルを結合して表示つのテーブルを結合して表示 内部結合内部結合

(( それぞれのテーブルの、指定したカラムの価が一致する物だけ表示それぞれのテーブルの、指定したカラムの価が一致する物だけ表示 ))

SELECTSELECT  カラム名  カラム名  FROM FROM  テーブル名 テーブル名 11 JOINJOIN  テーブル名 テーブル名22 ONON  テーブル名 テーブル名 1.1.カラム名カラム名 11 ==   テーブル名テーブル名 2.2.カラム名カラム名 2;2; 左結合左結合 (( 指定したカラムの価が、テーブル指定したカラムの価が、テーブル 11 にだけある物も表示にだけある物も表示 ))

SELECTSELECT  カラム名  カラム名  FROMFROM  テーブル名 テーブル名 11 LEFTLEFT JOINJOIN   テーブル名テーブル名 22

ONON  テーブル名 テーブル名 1.1.カラム名カラム名 11 ==  テーブル テーブル名名 2.2.カラム名カラム名 2;2; 右結合右結合 (( 指定したカラムの価が、テーブル指定したカラムの価が、テーブル 22 にだけある物も表示にだけある物も表示 ))

SELECTSELECT  カラム名  カラム名  FROM FROM  テーブル名 テーブル名 11 RIGHTRIGHT JOINJOIN   テーブル名テーブル名 22    ONON  テーブル名 テーブル名 1.1.カラム名カラム名 11 ==   テーブル名テーブル名 2.2.カラム名カラム名 2;2;

課題課題 11

以下の内容のテーブルを作れ以下の内容のテーブルを作れ テーブル名は、「テーブル名は、「 tableCtableC 」」

codecode code_namecode_name

11 group1group1

22 group2group2

課題課題 22

code_namecode_name cosuucosuu goukeigoukei

group1group1 1010 760760

group2group2 66 580580

以下の結果が帰ってくるような以下の結果が帰ってくるような selectselect 分を考えよ分を考えよ 「「 tableAtableA 」、「」、「 tableBtableB 」、「」、「 tableCtableC 」を結合させる」を結合させる

課題課題 33

課題課題 22 の結果から、以下のデータを除外せよ。の結果から、以下のデータを除外せよ。 課題課題 22 の表の形で下記のデータがの表の形で下記のデータが

反映された表を取得する反映された表を取得する

numbernumber cosuucosuu

22 22

55 11

課題課題 44

身の回りの物をデータベース化してみよう。身の回りの物をデータベース化してみよう。