■サンプルファイルのダウンロードについて
本書掲載のサンプルファイルは、一部を除いてインターネット上のダウンロードサービスからダウンロードすることができます。詳しい手順については、本書の巻末にある袋とじの内容をご覧ください。
なお、ダウンロードサービスのご利用にはユーザー登録と袋とじ内に記されている番号が必要です。そのため、本書を中古書店から購入されたり、他者から貸与、譲渡された場合にはサービスをご利用いただけないことがあります。あらかじめご承知おきください。

・本書の内容についてのご意見、ご質問は、お名前、ご連絡先を明記のうえ、小社出版部宛文書（郵送または E-mail）でお送りください。
・電話によるお問い合わせはお受けできません。
・本書の解説範囲を越える内容のご質問や、本書の内容と無関係なご質問にはお答えできません。
・匿名のフリーメールアドレスからのお問い合わせには返信しかねます。
本書で取り上げられているシステム名／製品名は、一般に開発各社の登録商標／商品名です。本書では、™ および ® マークは明記していません。本書に掲載されている団体／商品に対して、その商標権を侵害する意図は一切ありません。本書で紹介している URL や各サイトの内容は変更される場合があります。

はじめにいつの時代も、データベースはとても重要な技術です。データベースはあらゆる情報を扱うソフトウェアの中心技術の一つといっても過言ではないでしょう。たとえば、ウェブサイトの構築に近ごろよく使われている WordPress にもデータベースが使われています。航空機の運航管理からスーパーマーケットの在庫管理まで、さまざまなシステムの一定の構造を持つ情報は、ほぼすべてがデータベースに保存されています。
本書では、データベースを初めて使う読者を対象に、データベースについての基本的なことから、データベースへの作成や接続、テーブルの作成、データの登録や更新、削除など一連の操作について解説します。また、応用としてデータベースを扱う GUI アプリの作り方を紹介します。
現代の主なデータベースは、多くの場合 SQL という言語を使って操作します。一方、プログラムでデータベースを操作して何らかの機能を実現するためのプログラミング言語には、さまざまな言語が使われます。本書ではプログラミング言語として理解しやすい Python を使って解説しますが、本書で Python を使ったデータベースの概念と操作方法を理解してしまえば、他のプログラミング言語に応用するのは容易です。
本書を活用することで、データベースを完璧に使いこなせるようになる日がまもなく来ることでしょう。

2019 年 1 月 著者記すiii

本書の表記⤵

紙面への印刷の都合で改行していますが、実際には改行しないで 1 行で続け[...]［X］て入力することを表します。

書式の説明において、[ と ] で囲んだものは省略可能であることを示します。

キーボードのキーを押すことを示します。たとえば、［F5］は F5 キーを押すことを意味します。

［S］+［X］ キーボードの S キーを押したまま X キー押すことを示します。
［Ctrl］+［F5］は Ctrl キーを押したまま F5 キーを押すことを意味します。

>

OS のコマンドプロンプトを表します。Linux など UNIX 系 OS の場合は $ な>>>

Python のインタープリタ（インタラクティブシェル）のプロンプトを表します。

mysql>どで表されますが、本書では > に揃えますので適宜読みかえてください。

MySQL のコマンドラインツールのプロンプトを表します。
本文を補足するような説明や、知っておくとよい話題です。

特に重要なことです。
特定の項目についてのある程度まとまった補足説明です。
一般的に SQL のコマンドやキーワードなどは大文字／小文字が区別されませんが、本書では、原則として、SQL のコマンドやキーワードは大文字で、Python のキーワードや変数などは小文字で表記します。データベースファイル名やテーブル名などは先頭を大文字にした小文字で表記します。

注意事項●

本書の内容は執筆時点の状態で記述しています。Python の最新のバージョンは 3.7.1、

SQLite の最新バージョンは 3.25、MySQL の最新バージョンは MySQL 8.0 です。将来、バージョンが変わるなど、何らかの理由で記述と実際とが異なる結果となる可能性があります。
●iv

本書のプログラムは Python 3 を前提としています。本書の多くの例は Python 2 でも実行できますが、Python 2 と Python 3 では書式が異なります（Python 2 では、特に引数を囲む括弧が不要です）。
●

本書は Python や SQLite および MySQL のすべてのことについて完全に解説するものではありません。必要に応じて適切なドキュメントなどを参照してください。

●

本書のサンプルは、プログラミングを理解するために掲載するものです。実用的なアプリとして提供するものではありませんので、ユーザーのエラーへの対処やその他の面で省略してあるところがあります。

本書に関するお問い合わせについて
本書に関するお問い合わせは、sales@cutt.co.jp にメールでご連絡ください。
お問い合わせは本書に記述されている範囲に限らせていただきます。特定の環境や特定の目的に対するお問い合わせ等にはお答えできませんので、あらかじめご了承ください。
また、例として掲載した断片的なコードをやみくもに入力しても動作しません。あるコードを実行するためには、必要なモジュールをインポートしたり、システムの状況に応じてデータベースを準備したり、データベースに接続したりする必要があります。必ずそれまでの説明を良く読んで理解してから、必要な準備を行ったうえでコードを実行してください。
「本書の記述通りにコードを打ち込んだがエラーになった」などのご質問にはお答えいたしかねます。
お問い合わせの際には下記事項を明記してくださいますようお願いいたします。

●

氏名

●

連絡先メールアドレス●

書名●記載ページ●

問い合わせ内容●実行環境v

目

次

目次

はじめに........................................................................................................................ iii

第1章

データベースの基礎知識 ........................................1

1.1 データベースの基礎............................................................................................ 2●データベース／ 2●データベース管理システム／ 3●データベースとデータベースアプリ／ 3

1.2 データベースの構造............................................................................................ 4●データベースの構造／ 4●カレントレコード／ 6●フィールドのデータ型／ 7●キー／ 6●リレーショナルデータベース／ 7●データベースの完全性／ 9

1.3 SQL....................................................................................................................10● SQL ／ 10

●トランザクションとコミット／ 13●ビューとトリガー／ 15●ストアドプロシージャ／ 14● SQLite と MySQL ／ 15

1.4 データベースとプログラミング........................................................................16●データベースアプリ開発の手順／ 16●データベースの操作方法／ 17●データベースの利用／ 18

第2章

はじめてのデータベース ......................................19

2.1 SQLite3 の使い方............................................................................................20● SQLite3 を使う準備／ 20●サンプルデータベース／ 21●データベースの作成／ 22●テーブルの作成／ 23

2.2 データベースの作成と操作...............................................................................22●レコードの取得／ 27●データの表示／ 28●レコードの登録／ 26●データベースを閉じる／ 29

2.3 スクリプトの実行..............................................................................................30●スクリプトの実行／ 30●データベースを作成するプログラム／ 33●データを表示するプログラム／ 34

練習問題......................................................................................................................37

第3章

データベース作成とデータの登録 .........................393.1 データベースの作成..........................................................................................40●データベースへの接続／ 40●ロールバック／ 42vi

●トランザクション制御／ 41●メモリ上のデータベース／ 43

目 次

3.2 テーブルの作成..................................................................................................43●テーブルの作成方法／ 43● Sales テーブルの作成／ 48● Staﬀ テーブルの作成／ 46●キーの指定／ 50●オートナンバー／ 52

3.3 テーブルの変更..................................................................................................56●テーブルの変更／ 56●テーブルの削除／ 56

練習問題......................................................................................................................58

第4章

データの操作......................................................59

4.1 レコードの登録と削除.......................................................................................60●レコードの登録／ 60●複数のレコードの登録／ 61●レコードの削除／ 62

4.2 レコードの更新..................................................................................................64●レコードを更新する／ 64●レコードの更新または挿入／ 65

4.3 トランザクション..............................................................................................67●コミット／ 67●ロールバック／ 67

練習問題......................................................................................................................70

第5章

データの検索......................................................71

5.1 レコードの取得..................................................................................................72●レコードを取得する／ 72● 1 行のレコードを取得する／ 73●残りのレコードを取得する／ 74

5.2 レコードの検索..................................................................................................75●レコードを検索する／ 75●演算／ 77●内部結合／ 79

5.3 関数....................................................................................................................84●組み込み関数／ 84●関数の使い方／ 85● GROUP BY 句／ 87● ORDER BY 句／ 89

5.4 さまざまな SELECT 文....................................................................................87
練習問題......................................................................................................................90第6章

GUI アプリ ........................................................91

6.1 GUI プログラミング..........................................................................................92● GUI アプリの構造／ 92●ウィンドウの作成／ 93●ウィジェットの配置／ 96●イベント処理／ 98

6.2 ウィジェットとイベント処理............................................................................96
6.3 GUI アプリの例.............................................................................................. 100●レコード表示アプリ／ 100●データ編集アプリ／ 104

練習問題................................................................................................................... 110vii

第7章

MySQL .......................................................... 111

7.1 MySQL について........................................................................................... 112● MySQL ／ 112● MySQL のインストールと準備／ 112● MySQL の予約語／ 113

7.2 コマンドラインからの MySQL の操作......................................................... 114●データベースの作成／ 114●データの登録／ 116●テーブルの作成／ 115●データの取得／ 117

7.3 データベースへの接続.................................................................................... 118●モジュールのインストール／ 118●接続／ 119●データベースの新規作成／ 121

7.4 Python プログラムからの MySQL の操作................................................. 121●データベースの使用／ 121●テーブル作成／ 121●データの登録／ 123●データの取得と検索／ 123●データの更新／ 125●データの削除／ 126●テーブルの削除／ 127

7.5 ストアドプロシージャ.................................................................................... 127●ストアドプロシージャの定義／ 127●引数があるプロシージャ／ 131●プロシージャの呼び出し／ 130●プロシージャの削除／ 133

練習問題................................................................................................................... 134

第8章

MySQL の GUI アプリ .....................................135

8.1 GUI プログラミング....................................................................................... 136● GUI アプリの構造／ 136● MySQL と SQLite ／ 136●データベースの準備／ 136

8.2 GUI アプリの例.............................................................................................. 138●レコード表示アプリ／ 138●データ編集アプリ／ 142

練習問題................................................................................................................... 148

付録 ..........................................................................149
付録 A

Python の使い方.................................................................................... 150

付録 C練習問題解答例........................................................................................ 172

付録 B

付録 D

トラブルシューティング......................................................................... 165
参考リソース............................................................................................ 195

索  引........................................................................................................................ 196viii

第1章
データベースの基礎知識

この章では、データベースの概念や基本的な要素などについて説明します。

第1章

データベースの基礎知識

第1章

データベースの基礎知識

1.1 データベースの基礎データベース（Database）は、多数のデータを一定の構造で保持し、管理するためのものです。

データベース「データベース」という言葉は、「たくさんのデータを集めたもの」と解釈されることがあります。また、「データベース」という言葉がデータを集めた場所のことを指す場合もあります。
つまり、単に「データベース」というときには、そこに蓄積されたデータのことだけを考えることがあります。
しかし、プログラミングの世界では、一般にデータベースと呼ぶものの実態は、データを組織的に管理するソフトウェアと一連の一定の構造を持ったデータ全体を指します。ここで、データを組織的に管理するソフトウェアとは、データを登録したり検索したりするための基本的なソフトウェアのことです。また、このときのデータとは、無秩序な情報の集積ではなく、特定の構造を持つ特定の種類の情報を指します。データベースのデータは、無秩序な情報の集まりではなく、必ず一定の構造を持つものとして扱うことができる特定の種類のデータであるという点は重要です。

データベースはたくさんのデータを保存して管理するものであると考えられがちですが、雑多なデータをただ集めただけのものはデータベースとはいいません。データベースのデータは特定の種類のデータで一定の構造を持ちます。

一定の構造を持つように整理できるデータのほとんどは、データベースシステムに保存されます。住所録や不動産の情報のような台帳に記載するようなデータはもちろん、それ以外のデータも整理されてデータベース保存されることがよくあります。たとえば、ブログやいわゆるホームページ（ウェブサイト）の構築に近ごろよく使われている WordPress にも、データベースが使われていて、コンテンツデータ（記事のタイトルや内容など）をデータベースに保管する仕組みになっています。また、航空機の運航管理からスーパーマーケットの在庫管理ま

2

1.1

データベースの基礎で、世の中にあるさまざまなシステムの一定の構造を持つデータは、ほぼすべてがデータベー

1スに保存されています。

2

データベース管理システム
データを登録したり検索したりするソフトウェアを、データベース管理システム（DataBase

3Management System、DBMS）といいます。
DBMS は、データを効率よく操作するためのソフトウェアです。DBMS は Python や C# の4

ようなプログラミング言語を使って活用することができますが、多くの場合、それ自身のユーザーインターフェースを備えていて、それ自身を使ってデータベースを操作することができま5す。たとえば、DBMS のコマンドを使って、データを登録したり、削除したり、検索したり、集計することができます。この場合、ユーザーはデータベースの構造や DBMS のコマンドの6使い方を知っていなければなりません。
なお、データベースというオブジェクト（もの）は、すでに説明したように、ある種のデー7

タが一定の構造で集められているもののことです。また、データベースという言葉が DBMSを指すこともあります。さらに、データベースという言葉が、DBMS とデータを含む全体を指8す言葉として使われることもよくあります。

データベース

データDBMS（ソフトウェア）図 1.1 ●データベース（データと DBMS）

データベースとデータベースアプリ
付録

データベース管理システム（DBMS）は、アプリ（アプリケーション）やウェブサイトのプログラムから利用して、データベースのデータを利用できるようにすることができます（図1.2）。アプリからデータベースを利用するようにするときには、一般的には、アプリのプログ

3

第1章

データベースの基礎知識

ラミング言語を介して DBMS のコマンドを使ってデータベースを利用します。

ユーザー

アプリケーションソフト
ユーザーインタ
フェース
データベース管理システム

データベース

図 1.2 ●ユーザーとデータベース

1.2 データベースの構造
データベースとは、多数のデータを一定の構造で保持するものを指します。多数のデータを無秩序に集めたものはデータベースとはいいません。

データベースの構造
データベースは、一般に、テーブル（Table、表）で構成されています。テーブルは、フィールド（Field。カラム、列、項目ともいう）とレコード（Record。行ともいう）で構成されています。つまり、データベースのテーブルは表の形式でデータを保存するものとみなすことができます。

実際には、データベースのデータは、ディスクファイルのような保存媒体に表の形で保存されているわけではありません。しかし、データベースを扱うときにはテーブルをイメージすると理解しやすくなります。

4

1.2

データベースの構造

データベースの最小のデータ単位はフィールドです。複数のフィールドで、一つのレコード1を構成します。レコードは基本的なアクセス単位です。
複数のレコードをまとめたものがテーブルです（図 1.3）。

2

フィールド（列）
レコード
（行）

3

A000001

山田一郎

ichiro@dogs.ca.jp

A010045

海野紀夫

unno@wanwan.ca.jp

A010055

笠砂州雄

kasa@dogs.ca.jp

A021245

長井花子

hana@wanwan.ca.jp

A011234

犬野憲太

kinuno@saltydog.ca.jp

A012345

椀子大輔

wanko@wanwan.ca.jp

A022545

大山小次郎

ooyama@koyama.ca.jp456テーブル7

図 1.3 ●テーブル、レコード、フィールド8
一般的には、一つのデータベースには、複数のテーブルを保存することができます。
データベース管理システムは、このような構造をベースにして、レコードやフィールドの検索、並べ替え、再結合などの一連の操作を行うことができるようにします。

データを表（テーブル）形式ではなく、オブジェクトとして保存するデータベースを、オブジェクトデータベースと呼びます。いくつかのシステムに分散させたデータベースを分散データベースといいます。

付録

5

第1章

データベースの基礎知識

カレントレコード
データベースで、現在参照しているレコードをカレントレコード（Current Record）といいます。カレントレコードはデータベースプログラミングで重要な概念です。
データベースで、現在参照しているレコードを指すオブジェクトをカーソル（Cursor）といいます。
つまりカーソルが指している位置のレコードが現在操作の対象としているレコードであり、カーソルを移動することによって操作の対象とするレコードを変更することができます。

現在のレコードを指すカーソルは、第 2 章以降の実際のデータベース操作で頻繁に使います。なお、SQL データベースでは、カーソルを「検索結果からデータを 1 件ずつ処理するための仕組み」とみなすことがあります。

キー
データベースの特定のレコードを識別するフィールドデータをキー（Key）といいます。テーブルの中のある 1 個のレコードを明確に識別するためには、原則として、主キー（プライマリーキー、Primary Key）が必要です。主キーはレコードを明確に区別するために使われるので、主キーの値はレコードごとに異なっていなくてはならず、重複してはなりません。

例外的に、主キーに相当する値を重複できるようにしたデータベースもあります。そのようなデータベースではレコードの番号などで個々のレコードを識別します。

一般的には、主キーのほかにテーブルに複数のキーを定義することができます。主キー以外のキーは、ほとんどの場合、重複できます（詳細はデータベースによって異なります）。
キーとなるデータのフィールドを、キーフィールド（Key Field）といいます。

6

1.2

データベースの構造

フィールドのデータ型

1

データベースには、数値や文字列などを保存することができますが、一つのフィールドの型は一定でなければなりません。たとえば、ID のフィールドを数値で定義したら、ID のフィー2ルドの値はすべて数値でなければなりません。一つのフィールドに数値と文字列のような異なるデータ型を混在させることはできません。たとえば、ID に「A0123」のようなアルファ3ベット文字を含む表現を使いたい場合には、その ID のフィールドは、文字と数値が混在したフィールドではなく、文字列のフィールドとして定義します。

4

データをバイナリデータ（2 進数値の並び）として保存することができるデータベースでは、5一つのフィールドに任意の型のデータを保存することができます。しかし、初歩のうちはこのようなデータフィールドは特殊なものであると考えてください。

6

7

リレーショナルデータベース
データを一定の構造に整理して複数のテーブル形式で保存し、テーブル相互に関連性を持た8せたデータベースを、リレーショナルデータベース（Relational DataBase）といいます。
リレーショナルデータベースの基本的な機能を提供するソフトウェアをリレーショナルデータベース管理システム（Relational DataBase Management System、RDBMS）といいます。
たとえば、売り上げテーブルと顧客テーブルからなる販売管理データベースでは、売り上げテーブルの売り上げ先の顧客 ID と顧客テーブルの顧客 ID との間に関連性を持たせます。このような関連性をリレーションシップ（Relationship）またはリレーション（Relation）といいます。

付録

7

第1章

データベースの基礎知識

売上テーブル
商品

顧客ID

個数単価

わんわんフード

2036

101200

犬小屋（大）

2011

182000

カムカムガム2036

1500

顧客テーブル

リレーションシップ

顧客ID

名前電話

2011

山田花子

0123330110

2036

神尾睦月

062125487

図 1.4 ●リレーションシップ

関連付けるテーブルは 2 個以上、いくつでもかまいません。大規模なデータベースでは多数のテーブルを定義して、相互に関連付けを行います。このテーブルの定義とテーブル間の関連付けを考えることは、データベースの設計の重要な仕事の一つです。
リレーショナルデータベースでは、同じデータを複数のテーブルに持たないようにしたり、さまざまな種類のデータを別のテーブルに分けて管理することで、データアクセスや検索などの効率を良くしたり、プログラムの生産性を高めることができます。図 1.4 の例では、売り上げテーブルに顧客の名前を登録する代わりに顧客 ID を登録することで、具体的な「名前」というデータを複数のテーブルに持たせないようにしています。
データベースで、同じ情報を重複して保存すること（冗長性）を排除することを正規化（Normalization）といいます。

リレーションシップは、データベース内部の実際のテーブル間の特定のフィールドの関連付け情報として定義することも、単なる論理的な関連付けとして定義することもできます。
多くのリレーショナルデータベースは、リレーションシップの情報をデータベースに保存することができます。

8

1.2

データベースの構造

データベースの完全性

1

データベースのデータは、内容に矛盾がなく、利用する際に問題が発生しないようにしなければなりません。このことは特にリレーショナルデータベースで重要で、関連するテーブル間2のデータで過不足や不一致がないようにしなければなりません。たとえば、商品の売り上げ情報を保存する売り上げテーブルと購入者の情報を保存する顧客テーブルがある販売管理データ

3

ベースで、顧客テーブルの顧客を削除したら、それに関連する売り上げ情報も削除しなければなりません。そうしないと、売った先が不明である売り上げが発生してしまいます。

45

売上テーブル
商品

顧客ID

個数単価

わんわんフード

2036

101200

犬小屋（大）2011

182000

カムカムガム

2036

1500

6

7

顧客テーブル
顧客ID

名前電話

2011

山田花子

0123330110

2036

神尾睦月

062125487

8
顧客を削除するには、この顧客IDの売り上げも削除する必要がある

図 1.5 ●データベースの整合付録

9

第1章

データベースの基礎知識

1.3 SQL
現代の主なデータベースは、多くの場合 SQL という言語を使って操作します。

SQL
リレーショナルデータベース管理システムで、データの操作や定義を行うための言語を、データベース問い合わせ言語（DataBase Query Language）といいます。最も普及している問い合わせ言語は、SQL（Structured Query Language）です。SQL は ANSI（後に ISO）で言語仕様の標準化が行われており、制定された年ごとに SQL86、SQL89、SQL92、SQL99 などの規格があります。

SQL は標準化が進められていて、現在では多くの SQL が SQL99 に準拠するように作られていますが、どの SQL データベースでもすべて同じであるわけではありません。後の章で説明する SQLite と MySQL でも、同じ目的に対する SQL の命令文はほぼ同じですが、細かい点で異なる部分があります。

SQL では、データの登録や検索などのためのコマンドは、コマンド文字列で指定します。これを SQL 文または SQL クエリまたは SQL クエリーといいます。

SQL コマンドで行うデータベースでの要求を SQL クエリと呼ぶこともあります。

たとえば、次の SQL 文（SQL のコマンド）は、4 文字の顧客のコード（id）と 12 文字の顧客の名前（name）がある customer というテーブルを作成します。
CREATE TABLE customer(id CHAR(4) PRIMARY KEY, name CHAR(12));

このテーブルの主キー（PRIMARY KEY）は顧客のコード（id）です。

10

1.3

SQL

1
SQL コマンドは長くなる場合があるため、複数行で記述したり入力できます。そのため、論理的な行の最後を明示するために、論理的な行の最後（SQL 文の最後）にセミコロン（;）

2を付ける場合があります。SQL データベースの種類によってこれは必須である場合と任意である場合があります。本書で説明している SQLite では最後のセミコロンは必須ではあ3りませんが、第 7 章で説明する MySQL では必須です。

4次のコマンドは customer というテーブルから、顧客の名前（name）を取り出す SQL 文の例です。

5

SELECT name FROM customer;

6
ここで紹介している SQL コマンドについて、この段階で具体的に理解したり覚える必要は7ありません。第 2 章以降、本書全体を通じて SQL コマンドについて具体的な例を通して学びます。ここでは SQL コマンドが比較的単純な英単語を使った短い文である点に注目して8ください。

SQL のコマンドは、以下 3 種類に分類されます。

●

データ定義言語（Data Deﬁnition Language; DDL）●

データ操作言語（Data Manipulation Language; DML）●

データ制御言語（Data Control Language; DCL）

データ定義の一般的なコマンドは次の通りです。なお、データベースオブジェクトとは、データベースのテーブル、インデックス、制約などを指します。
表 1.1 ●データ定義のコマンド
CREATE
DROP

ALTER

機能

付録

コマンド

データベースオブジェクトを作成（定義）する
データベースオブジェクトを削除する
データベースオブジェクトを変更する

11

第1章

データベースの基礎知識

データ操作の一般的なコマンドは次の通りです。
表 1.2 ●データ操作のコマンド
コマンド

機能

INSERT INTO

行データまたはテーブルデータを挿入する

DELETE FROM

テーブルからレコードを削除する

UPDATE 〜 SET

テーブルを更新する

SELECT 〜 FROM 〜 WHERE

テーブルデータを検索する。結果集合を取り出す

データ制御の一般的なコマンドは次の通りです。
表 1.3 ●データ制御のコマンド
コマンド

機能

GRANT

データベース利用者に特定の作業を行う権限を与える

SET TRANSACTION

トランザクションモードを設定する

REVOKEBEGIN

COMMIT

データベース利用者から権限を剥奪する
トランザクションを開始する
トランザクションを実施（確定）する

ROLLBACK

トランザクションを取り消す

SAVEPOINT

ロールバック地点を設定する

LOCK

テーブルなどの資源を占有する

データベースによっては、その他にもコマンドが用意されている場合があります。またすべての DBMS がこれらのコマンドをすべて装備しているわけではありません。

SQL コマンドは論理的に 1 行の文として記述します（改行があってもかまいません）。SQL
コマンドの文の例を表に示します。
表 1.4 ● SQL コマンドの文の例
作業
テーブルを作成するテーブルのデータを取得する
テーブルをコピーする

12

コマンド

CREATE TABLE table ( field type、field type,,,);
SELECT field FROM table WHERE cnd;

SELECT * INTO toTable FROM fromTable;