データベース
第3回
SQL(CREATE, INSERT, DELETE, UPDATEなど)
1
2015年4⽉23⽇(⽊) 7・8時限
担当:奥 健太
SQL編
回 ⽇付 テーマ
2 4/16 SQL概要
3 4/23 SQL(CREATE, INSERT, DELETE, UPDATEなど)
4 4/30 SQL(SELECT:基本)
5 5/7 SQL(SELECT:結合,副問合せ)
6 5/14 SQL(VIEW, ALTER, GRANTなど)
7 5/21 SQL復習,中間試験(SQL)
2
SQLの主なコマンド⼀覧(1/2)
3
種類 コマンド 説明
DDL
CREATE DATABASE データベースを作成
CREATE TABLE データベース内にテーブルを定義
CREATE VIEW データベースにビュー(仮想テー
ブル)を定義
DROP TABLE データベースからテーブルを削除
DROP VIEW データベースからビューを削除
ALTER TABLE テーブル構成を変更
SQLの主なコマンド⼀覧(2/2)
4
種類 コマンド 説明
DML
INSERT テーブルにデータを登録
DELETE テーブルからデータを削除
UPDATE テーブル内のデータを更新
SELECT テーブル内からデータを検索して
取り出す
DCL
COMMIT 正常終了を通知
ROLLBACK 異常終了を通知
GRANT 権限を与える
REVOKE 権限を取り下げる
本⽇の講義で学ぶこと
5
MySQLに
ログイン
データベースの作成
テーブルの作成
データの登録
データの更新
データの削除
テーブルの削除
データベースの削除
MySQLから
ログアウト
MySQLにログイン
6
c:¥>mysql -u 【ユーザ名】 -p
Enter password:【パスワード】
c:¥>mysql -u root
mysql>
例
コマンドプロンプトなどから,次のコマンドを実⾏する-
-u : ユーザ名を指定するオプション
-p : パスワードを指定するオプション
(パスワードが設定されていない場合は省略可)
 ログインすると,mysqlコンソールに切り替わり,mysqlプロンプト
"mysql>"が表⽰される
 SQLはmysqlコンソール上で実⾏する
データベースの⼀覧表⽰
SHOW DATABASES
7
SHOW DATABASES;
データベースの作成
CREATE DATABASE
8
CREATE DATABASE 【データベース名】;
CREATE DATABASE dbclass DEFAULT
CHARACTER SET UTF8;
SHOW DATABASES;
例
 ⽇本語を扱う場合は,"DEFAULT CHARACTER SET UTF8"を追加し,
⽂字コードをUTF8に指定すると良い
データベースの選択
USE
9
USE 【データベース名】;
USE dbclass;
例
テーブルの作成
CREATE TABLE
10
CREATE TABLE 【テーブル名】(
【カラム名】 【データ型】 【制約】,
【カラム名】 【データ型】 【制約】,
...
【カラム名】 【データ型】 【制約】);
例;プロ野球選⼿の所属テーブル
11
player
_no
name home
birth
_date
G18 杉内俊哉 福岡 1980-10-30
G19 菅野智之 神奈川 1989-10-11
T14 能⾒篤史 兵庫 1979-5-28
T19 藤浪晋太郎 ⼤阪 1994-4-12
C15 ⿊⽥博樹 ⼤阪 1975-2-10
C18 前⽥健太 ⼤阪 1988-4-11
player
team
_id
name rank
G 巨⼈ 1
T 阪神 2
C 広島 3
team
player
_no
team
_id
year
G18 G 2012
G19 G 2013
T14 T 2005
T19 T 2013
C15 C 2015
C18 C 2007
affiliation
*manaba+R上の"player.sql"内のSQL⽂を実⾏することで復元できる
CREATE TABLE player(
player_no CHAR(3) PRIMARY KEY,
name TEXT NOT NULL,
home CHAR(3) NOT NULL,
birth_date DATE NOT NULL);
CREATE TABLE
例;playerテーブルの作成
12
player
_no
name home
birth
_date
player
CREATE TABLE team(
team_id CHAR(1) PRIMARY KEY,
name CHAR(6) NOT NULL,
rank INT);
CREATE TABLE
例;teamテーブルの作成
13
team
_id
name rank
team
CREATE TABLE affiliation(
player_no CHAR(3)
REFERENCES player(player_no),
team_id CHAR(1),
year INT,
PRIMARY KEY(player_no, team_id),
FOREIGN KEY(team_id)
REFERENCES team(team_id));
CREATE TABLE
例;affiliationテーブルの作成
14
player
_no
team
_id
year
affiliation
テーブルの⼀覧表⽰
SHOW TABLES
15
SHOW TABLES;
カラムの⼀覧表⽰
SHOW COLUMNS FROM
16
SHOW COLUMNS FROM 【テーブル名】;
データ型(1/3)
17
データ型 説明
CHARACTER(n)
/ CHAR(n)
n⽂字で構成される固定⻑⽂字列
(0~255⽂字)
CHARACTER
VARYING(n)
/ VARCHAR(n)
n⽂字までで構成される可変⻑⽂字列
(0~65,535⽂字)
TEXT 可変⻑⽂字列(0~65,535⽂字)
⽂字列型
データ型(2/3)
18
データ型 説明
INTEGER / INT 単精度(32ビット)整数
FLOAT 単精度浮動⼩数点数
DOUBLE 倍精度浮動⼩数点数
数値型
整数型の範囲とサイズ
19
データ型 符号付きの範囲 符号なしの範囲 サイズ
TINYINT -128 ~ 127 0 ~ 255 1バイト
SMALLINT -32,768 ~ 32,767 0 ~ 65,535 2バイト
MEDIUMINT -8,388,608
~ 8,388,607
0 ~ 16,777,215 3バイト
INT -2,147,483,648
~ 2,147,483,647
0 ~ 4,294,967,295 4バイト
BIGINT -9,223,372,036,854,775,808
~ 9,223,372,036,854,775,807
0
~ 18,446,744,073,709,551,615
8バイト
整数型
 データ型の後にUNSINGEDを付けることで,符号なし
を指定できる(MySQLの場合)
データ型(3/3)
20
データ型 説明
DATE 年⽉⽇('YYYY-MM-DD'形式)
TIME 時分秒('HH:MM:SS'形式)
TIMESTAMP DATEとTIMEの組合せ
('YYYY-MM-DD HH:MM:SS'形式)
⽇時型
 データ登録時や更新時にTIMESTAMP型のカラムに値を指定しない
と,登録時または更新時の⽇付と時刻が⾃動的に設定される
制約
21
制約 キーワード 説明
主キー制約 PRIMARY KEY 主キーのカラムを指定(NOT
NULLとUNIQUEの組合せ)
NOT-NULL制約 NOT NULL カラムがNULL値をとらないこと
を⽰す制約
⼀意性制約 UNIQUE 複数のデータがこのカラムに同じ
値をもつことを禁⽌する制約
外部キー制約 FOREIGN KEY,
REFERENCES
カラムの値が,他のテーブルのカ
ラムの値と⼀致しなければならな
い制約(参照整合性制約)
参照整合性制約とは
22
player
_no
name home
birth
_date
G18 杉内俊哉 福岡 1980-10-30
G19 菅野智之 神奈川 1989-10-11
T14 能⾒篤史 兵庫 1979-5-28
T19 藤浪晋太郎 ⼤阪 1994-4-12
C15 ⿊⽥博樹 ⼤阪 1975-2-10
C18 前⽥健太 ⼤阪 1988-4-11
player
team
_id
name rank
G 巨⼈ 1
T 阪神 2
C 広島 3
team
player
_no
team
_id
year
G18 G 2012
G19 G 2013
T14 T 2005
T19 T 2013
C15 C 2015
C18 C 2007
affiliation
player_no CHAR(3)
REFERENCES player(player_no)
FOREIGN KEY(team_id)
REFERENCES team(team_id))
参照
参照
外部キー外部キー
 参照先のカラムにない値を設定
しようとするとエラーになる.
データの登録
INSERT INTO
23
INSERT INTO 【テーブル名】
VALUES(【値】,【値】,...);
INSERT INTO 【テーブル名】
(【カラム名】,【カラム名】,...)
VALUES(【値】,【値】,...);
INSERT INTO 【テーブル名】
SET 【カラム名】=【値】,【カラム名】=【値】,...;
INSERT INTO player
VALUES('T14','能⾒篤史','兵庫','1979-5-28');
INSERT INTO
例;playerテーブルへのデータの登録
24
INSERT INTO team
(name, rank, team_id)
VALUES('阪神', 2, 'T');
INSERT INTO affiliation
SET player_no='C15', team_id='C';
 数値型を除いては,値はシングルクォーテーション(')で
囲む
登録されている全データの確認
SELECT
25
SELECT * FROM 【テーブル名】;
SELECT * FROM player;
例
*SELECT⽂は次回以降の講義で詳細に学ぶ
UPDATE 【テーブル名】
SET 【カラム名】=【値】,【カラム名】=【値】,...
WHERE 【条件】;
データの更新
UPDATE
26
UPDATE team
SET rank = 1
WHERE team_id = 'T';
例
*WHERE句は次回以降の講義で詳細に学ぶ
 WHERE句を書き忘れると,すべてのデータを更新してし
まうので注意
DELETE FROM 【テーブル名】
WHERE 【条件】;
データの削除
DELETE FROM
27
DELETE FROM team
WHERE team_id = 'G';
例
 WHERE句を書き忘れると,すべてのデータを削除してし
まうので注意
DROP TABLE 【テーブル名】;
テーブルの削除
DROP TABLE
28
DROP TABLE affiliation;
例
 警告や確認メッセージなしに削除されるため,実⾏すると
きは慎重に
DROP DATABASE 【データベース名】;
データベースの削除
DROP DATABASE
29
DROP DATABASE dbclass;
例
 警告や確認メッセージなしに削除されるため,実⾏すると
きは慎重に
MySQLからログアウト
30
mysql>exit
MySQLコンソールで,次のコマンドを実⾏する-
mysql>quit
または
まとめ
31
MySQLに
ログイン
データベースの作成
テーブルの作成
データの登録
データの更新
データの削除
テーブルの削除
データベースの削除
MySQLから
ログアウト
まとめ
32
MySQLに
ログイン
CREATE DATABASE
CREATE TABLE
INSERT INTO
UPDATE
DELETE FROM
DROP TABLE
DROP DATABASE
MySQLから
ログアウト
本⽇学習したキーワード
〜SQL編〜
33
MySQL スクリプトファイル
NOT-NULL制約 静的SQL
SQL 制約
⼀意性制約 対話的DB操作
外部キー制約 ダンプファイル
外部キー データ制御⾔語(DCL)
仮想テーブル データ操作⾔語(DML)
カラム(列) データ定義⾔語(DDL)
関係代数 データベース
関係データベース管理システム(RDBMS) テーブル(表)
関係データモデル テーブル副問合せ
完全外部結合 問合せ(クエリ)
交差結合 等結合
参照整合性制約 動的SQL
⾃⼰結合 内部結合
⾃然結合 左外部結合
集約関数 ビュー
主キー 副問合せ
主キー制約 右外部結合
スカラ副問合せ ロウ(⾏)
これまでに学習したキーワード
〜SQL編〜
34
MySQL スクリプトファイル
NOT-NULL制約 静的SQL
SQL 制約
⼀意性制約 対話的DB操作
外部キー制約 ダンプファイル
外部キー データ制御⾔語(DCL)
仮想テーブル データ操作⾔語(DML)
カラム(列) データ定義⾔語(DDL)
関係代数 データベース
関係データベース管理システム(RDBMS) テーブル(表)
関係データモデル テーブル副問合せ
完全外部結合 問合せ(クエリ)
交差結合 等結合
参照整合性制約 動的SQL
⾃⼰結合 内部結合
⾃然結合 左外部結合
集約関数 ビュー
主キー 副問合せ
主キー制約 右外部結合
スカラ副問合せ ロウ(⾏)
本⽇学習したSQLキーワード
35
ALL DROP TABLE ORDER BY
ALTER TABLE ... ADD DROP USER PRIMARY KEY
ALTER TABLE ... CHANGE EXISTS REFERENCES
ALTER TABLE ... DROP FOREIGN KEY REVOKE
ALTER TABLE ... MODIFY FULL OUTER JOIN RIGHT OUTER JOIN
ALTER TABLE ... RENAME AS GRANT SELECT
ANY GROUP BY SHOW COLUMNS FROM
AS HAVING SHOW DATABASES
ASC IN SHOW TABLES
avg INNER JOIN SOME
BETWEEN INSERT INTO sum
count JOIN UNIQUE
CREATE DATABASE LEFT OUTER JOIN UPDATE
CREATE TABLE LIKE USE
CREATE VIEW LIMIT WHERE
CROSS JOIN max
DELETE FROM min
DESC NATURAL JOIN
DISTINCT NOT EXISTS
DROP DATABASE NOT NULL
これまでに学習したSQLキーワード
36
ALL DROP TABLE ORDER BY
ALTER TABLE ... ADD DROP USER PRIMARY KEY
ALTER TABLE ... CHANGE EXISTS REFERENCES
ALTER TABLE ... DROP FOREIGN KEY REVOKE
ALTER TABLE ... MODIFY FULL OUTER JOIN RIGHT OUTER JOIN
ALTER TABLE ... RENAME AS GRANT SELECT
ANY GROUP BY SHOW COLUMNS FROM
AS HAVING SHOW DATABASES
ASC IN SHOW TABLES
avg INNER JOIN SOME
BETWEEN INSERT INTO sum
count JOIN UNIQUE
CREATE DATABASE LEFT OUTER JOIN UPDATE
CREATE TABLE LIKE USE
CREATE VIEW LIMIT WHERE
CROSS JOIN max
DELETE FROM min
DESC NATURAL JOIN
DISTINCT NOT EXISTS
DROP DATABASE NOT NULL

データベース03 - SQL(CREATE, INSERT, DELETE, UPDATEなど)