2010年4月8日 (木) 17:43

MySQL
情報理工学部 情報システム工学科 3年
H107042 纐纈琢真
データベース

データベース (Database) は、特定のテーマに沿ったデータを集めて管理
し、容易に検索・抽出などの再利用をできるようにしたもの。 狭義には、
コンピュータによって実現されたものを言う。OSが提供するファイルシス
テム上に直接構築されるものや、データベース管理システム を用いて構
築されるものを含む。

データベースをコンピュータ上で管理するためのシステムをデータベース
管理システム (DBMS) という。

コンピュータ上では、データの再利用を高速かつ安定に実現するため、
データを格納するための構造について様々な工夫が払われており、この
データ構造とアルゴリズムは情報工学において重要な研究分野のひとつ
である。
(Wikipediaより)
RDBMS


リレーショナルデータベースマネジメントシステム (RDBMS;
英: relational database management system) とは、エドガー・
F・コッドが提唱した関係モデル(リレーショナルモデル)に基
づいた、コンピュータのデータベース管理システム (DBMS)
である。
現在では、RDBMS という用語は、次のようなシステムに対し
て使われている。


システムの利用者が、データをいくつかの関係 (複数の行と複数の列
からなる表) の形で、扱うことができるシステム
システムの利用者が、表形式のデータを参照・更新する手段として、
関係演算 (選択、射影、結合、和などの関係代数や関係論理) を、使
うことができるシステム
(Wikipediaより)
SQL

SQL(エスキューエル,シークェル)は、RDBMS において、
データの操作や定義を行うためのデータベース言語(問い合
わせ言語)である。
(Wikipediaより)

SQLは、Structured Query Languageの略。
MySQL




MySQL(マイエスキューエル)は、RDBMSの実装の一つである。
世界で最も有名なオープンソース・データベースとして知られて
いる。 他のフリーRDBMSと比較して高速性に定評があり、特に
更新よりも参照の頻度の高いアプリケーションに向くとされてい
る。
C, C++, Eiffel, Smalltalk, Java(JNI), Lisp, Perl, PHP, Python,
Ruby, TclはMySQLのAPIを介してデータベースへアクセスでき
る。またODBCインターフェース (MyODBC) もサポートされてい
る。
Open Database Connectivity(ODBC)は、RDBMSにアクセスす
るための共通インタフェース (API)である。
(Wikipediaより)
データベースとデータテーブル
データベースA
テーブル1
テーブル2
データベースB
テーブル1
テーブル2
ID
NAME
SCORE
001
A
70
002
B
68
003
C
91
ユーザ管理

通常のデータ操作が行えるユーザを登録する
GRANT 権限 ON データベース名.テーブル名 TO
ユーザ名@ホスト名 IDENTIFIED BY 'パスワード';
FLUSH PRIVILEGES;(権限テーブルから権限を再読み込み)



「データベース名.テーブル名」を「*.*」にすると、全てのデー
タベースを利用できる。「データベース名.*」なら、指定した
データベース内の全てのテーブルを利用できる。
ホスト名を「”%”」にすると、localホスト以外のどのホストから
でも接続できるようになる。
IDENTIFIED BY ‘パスワード‘は省略可能。その場合パス
ワードは設定されない。
ユーザ管理

設定できる権限(一部)
権限
内容
ALL
GRANT OPTION以外全て
CREATE
データベースやテーブルの作成
DROP
データベースやテーブルの削除
INSERT
データの挿入
UPDATE
データの修正
DELETE
データの削除
SELECT
データの検索
GRANT OPTION
ユーザの作成
ユーザ管理

管理者権限を持つユーザを登録する
GRANT ALL ON *.* TO ユーザー名@“%”
IDENTIFIED BY ‘パスワード’
WITH GRANT OPTION;
GRANT ALL ON *.* TO ユーザー名@localhost
IDENTIFIED BY ‘パスワード’
WITH GRANT OPTION;
FLUSH PRIVILEGES;
※ユーザ名、パスワードは上と下で同じものを入力する
SQL分基礎




データベース一覧を見る
SHOW DATABASES;
データベースを作る
CREATE DATABASE データベース名;
データベースを削除する
DROP DATABASE データベース名;
使用するデータベースを指定(切り替え)
USE データベース名;
SQL分基礎




テーブルを作成する
CREATE TABLE テーブル名
(カラム1名 カラム1の型,カラム2名 カラム2の型・・・);
テーブルを削除する
DROP TABLE テーブル名;
テーブルの一覧を見る
SHOW TABLES;
テーブルのカラム構造を見る
DESC テーブル名;
SQL分基礎

使用できる型(一部)
型名
内容
INT
4バイトの整数。
FLOAT
4バイトの浮動小数点。
DOUBLE
8バイトの浮動小数点。
DECIMAL
DOUBLEと同じだが桁数制限あり。
(桁数,小数点以下の桁数) 正確な制度で保存したいときに使用。
CHAR(文字列の長さ)
固定長文字列。
格納した文字列が指定した長さ未満だと、
後ろに空白を付け加える。
VARCHAR(文字列の長さ) 可変長文字列。
空白を付け加えない。
SQL分基礎

主キー(PRIMARY KEY:プライマリキー)を
指定してテーブルを作成
CREATE TABLE テーブル名 (カラム1名
カラム1の型 PRIMARY KEY,カラム2名 カラム2の型・・・);




主キーとは、レコードを1行ずつ識別するためのフィールド
主キーを重複させる、NULL(入力されていない状態)にするこ
とは出来ない。
主キーの指定により、膨大なデータから必要なレコードだけ
を確実に取り出すことが可能。
主キーに指定できるカラムは、1つのテーブルにつき1つだけ。
SQL分基礎

レコードの追加
INSERT INTO テーブル名(カラム名1,カラム名2…)
VALUES(値1,値2…); または
INSERT INTO テーブル名 VALUES(値1,値2…);

レコードの変更
UPDATE テーブル名 SET カラム名2 = 値2,カラム名3 = 値3
WHERE カラム名1=値1;
※WHERE以下の部分の条件に当てはまるレコードの、指定した部
分を変更する。 WHERE以下を省略すると、テーブル内の全ての
レコードが対象になる。

レコードの削除
DELETE FROM テーブル名 WHERE カラム名1 = 値1;
※WHERE以下の部分の条件に当てはまるレコードを削除する。
WHERE以下を省略すると、テーブル内の全てのレコードを
削除する。
SQL分基礎

テーブルを作って次のレコードを入力してみよう

numberを主キーにする
tableA
tableB
number
code
name
price
number
cosuu
1
1
りんご
80
1
3
2
1
みかん
50
4
4
3
1
ぶどう
120
5
2
4
2
コーラ
100
2
2
5
2
サイダー
90
1
2
3
3
SQL分基礎


レコードの検索
SELECT カラム名1,カラム名2… FROM テーブル名;
条件に合うレコードを検索
SELECT カラム名1,カラム名2… FROM テーブル名
WHERE カラム名 = 値;
※「カラム名1,カラム名2…」で指定したカラムのみ表示
する。この部分を「*」にするとテーブル内の全てのカ
ラムを表示する。
※カラム名1 AS ‘別名’とすると、表示の際カラム名1
を’別名’で指定した名前にして表示する。
SQL分基礎

使用できる演算子(一部)
比較演算子
内容
論理演算子 内容
= または <=>
等しい( <=> はNULLにも使用可)
AND
かつ
>
~より大きい
OR
または
<
~より小さい
NOT
~でない
>=
以上
<=
以下
<> または !=
以外
IN(リスト)
リスト内のいずれかと一致
BETWEEN a AND b a と b の間
算術演算子 内容
+
加算
-
減算
*
乗算
/
除算
%
除余
SQL分基礎


昇順に並び替えて表示
SELECT (中略) ORDER BY 基準にするカラム;
※基準にするカラムの後に
「desc」を付けると降順になる
指定したカラムが同じレコードを、一つのグループとして表示
SELECT * FROM テーブル名
GROUP BY カラム名;
SQL分基礎



カラムの価に対して関数で計算を行って表示
SERECT 関数(カラム名) FROM テーブル名;
使用できる関数(一部)
関数
内容
AVG(カラム名)
平均を計算する
COUNT(カラム名)
レコード数を数える
MAX(カラム名)
最大値を調べる
MIN(カラム名)
最小値を調べる
SUM(カラム名)
合計を計算する
※グループ化した物に使うと、それぞれの
グループごとに計算などをする
SQL分基礎

2つのテーブルを結合して表示



内部結合
(それぞれのテーブルの、指定したカラムの価が一致する物だけ表示)
SELECT カラム名 FROM テーブル名1 JOIN テーブル名2
ON テーブル名1.カラム名1 = テーブル名2.カラム名2;
左結合(指定したカラムの価が、テーブル1にだけある物も表示)
SELECT カラム名 FROM テーブル名1 LEFT JOIN テーブル名2
ON テーブル名1.カラム名1 = テーブル名2.カラム名2;
右結合(指定したカラムの価が、テーブル2にだけある物も表示)
SELECT カラム名 FROM テーブル名1 RIGHT JOIN テーブル名2
ON テーブル名1.カラム名1 = テーブル名2.カラム名2;
課題1

以下の内容のテーブルを作れ

テーブル名は、「tableC」
code
code_name
1
group1
2
group2
課題2

以下の結果が帰ってくるようなselect分を考えよ

「tableA」、「tableB」、「tableC」を結合させる
code_name
cosuu
goukei
group1
10
760
group2
6
580
課題3


課題2の結果から、以下のデータを除外せよ。
課題2の表の形で上記のデータが
反映された表を取得する
number
cosuu
2
2
5
1
課題4

身の回りの物をデータベース化してみよう。