SQL

カラム(項目)を変更する

カラム(項目)のデータ型を変更する

カラムのデータ型は変更することができます。ただし、データ型が対応可能でない場合はエラーになります。

書式
ALTER TABLE テーブル名 MODIFY カラム名 データ型;

カラム「name」は10文字の設定になっています。これを30文字に変更してみます。
次のように入力します。

ALTER TABLE shain MODIFY name VARCHAR(30);
結果

sql15
30に変更されました!

カラムを後ろに追加する

新しい項目を最後の位置に追加します。

書式
ALTER TABLE テーブル名 ADD カラム名 データ型>;

生年月日のカラムをDATETIME型で追加してみます。

ALTER TABLE shain ADD birth DATETIME;
結果

一番下に追加されました。
sql16

生年月日を含めた新しいレコードを挿入してみます。

INSERT INTO shain VALUES('08','香山雄二',37,'1979-08-20');
【結果】

sql17

カラムを先頭に追加する

新しい項目を先頭の位置に追加するには、FIRSTを加えます。

書式
ALTER TABLE テーブル名 ADD カラム名 データ型 FIRST>;

カラムを任意の位置に追加する

新しい項目を先頭の位置に追加するには、加える位置のカラムを追加します。

【書式】
ALTER TABLE テーブル名 ADD 追加するカラム名 データ型 AFTER 前のカラム名>;

カラムnyusya(入社年月日)を、DATE型でname(名前)の後ろに追加してみます。

ALTER TABLE shain ADD nyusya date AFTER name;>
【結果】

sql18

データの型

データベースのテーブルには、カラムで指定した形式のデータしか入力できません。
データの形式には、整数型、通貨型、文字列型、日付・時刻型、などいろいろな型があります。

下記に挙げるのは一例です。
MySQL のリファレンスに詳細があります。

数値型の種類

TINYINT -128~127 1バイト整数
SMALLINT -32,768~32,767 2バイト整数
MEDIUMINT -8,388,608~8,388,607 3バイト整数
INT -2,147,483,648~2,147,483,647 4バイト整数
FLOAT -9,223,372,036,854,775,808~
9,223,372,036,854,775,807
単精度浮動小数点
DOUBLE -3.402823466E+38~-1.175494351E-38 倍精度浮動小数点

文字型の種類

CHAR 255文字まで 固定長の文字列
VARCHAR 1~65535バイト 可変長文字列
TEXT 65535文字まで 長い文字列
LONGTEXT 4294967295まで とても長い文字列

日付・時刻型

DATETIME 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 日付と時刻
DATE 1000-01-01 ~ 9999-12-31 日付
YEAR 1901~2155(4桁) 1970~2069(2桁)
TIME -838:59:59 ~ 838:59:59 時刻
  • 日付・時刻型のデータはシングルコーテーション、もしくはダブルコーテーションで囲みます。
  • MySQL では、日付は「YYYY-MM-DD」時刻は「HH:MM:SS」の形式で入力します。

テーブル作成とデータ入力

テーブルを作る

SQLでテーブルを作成するには、CREATE TABLE 文を使います。
テーブル名に続いて、カラム名(項目名)とデータ型をスペースで間を開けて記述します。カラムの間はカンマで区切ります。

書式
CREATE TABLE (カラム名1 データ型1, カラム名2 データ型2 ...)

新しく社員名簿を作ってみます。SQLのテキストフィールドに下記コードを入力します。

CREATE TABLE shain (id VARCHAR(10),name VARCHAR(10),age INT);

mydb の下に shain テーブルができました。

sql5

すべてのテーブルを表示する

データベースに存在するすべてのテーブルを表示するには、SHOW TABLES を使います。

書式
SHOW TABLES;
結果

sql6

テーブルの構造を確認する

テーブルのカラム構造は DESC で表示できます。

書式
DESC テーブル名;

次のように入力してみました。

DESC shain;
結果

sql9

テーブルにデータを挿入する

テーブルにデータを挿入するには、 INSERT を使います。

書式
INSERT INTO テーブル名 VALUES(データ1,データ2...);

次のように入力してみました。

INSERT INTO shain VALUES('01','峯太郎',58);
結果

sql10

カラム名を指定してデータを挿入する

カラムの順番に関係なく、カラム名を指定して挿入することができます。

INSERT INTO テーブル名 (カラム名 , カラム名 ,.......)
       VALUES(データ , データ ,.......);

次のように順番を変えて入力しました。

INSERT INTO shain(name,id,age) VALUES('高倉賢治','04',56);
結果

一度にデータを入力する

一度に複数レコードのデータを入力することができます。

書式
INSERT INTO テーブル名 (カラム名1 , カラム名2 ,...) 
  VALUES(データ1 , データ2 ,...),(データ1 , データ2 ,...),...;

では、次のようにデータを入力してみます。

INSERT INTO shain(id,name,age) VALUES('005','宍戸譲二',35), 
('006','石原雄二',37), ('007','島倉ちよ',28);
結果

sql12

データを表示する

カラムのデータを表示させるには、SELECT を使います。

書式
SELECT カラム名1, カラム名2,... FROM テーブル名;

名前と年齢を表示させたいと思います。次のように入力してみます。

SELECT name, age FROM shain;
結果

すべてのデータを表示する

すべてのレコードを入力するには 「SELECT * FROM テーブル名」を使います。
次のように入力してみました。

SELECT * FROM shain;
結果

sql14

SQLの入り口に立ったばかりですが、なかなか面白いです。
コマンドがすべてなんですね。ふむふむ。

SQLを使おう

桐やAccessのようなデータベースソフトを使ってきましたので、SQL を知らずに過ごしました。
MySQL を使うにおいては、SQL言語は避けて通れないようです。

SQLは、「Structured English Query Language」(構造化英文問い合わせ言語)として1970年代にIBM社で開発されました。その後、ISOやJISによって規格化されたことにより普及が進み、現在ではリレーショナルデータベースの事実上の標準言語となっているそうです。

SQLには、大まかに次のような機能があります。

  1. データを格納するテーブルなどデータベースの構造を定義します。
  2. 追加・更新・削除など、データベースの操作を行います。
  3. データベースの制御を行います

SELECT文でデータを選択

SELECT文とはデータベースのテーブルからデータを検索し、取得するSQLのことです。
SELECT文の基本はSELECTのあとに表示したいカラムをカンマで区切って並べ、FROM  のあとにテーブル名を記述します。

phpMyAdmin にアクセスして、サイドメニューからデータベースを選択します。(mydb)
[SQL]タブをクリックします。
SQL文を入力して「実行」をクリックします。

sql1

次のような画面に切り替わります。
sql2

INSERT文でデータを挿入しよう

INSERT文は、データを追加したい表の列とそれに対応した値を順に指定します。

構文
INSERT INTO テーブル名 (列名 , 列名 ,.......)
       VALUES(データ , データ ,.......);

meibo テーブルに、新しいデータを挿入するには、SQLのテキストフィールドに次のように入力します。

INSERT INTO meibo (id,name)
       VALUES (105,'さざえ');
結果

sql3

無事さざえさんの名前が追加されていました~
sql4