SQL データベース論 第11回
きょうの内容 SQLの概要を知る。
リレーショナルデータベースの仕組み 「データベース」は、「テーブル」から構成される 「テーブル」は、「行」から構成される 「行」は、「項目」から構成される no title author publisher 42377 伽藍とバザール 山形浩生訳 光芒社 42872 Java言語で学ぶデザインパターン入門 結城浩 著 ソフトパンク
SQL リレーショナルデータベースを操作するための言語。
テーブルの作成 (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) 固定長の文字列 (長さ n) varchar(n) 可変長の文字列 (長さ n) int 符号付き整数 float(p) 浮動小数点 (p は精度) date 日付 time 時刻 他にも、データベースごとに独自のデータ型がある。
制約 (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 を許さない 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), 制約 (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), 制約 (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) create table テーブル名 ( 項目名 データ型 ..... 項目名 データ型 ..... constraint 制約名 foreign key(項目名) references 参照テーブル名(項目名) );
制約 (9) 外部キーの設定 (2) 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 という項目を取り出す select id, title from books; テーブル books 中のすべてのデータから、id と title という2つの項目を取り出す select * from books; テーブル books 中のすべてのデータから、すべての項目を取り出す
データの検索 (3) select id, title from books where id < 30000; select title, publisher from books where publisher = ‘八千代出版’; 出版社が「八千代出版」のものを検索
データの検索 (4) select id, title from books where 42000 <= id and id < 43000; Id が 42000 以上かつ 43000 未満のものを検索 where between 42000 and 43000; こう書くこともできる
データの検索 (5) select title, author, publisher from books where publisher = ‘群像社’ or publisher = '八千代出版'; 出版社が「群像社」か「八千代出版」のものを検索
データの検索 (6) select title from books where title like 'Java%';
データの検索 (7) select title from books where title like '%Java%' or title like '%Perl%'; タイトルに「Java」か「Perl」を含む本を検索
データの検索 (8) あるタイトルの本のキーワードを知りたい。 テーブルは正規化によって分割されている。 no タイトル 著者 出版社 42872 Java言語で学ぶデザインパターン入門 結城浩 著 ソフトパンク no keyword 42672 Java デザインパターン あるタイトルの本のキーワードを知りたい。 テーブルは正規化によって分割されている。
データの検索 (9) 複数のテーブルを使う場合、項目名の指定は次の形になる。 テーブル名.項目名 検索条件として、それぞれのテーブルの id が一致している必要がある。 select books.title, keywords.keyword from books, keywords where books.id = keywords.id
データの登録 insert into テーブル名 values (値1, 値2, ...) 例) insert into books values ( '361', 'M', '41439', '情報メディア論', '丸山不二夫 編著', '八千代出版' );
データの更新 update テーブル名 set 項目名 = 式 where 更新条件 例) update books set author = '丸山不二夫 編著 / 植田龍男 ほか著' where id = '41439';
データの削除 delete from テーブル名 where 削除条件 例) delete from books where id = '41439';