DBII/10.SQL
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
#navi(DBII)
SQL言語を使って,テーブルを定義・削除・管理したり,データ...
ここではデータの検索についてSQLを見てみる.
*AccessとSQL [#jf916391]
#ref(http://kaede.osu.ac.jp/~ogawa-k/wiki/resource/db/sql...
-Accessではクエリを使ってデータベースから情報を検索します.
-しかし実際にはこのクエリは一度SQLという言語に翻訳してか...
-また直接SQL言語を使ってデータベースから検索することも出...
-直接SQL言語を使えば,クエリで出来ないような検索もできる...
-今回はこのデータベースを検索するSQL言語を見てみます.
**翻訳されたSQL言語 [#t9f721b5]
-実際にクエリがどのようなSQL言語に翻訳されているのか眺め...
-次のテーブルを作成してみましょう.
#ref(http://kaede.osu.ac.jp/~ogawa-k/wiki/resource/db/sql...
-次のクエリを作成してみましょう.
#ref(http://kaede.osu.ac.jp/~ogawa-k/wiki/resource/db/sql...
-SQLビューに切り替えます.
#ref(http://kaede.osu.ac.jp/~ogawa-k/wiki/resource/db/sql...
-これが翻訳されたSQL言語です.
#code(sql){{
SELECT 商品.商品名, 商品.定価
FROM 商品
WHERE (((商品.定価)>=100000));
}}
-簡単に書き直すと次の様になります.
#code(sql){{
SELECT 商品名, 定価
FROM 商品
WHERE 定価>=100000;
}}
-これを日本語に訳すと次の様になります.
「商品」テーブルから(FROM)
「定価」が10万円以上(>=100000)という条件に当てはまる(...
「商品名」と(,)「定価」を選択(SELECT)しなさい.(;)
-SQLの最後は''セミコロン''('';'')で終わらないといけませ...
-また途中の好きな区切り部分で改行してもかまいません.
-キーワード&color(blue){''SELECT''};,&color(blue){''FROM'...
-フィールド名が「商品.商品名」となっているのは「商品」テ...
-複数のテーブルに同じフィールド名があると混乱するのでこの...
-SQLを次の様に修正して保存しましょう.
#code(sql){{
SELECT 商品名, 定価
FROM 商品
WHERE 定価>=100000;
}}
-ビューを切り替えても全く問題ありません.
**SQL問い合わせの基本形 [#t1e25a2c]
#code(sql){{
SELECT 式, 式, ・・・
FROM 表名, 表名, ・・・
WHERE 抽出条件;
}}
**SQLの文法基礎 [#sbc66539]
-テーブル名,フィールド名以外はすべて半角を使用する.
-SQLは大文字,小文字の区別はしない.
--「SELECT」でも「select」でもどちらでも良い.
-語と語の間などは半角の空白で区切る.
-数字定数に「,」(コンマ)を入れてはいけない.
--「10,000」などと書くのは駄目.「10000」と書きましょう.
-文の終わりは「;」(半角のセミコロン)を付ける.
*【演習】SQLによる単純質問 [#jd96fa9f]
-SQLによる質問を大きく三つに分類する.
--単純質問(次の二つ以外)
--結合質問(複数の表を同時に扱う)
--入れ子型質問(抽出条件にSELECT文が入る)
-ここでは最初の単純質問を見ていく
**使う表 [#f2862211]
-Accessでデータベース「単純質問.mdb」を作成し,以下の表を...
-SQLでクエリ「単純質問1,2,3,・・・」を作成しなさい.
-黄色のフィールドが主キーになります.
#ref(http://kaede.osu.ac.jp/~ogawa-k/wiki/resource/db/sql...
**SQL文入力方法 [#qaa2a1d7]
#ref(http://kaede.osu.ac.jp/~ogawa-k/wiki/resource/db/sql...
**単純質問1.全商品の全データを求めよ [#qf4fd2e6]
#code(sql){{
SELECT *
FROM 商品;
}}
#ref(http://kaede.osu.ac.jp/~ogawa-k/wiki/resource/db/sql...
-テーブルのデータをすべてみるにはこのSELECT文を使う.
**単純質問2.納品した商品の商品番号を求めよ [#vb432494]
#code(sql){{
SELECT 商品番号
FROM 納品;
}}
#ref(http://kaede.osu.ac.jp/~ogawa-k/wiki/resource/db/sql...
-関係代数の射影演算に相当する.
**単純質問3.「単純質問2」から重複を除去せよ [#gadfa4b7]
#code(sql){{
SELECT DISTINCT 商品番号
FROM 納品;
}}
#ref(http://kaede.osu.ac.jp/~ogawa-k/wiki/resource/db/sql...
-SQLを使わずクエリだけではこんなことはできない.
**単純質問4.商品番号とその定価と2割引の値段を求めよ [#f7...
#code(sql){{
SELECT 商品番号, 定価, 定価*0.8
FROM 商品;
}}
#ref(http://kaede.osu.ac.jp/~ogawa-k/wiki/resource/db/sql...
-フィールド名だけでなく,SELECTの後ろには式も指定できる.
**単純質問5.定価が10万円以上の商品の全データを求めよ [#a...
#code(sql){{
SELECT *
FROM 商品
WHERE 定価 >= 100000;
}}
#ref(http://kaede.osu.ac.jp/~ogawa-k/wiki/resource/db/sql...
-関係代数の選択演算に相当する.
**単純質問6.定価が5万円以上で10万円以下の商品の全データ...
#code(sql){{
SELECT *
FROM 商品
WHERE 定価 Between 50000 And 100000;
}}
#ref(http://kaede.osu.ac.jp/~ogawa-k/wiki/resource/db/sql...
-単純な大小比較だけでなく,BETWEEN述語とかLIKE述語などが...
**単純質問7.定価が5万円以上で10万円以下の商品で商品名が...
#code(sql){{
SELECT *
FROM 商品
WHERE 定価 Between 50000 And 100000
AND 商品名 = 'テレビ';
}}
#ref(http://kaede.osu.ac.jp/~ogawa-k/wiki/resource/db/sql...
-AND,OR,NOTなどの演算子を使って複数の条件を指定できる.
**単純質問8.商品を定価の高いものから安いものに順に並べよ...
#code(sql){{
SELECT *
FROM 商品
ORDER BY 定価 DESC;
}}
#ref(http://kaede.osu.ac.jp/~ogawa-k/wiki/resource/db/sql...
-安い順に並べるときは「DESC」を取り除くか「ASC」を指定す...
**単純質問9.納品した商品の総数を商品番号毎に求めよ [#m52...
#code(sql){{
SELECT 商品番号, SUM(納品数量)
FROM 納品
GROUP BY 商品番号;
}}
#ref(http://kaede.osu.ac.jp/~ogawa-k/wiki/resource/db/sql...
-グループ化できる.
**単純質問10.納品した商品の総数を総数が10以上のものにつ...
#code(sql){{
SELECT 商品番号, SUM(納品数量)
FROM 納品
GROUP BY 商品番号
HAVING SUM(納品数量) >= 10;
}}
#ref(http://kaede.osu.ac.jp/~ogawa-k/wiki/resource/db/sql...
-グループ化したものについて条件を付けることが出来る.
----
#comment
#navi(DBII)
終了行:
#navi(DBII)
SQL言語を使って,テーブルを定義・削除・管理したり,データ...
ここではデータの検索についてSQLを見てみる.
*AccessとSQL [#jf916391]
#ref(http://kaede.osu.ac.jp/~ogawa-k/wiki/resource/db/sql...
-Accessではクエリを使ってデータベースから情報を検索します.
-しかし実際にはこのクエリは一度SQLという言語に翻訳してか...
-また直接SQL言語を使ってデータベースから検索することも出...
-直接SQL言語を使えば,クエリで出来ないような検索もできる...
-今回はこのデータベースを検索するSQL言語を見てみます.
**翻訳されたSQL言語 [#t9f721b5]
-実際にクエリがどのようなSQL言語に翻訳されているのか眺め...
-次のテーブルを作成してみましょう.
#ref(http://kaede.osu.ac.jp/~ogawa-k/wiki/resource/db/sql...
-次のクエリを作成してみましょう.
#ref(http://kaede.osu.ac.jp/~ogawa-k/wiki/resource/db/sql...
-SQLビューに切り替えます.
#ref(http://kaede.osu.ac.jp/~ogawa-k/wiki/resource/db/sql...
-これが翻訳されたSQL言語です.
#code(sql){{
SELECT 商品.商品名, 商品.定価
FROM 商品
WHERE (((商品.定価)>=100000));
}}
-簡単に書き直すと次の様になります.
#code(sql){{
SELECT 商品名, 定価
FROM 商品
WHERE 定価>=100000;
}}
-これを日本語に訳すと次の様になります.
「商品」テーブルから(FROM)
「定価」が10万円以上(>=100000)という条件に当てはまる(...
「商品名」と(,)「定価」を選択(SELECT)しなさい.(;)
-SQLの最後は''セミコロン''('';'')で終わらないといけませ...
-また途中の好きな区切り部分で改行してもかまいません.
-キーワード&color(blue){''SELECT''};,&color(blue){''FROM'...
-フィールド名が「商品.商品名」となっているのは「商品」テ...
-複数のテーブルに同じフィールド名があると混乱するのでこの...
-SQLを次の様に修正して保存しましょう.
#code(sql){{
SELECT 商品名, 定価
FROM 商品
WHERE 定価>=100000;
}}
-ビューを切り替えても全く問題ありません.
**SQL問い合わせの基本形 [#t1e25a2c]
#code(sql){{
SELECT 式, 式, ・・・
FROM 表名, 表名, ・・・
WHERE 抽出条件;
}}
**SQLの文法基礎 [#sbc66539]
-テーブル名,フィールド名以外はすべて半角を使用する.
-SQLは大文字,小文字の区別はしない.
--「SELECT」でも「select」でもどちらでも良い.
-語と語の間などは半角の空白で区切る.
-数字定数に「,」(コンマ)を入れてはいけない.
--「10,000」などと書くのは駄目.「10000」と書きましょう.
-文の終わりは「;」(半角のセミコロン)を付ける.
*【演習】SQLによる単純質問 [#jd96fa9f]
-SQLによる質問を大きく三つに分類する.
--単純質問(次の二つ以外)
--結合質問(複数の表を同時に扱う)
--入れ子型質問(抽出条件にSELECT文が入る)
-ここでは最初の単純質問を見ていく
**使う表 [#f2862211]
-Accessでデータベース「単純質問.mdb」を作成し,以下の表を...
-SQLでクエリ「単純質問1,2,3,・・・」を作成しなさい.
-黄色のフィールドが主キーになります.
#ref(http://kaede.osu.ac.jp/~ogawa-k/wiki/resource/db/sql...
**SQL文入力方法 [#qaa2a1d7]
#ref(http://kaede.osu.ac.jp/~ogawa-k/wiki/resource/db/sql...
**単純質問1.全商品の全データを求めよ [#qf4fd2e6]
#code(sql){{
SELECT *
FROM 商品;
}}
#ref(http://kaede.osu.ac.jp/~ogawa-k/wiki/resource/db/sql...
-テーブルのデータをすべてみるにはこのSELECT文を使う.
**単純質問2.納品した商品の商品番号を求めよ [#vb432494]
#code(sql){{
SELECT 商品番号
FROM 納品;
}}
#ref(http://kaede.osu.ac.jp/~ogawa-k/wiki/resource/db/sql...
-関係代数の射影演算に相当する.
**単純質問3.「単純質問2」から重複を除去せよ [#gadfa4b7]
#code(sql){{
SELECT DISTINCT 商品番号
FROM 納品;
}}
#ref(http://kaede.osu.ac.jp/~ogawa-k/wiki/resource/db/sql...
-SQLを使わずクエリだけではこんなことはできない.
**単純質問4.商品番号とその定価と2割引の値段を求めよ [#f7...
#code(sql){{
SELECT 商品番号, 定価, 定価*0.8
FROM 商品;
}}
#ref(http://kaede.osu.ac.jp/~ogawa-k/wiki/resource/db/sql...
-フィールド名だけでなく,SELECTの後ろには式も指定できる.
**単純質問5.定価が10万円以上の商品の全データを求めよ [#a...
#code(sql){{
SELECT *
FROM 商品
WHERE 定価 >= 100000;
}}
#ref(http://kaede.osu.ac.jp/~ogawa-k/wiki/resource/db/sql...
-関係代数の選択演算に相当する.
**単純質問6.定価が5万円以上で10万円以下の商品の全データ...
#code(sql){{
SELECT *
FROM 商品
WHERE 定価 Between 50000 And 100000;
}}
#ref(http://kaede.osu.ac.jp/~ogawa-k/wiki/resource/db/sql...
-単純な大小比較だけでなく,BETWEEN述語とかLIKE述語などが...
**単純質問7.定価が5万円以上で10万円以下の商品で商品名が...
#code(sql){{
SELECT *
FROM 商品
WHERE 定価 Between 50000 And 100000
AND 商品名 = 'テレビ';
}}
#ref(http://kaede.osu.ac.jp/~ogawa-k/wiki/resource/db/sql...
-AND,OR,NOTなどの演算子を使って複数の条件を指定できる.
**単純質問8.商品を定価の高いものから安いものに順に並べよ...
#code(sql){{
SELECT *
FROM 商品
ORDER BY 定価 DESC;
}}
#ref(http://kaede.osu.ac.jp/~ogawa-k/wiki/resource/db/sql...
-安い順に並べるときは「DESC」を取り除くか「ASC」を指定す...
**単純質問9.納品した商品の総数を商品番号毎に求めよ [#m52...
#code(sql){{
SELECT 商品番号, SUM(納品数量)
FROM 納品
GROUP BY 商品番号;
}}
#ref(http://kaede.osu.ac.jp/~ogawa-k/wiki/resource/db/sql...
-グループ化できる.
**単純質問10.納品した商品の総数を総数が10以上のものにつ...
#code(sql){{
SELECT 商品番号, SUM(納品数量)
FROM 納品
GROUP BY 商品番号
HAVING SUM(納品数量) >= 10;
}}
#ref(http://kaede.osu.ac.jp/~ogawa-k/wiki/resource/db/sql...
-グループ化したものについて条件を付けることが出来る.
----
#comment
#navi(DBII)
ページ名: