データベース03 - sql(create, insert, delete, updateなど)

36
データベース 第3回 SQL(CREATE, INSERT, DELETE, UPDATEなど) 1 2015年4⽉23⽇(⽊) 7・8時限 担当:奥 健太

Upload: kenta-oku

Post on 17-Jul-2015

128 views

Category:

Education


2 download

TRANSCRIPT

データベース第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 【ユーザ名】 -pEnter password:【パスワード】

c:¥>mysql -u rootmysql>

コマンドプロンプトなどから,次のコマンドを実⾏する-

-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

_dateG18 杉内俊哉 福岡 1980-10-30G19 菅野智之 神奈川 1989-10-11T14 能⾒篤史 兵庫 1979-5-28T19 藤浪晋太郎 ⼤阪 1994-4-12C15 ⿊⽥博樹 ⼤阪 1975-2-10C18 前⽥健太 ⼤阪 1988-4-11

playerteam_id name rank

G 巨⼈ 1T 阪神 2C 広島 3

teamplayer_no

team_id year

G18 G 2012G19 G 2013T14 T 2005T19 T 2013C15 C 2015C18 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⽂字)

CHARACTERVARYING(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,6070 ~ 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

_dateG18 杉内俊哉 福岡 1980-10-30G19 菅野智之 神奈川 1989-10-11T14 能⾒篤史 兵庫 1979-5-28T19 藤浪晋太郎 ⼤阪 1994-4-12C15 ⿊⽥博樹 ⼤阪 1975-2-10C18 前⽥健太 ⼤阪 1988-4-11

playerteam_id name rank

G 巨⼈ 1T 阪神 2C 広島 3

team

player_no

team_id year

G18 G 2012G19 G 2013T14 T 2005T19 T 2013C15 C 2015C18 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 playerVALUES('T14','能⾒篤史','兵庫','1979-5-28');

INSERT INTO例;playerテーブルへのデータの登録

24

INSERT INTO team(name, rank, team_id)VALUES('阪神', 2, 'T');

INSERT INTO affiliationSET player_no='C15', team_id='C';

数値型を除いては,値はシングルクォーテーション(')で囲む

登録されている全データの確認SELECT

25

SELECT * FROM 【テーブル名】;

SELECT * FROM player;例

*SELECT⽂は次回以降の講義で詳細に学ぶ

UPDATE 【テーブル名】

SET 【カラム名】=【値】,【カラム名】=【値】,...

WHERE 【条件】;

データの更新UPDATE

26

UPDATE teamSET rank = 1WHERE team_id = 'T';

*WHERE句は次回以降の講義で詳細に学ぶ

WHERE句を書き忘れると,すべてのデータを更新してしまうので注意

DELETE FROM 【テーブル名】

WHERE 【条件】;

データの削除DELETE FROM

27

DELETE FROM teamWHERE 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 BYALTER TABLE ... ADD DROP USER PRIMARY KEYALTER TABLE ... CHANGE EXISTS REFERENCESALTER TABLE ... DROP FOREIGN KEY REVOKEALTER TABLE ... MODIFY FULL OUTER JOIN RIGHT OUTER JOINALTER TABLE ... RENAME AS GRANT SELECTANY GROUP BY SHOW COLUMNS FROMAS HAVING SHOW DATABASESASC IN SHOW TABLESavg INNER JOIN SOMEBETWEEN INSERT INTO sumcount JOIN UNIQUECREATE DATABASE LEFT OUTER JOIN UPDATECREATE TABLE LIKE USECREATE VIEW LIMIT WHERECROSS JOIN maxDELETE FROM minDESC NATURAL JOINDISTINCT NOT EXISTSDROP DATABASE NOT NULL

これまでに学習したSQLキーワード

36

ALL DROP TABLE ORDER BYALTER TABLE ... ADD DROP USER PRIMARY KEYALTER TABLE ... CHANGE EXISTS REFERENCESALTER TABLE ... DROP FOREIGN KEY REVOKEALTER TABLE ... MODIFY FULL OUTER JOIN RIGHT OUTER JOINALTER TABLE ... RENAME AS GRANT SELECTANY GROUP BY SHOW COLUMNS FROMAS HAVING SHOW DATABASESASC IN SHOW TABLESavg INNER JOIN SOMEBETWEEN INSERT INTO sumcount JOIN UNIQUECREATE DATABASE LEFT OUTER JOIN UPDATECREATE TABLE LIKE USECREATE VIEW LIMIT WHERECROSS JOIN maxDELETE FROM minDESC NATURAL JOINDISTINCT NOT EXISTSDROP DATABASE NOT NULL