SQL J2EE I (データベース論) 第3回 / 2004-04-28 きょうの内容 SQLの概要を知る。 リレーショナルデータベースの 仕組み no 42377 42872 「データベース」は、「テーブル」から構成さ れる 「テーブル」は、「行」から構成される 「行」は、「項目」から構成される title author publisher 伽藍とバザール 山形浩生訳 光芒社 Java言語で学ぶ 結城浩 著 ソフトバンク デザインパターン 入門 SQL リレーショナルデータベースを操作するた めの言語。 標準化されているので、あるデータベース で利用したSQLを、他のデータベースでも (だいたい)使える。 いくつかのバージョンがある。ここでは 現 在よく使われている SQL92 を中心に解説 ほかには SQL89, SQL92, SQL99 テーブルの作成 (1) create table テーブル名 ( 項目名 データ型, 項目名 データ型, ..... ..... ); テーブルの作成 (2) create table books ( ndc varchar(10), tyosya_hyouji varchar(2), id int, title varchar(50), author varchar(50), publisher varchar(30), constraint pk_books primary key(id) ); データ型 データにはSQL標準の型がある。 char(n) varchar(n) int float(p) date time 固定長の文字列 (長さ n) 可変長の文字列 (長さ n) 符号付き整数 浮動小数点 (p は精度) 日付 時刻 他にも、データベースごとに独自のデータ 型がある。 制約 (1) 制約とは何か テーブルの項目に入る値の条件 制約には2通りある。 列制約 ひとつの列に制約を加える テーブル制約 複数の列に同時に制約を加 える 制約 (2) 主キー制約 主キーを指定する 列制約 create table books ( ndc varchar(10), tyosya_hyouji varchar(2), id int primary key, title varchar(50), author varchar(50), publisher varchar(30) ); テーブル制約 create table books ( ndc varchar(10), tyosya_hyouji varchar(2), id int, title varchar(50), author varchar(50), publisher varchar(30), primary key (id) ); 制約 (3) not null 制約 列に null を許さない null 項目にデータが入らない状態のこ と create table books ( ..... title varchar(50) not null, ..... ); 制約 (4) unique 制約 データの重複を許さない create table students ( ..... email varchar(50) unique, ..... ); 制約 (5) check 制約 指定した論理式をチェック create table books ( ..... id int check (0 <= id and id < 100000), ..... ); 制約 (6) 制約名 (列制約) create table books ( ndc varchar(10), tyosya_hyouji varchar(2), id int constraint pk_books primary key, title varchar(50), author varchar(50), publisher varchar(30) ); 制約 (7) 制約名 (テーブル制約) create table books ( ndc varchar(10), tyosya_hyouji varchar(2), id int, title varchar(50), author varchar(50), publisher varchar(30), constraint pk_books primary key (id), constraint check_id check (0 <= id and id<100000) ); 制約 (8) 外部キーの設定 (1) no タイトル 著者 42872 Java言語で学ぶデ 結城浩 著 ザインパターン入門 no 42872 42872 keyword Java デザインパターン 出版社 ソフトバンク それぞれのテーブルには 「no」という項目がある。こ の項目を通じて2つのテー ブルを結合できる。 ↑ この「no」が外部キー。元のテーブルを参照できる。 制約 (9) 外部キーの設定 (2) create table テーブル名 ( 項目名 データ型 ..... constraint 制約名 foreign key(項目名) references 参照テーブル名(項目名) ); 制約 (10) 外部キーの設定 (3) create table books ( id int constraint pk_books primary key, ..... ); create table keywords ( id int, keyword varchar(30), constraint fk_id foreign key(id) references books(id) ); テーブルの削除 drop table テーブル名 例) drop table books; データの検索 (1) 基本パターン select from where 項目のリスト テーブルのリスト 検索条件 データの検索 (2) 検索条件が無い場合 select title from books; select id, title from books; テーブル books 中のすべてのデータから、 title という項目を取り出す テーブル books 中のすべてのデータから、id と title という2つの項目を取り出す select * from books; テーブル books 中のすべてのデータから、す べての項目を取り出す データの検索 (3) 単純な検索条件 select id, title from books where id < 30000; Id が 30000 未満の行を検索 select title, publisher from books where publisher = ‘八千代出版’; 出版社が「八千代出版」のものを検索 データの検索 (4) 論理演算 (and) select id, title from books where 42000 <= id and id < 43000; Id が 42000 以上かつ 43000 未満のものを 検索 select id, title from books where between 42000 and 43000; こう書くこともできる データの検索 (5) 論理演算 (or) select title, author, publisher from books where publisher = ‘群像社’ or publisher = '八千代出版'; 出版社が「群像社」か「八千代出版」のものを 検索 データの検索 (6) like とワイルドカード select title from books where title like 'Java%'; 「Java」からはじまるタイトルの本を検索 select title from books where title like '%Java%'; タイトルに「Java」を含む本を検索 データの検索 (7) like とワイルドカード select title from books where title like '%Java%' or title like '%Perl%'; タイトルに「Java」か「Perl」を含む本を検索 データの検索 (8) テーブルの結合 (1) no タイトル 42872 Java言語で学 ぶデザインパ ターン入門 no 42872 42872 Keyword Java デザインパ ターン 著者 出版社 結城浩 著 ソフトバン ク あるタイトルの本の キーワードを知りたい。 テーブルは正規化に よって分割されている。 データの検索 (9) テーブルの結合 (2) 複数のテーブルを使う場合、項目名の指定は次 の形になる。 テーブル名.項目名 検索条件として、それぞれのテーブルの id が一 致している必要がある。 select books.title, keywords.keyword from books, keywords where books.id = keywords.id; データの検索 (10) テーブルの結合 (3) SQL92 以降では次のように書ける select books.title, keywords.keyword from books join keywords on books.id = keywords.id; データの検索 (11) テーブルの結合 (4) books.id = keywords.id のように、id と いう項目名が共通の場合、次のように も書ける。(HSQLDBでは動かない) select books.title, keywords.keyword from books join keywords using(id); データの登録 insert into テーブル名 values (値1, 値2, ...) 例) insert into books values ( '361', 'M', '41439', '情報メディア論', '丸山不二夫 編著', '八千代出版' ); create table での項目の順番通りに指定する データの更新 update テーブル名 set 項目名 = 式 where 更新条件 例) update books set author = '丸山不二夫 編著 / 植田龍男 ほか著' where id = '41439'; データの削除 delete from テーブル名 where 削除条件 例) delete from books where id = '41439'; 参考文献・URL UNIXデータベース入門 http://www.wakhok.ac.jp/DB/DB.html 丸山学長によるデータベース入門。SQL89をベースに していますが、よくまとまっている有益なテキストです。 はじめてでもわかるSQLとデータ設計 西村めぐみ著 ディー・アート ISBN 4-88648-647-9 きわめてわかりやすく解説されています。
© Copyright 2024 ExpyDoc