WebプログラミングU PHP

 目次へ 前へ 次へ

2008/6/3 久米

2.2 SQL文の基礎(1)

SQLとは?

問合せ種類 説明 よく使う
CREATE

DBやテーブル(表)を作成する

 
INSERT テーブル(表)にデータ(行)を挿入する
SELECT データ(行)を取り出す
UPDATE データ(行)を更新する
DELETE データ(行)を削除する  
ALTER テーブル(表)を変更する  
DROP DBやテーブル(表)を削除する  

では、コマンドラインツールを使って試してみましょう。
スタートメニュー>プログラム>MySQL>MySQL Server 5.0>MySQL Command Line Client
を選択し下記のように青文字のところを打ち込む。念のためshow databases;を実行。

Enter password: **** ←rootと打ち込みEnterキー
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3 to server version: 5.0.20-nt

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
+--------------------+
3 rows in set (0.00 sec)

mysql>

 

事前準備

初回のみ

  1. 自分用のデータベース作成 create database データベース名(貴方の名前など);
  2. 自分用のデータベースを使用することを宣言 use データベース名;
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 60 to server version: 4.0.17-nt

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> create database kume;
Query OK, 1 row affected (0.01 sec)

mysql> use kume;
Database changed

mysql>

2回目以降

  1. (以後mysqlを動かすごとに、use データベース名; してからSQL文を発行する。)
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 60 to server version: 4.0.17-nt

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use kume;
Database changed

mysql>

 

2.2.1 CREATE TABLE 文

  文法
テーブル作成 CREATE TABLE テーブル名(
列名 データ型 [, ・・・]);
CREATE TABLE monster(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(32),
level INT,
ability VARCHAR(20),
birthday DATE);

テーブルの確認方法

mysql> describe テーブル名;
あるいは
mysql> desc テーブル名;

自動連番キーidの付け方

列idを、整数型で主キーにして、かつ自動増加を設定する。
検索や更新するときなどに、必ず役に立ちます。

CREATE TABLE テーブル名(
id INT PRIMARY KEY AUTO_INCREMENT,
・・・
・・・
);

デフォルトの指定方法

CREATE TABLE テーブル名(
・・・
level INT DEFAULT 0,
ability VARCHAR(20) DEFAULT 'パンチ',
・・・
・・・
);

 

コラム mysqlコマンドラインツールの使い方メモ 

機能 操作
途中で入力止めたい時 \c ENTERキー
ヘルプを表示 ? ENTERキー
仮名漢字入力切替 Altキー+半角/全角漢字キー
前に入力した文再入力
次に入力した文再入力
コピー ウィンドウ上部を右クリックしてッメニュー編集から
ペースト ウィンドウ上部を右クリックしてッメニュー編集から
簡単ペースト ウィンドウ内をマウス右クリック

 

 

2.2.2 INSERT INTO 文

  文法
データ挿入 INSERT INTO テーブル名
(列名 [,・・・])
VALUES (値 [, ・・・]);
INSERT INTO monster
(name, level, birthday)
VALUES
('スライム', 3, '2004/5/10');
データ挿入
(CREATEした順番で
全列挿入なら
列名記入省略可)
INSERT INTO テーブル名
VALUES (値 [, ・・・]);
INSERT INTO monster
VALUES
(100, 'チョコボ', 2, '蹴り', '2004/5/10');

データ型ごとの値の記述方法

データ型 記述方法
数値型 そのまま数字 120
文字列型 ' 'で囲む '富士太郎'
日時型 'YYYY/MM/DD HH:MM:SS'
'YY/MM/DD HH:MM:SS'
'YYYY/MM/DD'
'YY/MM/DD' など
'2004/05/05 15:30:00'
'04/05/10 09:00:00'
'2004/10/10'
'04/12/31'

NULL

値がない時は、どのデータ型でも、NULL というデータを挿入します。

INSERT INTO monster
VALUES
(200, 'キングスライム', NULL, NULL, NULL);

 

2.2.3 SELECT 文

問い合わせ種類 文法
すべての行
SELECT *
FROM テーブル名;
SELECT *
FROM monster;
列を指定
SELECT 列名 [, ...]
FROM テーブル名;
SELECT name, ability
FROM monster;
条件にあったものだけ

SELECT * あるいは 列名 [, ...]
FROM テーブル名
WHERE 検索条件;

SELECT *
FROM monster
WHERE level>3;

並び替えて結果取得 SELECT * あるいは 列名 [, ...]
FROM テーブル名
WHERE 検索条件
ORDER BY 列名 [DESC];
SELECT *
FROM monster
WHERE level>3
ORDER BY birthday;

 

検索条件WHEREの記述方法

データ型 条件
文字列 一致 WHERE name='スライム'
  不一致 WHERE name<>'スライム'
  部分一致 WHERE name LIKE '%スライム%'
数値 一致 WHERE level=3
  不一致 WHERE level<>3
  以上 WHERE level>=3
  未満 WHERE level<3
日付 以前 WHERE birthday<='2004/5/30'

複数条件

  形式
および WHERE 条件1 AND 条件2 WHERE name LIKE 'スライム%' AND level>=3
あるいは WHERE 条件1 OR 条件2 WHERE name LIKE 'スライム%' OR level>=3

 

演習 

下記表をCreateし、データを挿入し、のち問いに答えよ。

id name sugaku kokugo eigo
1 小泉 55 65 75
2 小沢 50 80 55
3 福田 70 55 45
4 谷垣 80 40 50
5 麻生 45 55 65
6 大蔵 40 45 35
7 小池 60 50 70
8 伊吹 75 40 55
9 野田 30 70 40
10 町村 45 45 80

問1 合計点の多い順に結果を表示せよ。同点であれば英語の高い方を上にせよ。

問2 数学、国語、英語の合計点が170以上の人を検索せよ。

問3 すべての科目が50以上という万能タイプを検索せよ。

問4 ひとつの科目だけ50以上それ以外は50未満という、スペシャリストタイプを検索せよ。(難問)

問5 英語が他の科目よりも得意であり、かつ万能タイプを検索せよ。(難問)

 

演習 自分の興味あるもののテーブルを作ってみよう

id VARCHARの列 INTの列 DATEの列  ・・・    ・・・  
           
           
           
           
           

 

コラム

SQLの予約語

あらかじめ予約された単語を、列名あるいはテーブル名に使うとエラーになります。
一般的な単語は避けるか、
どうしても使いたい一般単語があれば上記リンクで調べましょう。

 

 

コラム

MySQLコマンド起動方法その2

コマンドプロンプトを立ち上げ、下記のように打ち込む

C:\Documents and Settings\kume>cd C:\Program Files\MySQL\MySQL Server 5.0\bin

C:\Program Files\MySQL\MySQL Server 5.0\bin>mysql -u root -p
Enter password: ****
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 22 to server version: 5.0.27-community-nt

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>