SQL ソフトウェア特論 第2回 この講義のWebページ http://www.wakhok.ac.jp/~tomoharu/tokuron2003/ きょうの内容 SQLの概要を知る。 リレーショナルデータベースの仕組み 「データベース」は、「テーブル」から構成される 「テーブル」は、「行」から構成される 「行」は、「項目」から構成される no title author 42377 伽藍とバザール 山形浩生訳 42872 Java言語で学ぶデ 結城浩 著 ザインパターン入門 publisher 光芒社 ソフトパンク SQL リレーショナルデータベースを操作するための言 語。 標準化されているので、あるデータベースで利用し た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) 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) 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 という 項目を取り出す テーブル 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 keyword 42872 Java 出版社 ソフトパンク あるタイトルの本の キーワードを知りたい。 テーブルは正規化に よって分割されている。 42872 デザインパターン データの検索 (9) テーブルの結合 (2) 複数のテーブルを使う場合、項目名の指定は次の 形になる。 – テーブル名.項目名 検索条件として、それぞれのテーブルの 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', '情報メディア論', '丸山不二夫 編著', '八千代出版' ); create table での項目の順番通りに指定する データの更新 update テーブル名 set 項目名 = 式 where 更新条件 例) update books set author = '丸山不二夫 編著 / 植田龍男 ほか著' where id = '41439'; データの削除 delete from テーブル名 where 削除条件 例) delete from books where id = '41439';
© Copyright 2024 ExpyDoc