ラベル SQL の投稿を表示しています。 すべての投稿を表示
ラベル SQL の投稿を表示しています。 すべての投稿を表示

2012年8月16日木曜日

5.2 データの検索

データの検索もSQL文で行います。

5.2.1 SELECT文の基本


データベース内のレコードを検索するには、SQLコマンドのSELECTを使い
ます。基本的な書式は次のとおりです。
SELECT 列名FROM テーブル名;
次の例では、staffテーブルのname列とage列を出力します。

mysql> SELECT name,age FROM staff;
+-----------+------+
| name | age |
+-----------+------+
| Sato | 23 |
| Suzuki | 24 |
| Takahashi | 28 |
| Tanaka | 26 |
| Watanabe | 30 |
+-----------+------+
列名に「*」を指定すると、すべての列が出力されます。

mysql> SELECT * FROM staff;
+----+-----------+------+------+
| id | name | age | bid |
+----+-----------+------+------+
| 1 | Sato | 23 | 1 |
| 2 | Suzuki | 24 | 2 |
| 3 | Takahashi | 28 | 1 |
| 4 | Tanaka | 26 | 3 |
| 5 | Watanabe | 30 | 2 |
+----+-----------+------+------+
列名を表示するときに、ASを使って別名を付けることもできます。

mysql> SELECT name as '名前' ,age as '年齢' FROM staff;
+-----------+--------+
| 名前| 年齢|
+-----------+--------+
| Sato | 23 |
| Suzuki | 24 |
| Takahashi | 28 |
| Tanaka | 26 |
| Watanabe | 30 |
+-----------+--------+


5.2.2 検索条件の指定

検索条件を指定するには、SELECTに続けてWHERE句を使います。
SELECT 列名FROM テーブル名WHERE 検索条件;
次の例では、age列が25未満のレコードを出力します。

mysql> SELECT * FROM staff WHERE age <= 25;
+----+--------+------+------+
| id | name | age | bid |
+----+--------+------+------+
| 1 | Sato | 23 | 1 |
| 2 | Suzuki | 24 | 2 |
+----+--------+------+------+
条件には、以下の表のような記号を利用することができます。


条件に指定できる記号
=   等しい
!=  等しくない
IN  いずれかが含まれる
ある文字列を含むレコードを検索したい場合は、LIKEで条件を指定します。
SELECT 列名FROM テーブル名WHERE 列名LIKE 条件;
次の例では、name列が「T」で始まるレコードを出力します。

mysql> SELECT * FROM staff WHERE name LIKE 'T%';
+----+-----------+------+------+
| id | name | age | bid |
+----+-----------+------+------+
| 3 | Takahashi | 28 | 1 |
| 4 | Tanaka | 26 | 3 |
+----+-----------+------+------+


「%」は任意の文字列を表すワイルドカード文字です。「_」は任意の1文字
を表します。SQLでは「*」や「?」ではありませんので注意してください。
なお、「~以外」で検索したいときは、LIKEの代わりに「NOT LIKE」を使います。

mysql> SELECT * FROM staff WHERE name NOT LIKE 'T%';
+----+----------+------+------+
| id | name | age | bid |
+----+----------+------+------+
| 1 | Sato | 23 | 1 |
| 2 | Suzuki | 24 | 2 |
| 5 | Watanabe | 30 | 2 |
+----+----------+------+------+







2012年8月14日火曜日

5.1 テーブルの作成と更新


データベースにデータを登録するには、まずテーブルを作成する必要があります。

5.1.1 テーブルの作成


テーブルを作成するには、SQLコマンドのCREATE TABLEを使います。
CREATE TABLE テーブル名(列名データ型, 列名データ型,...);
各列には、挿入するデータの種類をデータ型で指定します。データ型から外
れたデータは挿入できません。適切なデータ型を使用することで、データの
整合性を高く保つことができます。
mysql> CREATE TABLE staff (id VARCHAR(4), name VARCHAR(20), age INT, bid VARCHAR(4));

SQLは「;」を行末としますので、以下のように複数行に分けて見やすくす
ることもできます。行末に「;」を入力するまで、続けて何行も入力するこ
とができます。その間、プロンプトは「-> 」に変更されます。

mysql> CREATE TABLE staff (
-> id VARCHAR(4),
-> name VARCHAR(20),
-> age INT, bid VARCHAR(4)
-> );

※途中で入力を取りやめたい場合は「¥c」と入力します。


MySQLでは、以下のデータ型を利用することができます。


MySQLのデータ型

カテゴリデータ型説明
数値TINYINT 1バイトの整数
SMALLINT 2バイトの整数
MEDIUMINT 3バイトの整数
INT 4バイトの整数
BIGINT 8バイトの整数
FLOAT 4バイトの浮動小数点数
DOUBLE 8バイトの浮動小数点数
BIT ビット列
日付・時刻DATE YYYY-MM-DD(1000-01-01~9999-12-31)
DATETIME YYYY-MM-DD HH:MM:SS(1000-01-01
00:00:00~9999-12-31 23:59:59)
TIME HH:MM:SS
TIMESTAMP YYYY-MM-DD HH:MM:SS(1970-01-01
00:00:01~2037-12-31 23:59:59)
YEAR YYYY(1901~2155)、YY(01~69、70~99)
文字列CHAR(L) 0~255文字の固定長文字列
VARCHAR(L) 0~65535文字の可変長文字列
TINYTEXT 255バイトまでの文字列(大文字小文字の区別なし)
TINYBLOB 255バイトまでの文字列(大文字小文字の区別あり)
TEXT 65535バイトまでの文字列(大文字小文字の区別なし)
BLOB 65535バイトまでの文字列(大文字小文字の区別あり)
MIDIUMTEXT 16777215バイトまでの文字列(大文字小文字の区別なし)
MIDIUMBLOB 16777215バイトまでの文字列(大文字小文字の区別あり)
LONGTEXT 4294967295バイトまでの文字列(大文字小文字の区別なし)
LONGBLOB 4294967295バイトまでの文字列(大文字小文字の区別あり)







2012年8月4日土曜日

2.2 SQL


SQLは、リレーショナル・データベースにアクセスするためのデー
タベース言語です。SQLを使って、テーブルの作成・削除や、デー
タの検索・更新・削除といった作業ができます。

2.2.1 SQLの概要


SQLは、関係モデルに基づくデータベース言語で、ISOやANSI、JISによっ
て標準化されています。制定年度によって、SQL92(1992年)、SQL99(1999
年)、SQL:2003(2003年)などの規格があります。どのRDBMSでもSQLを
サポートしていますが、どのSQL規格を採用しているかはRDBMSによって
異なります。また、それぞれのRDBMSで独自の拡張を加えている場合もあ
りますので、注意が必要です。
SQLのコマンドは、機能によって「データ定義言語」「データ操作言語」「デ
ータ制御言語」の3つに分類することができます。

2.2.2 データ定義言語(DDL)


データ定義言語(DDL:Data Definition Language)は、データベースに
格納するデータの構造を定義します。DDLには次表のようなものがありま
す。



CREATE テーブルなどを作成する
ALTER テーブルなどの定義を変更する
DROP テーブルなどを削除する


2.2.3 データ操作言語(DML)


データ操作言語(DML:Data Manipuration Language)は、テーブル内
のデータの参照、更新・追加、削除などを行うための命令です。DMLには
次表のようなものがあります。


SELECT レコードを検索する
INSERT レコードを挿入する
UPDATE レコードを更新する
DELETE レコードを削除する


2.2.4 データ制御言語(DCL)


データ制御言語(DCL:Data Control Language)は、データベースのア
クセス権などを設定するための命令です。DCLには次表のようなものがあ
ります。


COMMIT トランザクションを確定する
ROLLBACK トランザクションを破棄する
GRANT 特定のユーザーに権限を与える
REVOKE ユーザーに与えた権限を削除する