——————————————————————
■いろいろな条件で抽出する
■カラムの表示を工夫して「SELECT」を実行する
・テーブルtbのuriaカラムとbangカラムだけ抽出
SELECT uria,bang FROM tb;
■エイリアスを使う
カラムに「ニックネーム」をつける。
SELECT カラム名 AS エイリアス FROM テーブル名;
(例
SELECT bang AS 社員番号 , uria AS 売上 FROM tb;
■計算したり、文字列を処理したりして表示する
uriaカラムに10000を掛けて表示
SELECT uria*10000 as 売上 FROM tb;
・カラム同士の計算も可能
SELECT a/b FROM テーブル名
SELECT a+b FROM テーブル名
■関数を使って計算する
テーブル「tb」のカラム「uria」の平均を出す
・平均
SELECT AVG(uria) FROM tb;
・合計
SELECT SUM(uria) FROM tb;
・個数を表示
SELECT COUNT(uria) FROM tb;
・MySQLのサーバーのバージョン
SELECT VERSION();
・現在使っているデータベースを表示
SELECT DATEBASE();
・現在のユーザーを表示
SELECT USER();
・引数で指定した文字の文字コードを表示
SELECT CHARSET(‘この文字’);
■文字列を結合する
カラムaとbとcの文字を繋げる
SELECT CONCAT(bang,name,’さん’) FROM tb1;
これでbangとnameにさんを付けて表示
■文字列操作で活躍する関数
・右から取り出す:RIGHT関数
カラム「bang」の右から2文字を表示する
SELECT RIGHT(bang,2) FROM tb1;
たとえばA101なら01が表示される
・左から取り出す:LEFT関数
SELECT LEFT(bang,2) FROM tb1;
・×番目から△個取り出す:SUBSTRING関数
次は、カラム「bang」の2文字目から3文字分を表示します
SELECT SUBSTRING(bang,2,3) FROM tb1;
たとえばA101なら101が表示される
■日付・時刻の関数
現在の日時と時刻の値を返す関数NOW()
INSERT INTO ima (b) VALUSE(NOW());
2008-09-11 23:00:33 などと入る
——————————————————————
■テーブル・データベース・レコードの削除
■テーブルを削除する
DROP TABLE テーブル名;
(例
DROP TABLE tb1A;
■もし指定のテーブルがあったら削除
DROP TABLE IF EXISTS tb1A;
■データベースの削除
DROP DATABASE データベース名;
■レコードの丸ごと削除
テーブルは残して、レコードだけ削除する
DELETE FROM テーブル名;
——————————————————————
■テーブルやレコードをコピー・削除する
■テーブルのカラム構造とレコードを丸ごとコピーする
SELECTした結果から、カラム構造とレコードをコピーして、新規テーブルを作成する。
ただしこの方法では、「AUTO_INCREMENT」など一部の属性がコピーされないので、
コピー後に設定する必要がある。
CREATE TABLE 新規テーブル SELECT * FROM 元となるテーブル名;
(例
CREATE TABLE tb1H SELECT * FROM tb1;
■テーブルのカラム構造だけをコピーする
CRATE TABLE 新規テーブル LIKE 元となるテーブル名;
(例
CREATE TABLE tb1I LIKE tb1;
この方法では「AUTO_INCREMENT」などの属性もコピーできる、器だけコピーする感じ。
■他のテーブルのレコードをコピーする
同じカラム構造のテーブルのデータを丸ごとコピーするには、次のようにする
INSERT INTO テーブル名 SELECT * FROM 元となるテーブル名;
(例
INSERT INTO tb1I SELECT * FROM tb1;
※器だけ作ったテーブルにレコードをコピーすればよい
■特定のカラムを選択してコピーする
INSERT INTO tb1I (name) SELECT FROM tb1;
この場合、tb1Iのnameカラムにtb1のレコードが入る。他はNULL
——————————————————————
■テーブルを改造する
テーブルのカラム構造の変更
ALTER TABLEコマンド
■カラムのデータ型を変更する
ALTER TABLE テーブル名 MODIFY カラム名 データ型;
(例
ALTER TABLE tb1 MODIFY name VARCHAR(100);
■カラムを追加する
ALTER TABLE テーブル名 ADD カラム名 データ型;
(例
ALTER TABLE tb1 ADD umare DATETIME;
・カラムの先頭に追加する
FIRSTをつけてカラムの先頭に追加,DATATIME型カラムを追加
ALTER TABLE tb1 ADD umare DATATIME FIRST;
・カラムを自由な位置に追加する
ALTER TABLE tb1 ADD umare DATATIME AFTER bang;
■レコードの追加
INSERT INTO tb1c VALUES(‘N111′,’松田’,33,’1975-11-10′);
■カラム名とデータ型を変更する
■カラム名を含めてカラムのデータ型・位置を変更する
ALTER TABLE テーブル名 CHANG 変更前カラム名 変更後カラム名 変更後データ型;
(例
ALTER TABLE tb1c CHANGE umare seinen DATE;
■カラムを削除する
ALTER TABLE テーブル名 DROP カラム名;
■主キーを設定する
主キーの作成
CREATE TABLE テーブル名(カラム名 データ型 PRIMARY KEY・・・);
(例 主キーであるINT型のカラム「a」と、VARCHAR(10)型のカラム「b」を持つテーブル「itii」を作成します。
CREATE TABLE itii(a INT PRIMARY KEY,b VARCHAR(10));
■ユニークキー
重複をしないという制限を設定する
CREATE TABLE uniq(a INT UNIQUE,b VARCHAR(10));
■自動的に連続番号が入力されるカラムにする
連続番号機能付きカラムの定義
1:データ型は「INT」などの整数型
2:「AUTO_INCREMENT」を付ける
3:「PRIMARY KEY」などを設定して一意(ユニーク)にする ●●●
■連続番号機能付きカラムの作成
CREATE TABLE renzoku(a INT AUTO_INCREMENT PRIMARY KEY,b VARCHAR(10));
■連続番号の初期化
すべてのレコードを削除して、連続番号の値を1から入力する場合は
「AUTO_INCREMENT」を初期化する必要がある。
ALTER TABLE テーブル名 AUTO_INCREMENT = 0;
■最初からデータが入っているカラムにする
「何も入力しなければ、あらかじめ設定してあるデータが勝手に入力される」
DEFAULT
CREATE TABLE テーブル名 (カラム名 データ名 DEFAULT 初期値…)
(例
ALTER TABLE tb1G MODIFY name VARCHAR(10) DEFAULT ‘氏名未入力’;
上記でnameカラムに値を入れない場合は、勝手に氏名未入力と入力される
■インデックスを設定する
CREATE INDEX インデックス名 ON テーブル名(カラム名);
テーブルtb1Gにmy_indという名前のインデックスを設定する
(例
CREATE INDEX my_ind ON tb1G(bang);
■インデックスの設定
SHOW INDEX FORM テーブル名
■インデックスの削除
DROP INDEX インデックス名 ON テーブル名;
■インデックスの確認
SHOW INDEX FROM tb1G G
◎インデックスと処理速度の関係
YESかNOしかないカラムをインデックスにしても意味がない。
インデックスが設定されているテーブルを更新したら、
インデックスが作り直されるので、更新が遅くなる。
——————————————————————
■データ型
■数値型
◎INT
-2147483648から2147483647 (符号無しの場合0から4294967295)
◎TINYINT
-128から127 (符号無しの場合0から255)
◎SMALLINT
-32768から32767 (符号無しの場合0から65535)
◎MEDIUMINT
-8388608から8388607 (符号無しの場合0から16777215)
◎BIGINT
-9223372036854775808から9223372036854775807
(符号無しの場合0から18446744073709551615)
◎FLOAT 浮動小数点
-3.402823466E+38から3.402823466E+38
◎DOUBLE
-1.7976931348623157E+308から1.7976931348623157E+308
■日付・時刻データの入力
日付は「YYYY-MM-DD」、時刻は「HH:MM:SS」で入力する
■文字列型
◎CHAR (固定の文字列)
255文字まで
◎VARCHAR (可変の文字列)
255文字まで
◎TEXT (長い文字列)
65535文字まで
◎LONGTEXT (とても長い文字列)
4294967295文字まで
■日付・時刻型
◎DATETIME (日付と時刻)
000-01-01 00:00:00~9999-12-31 23:59:59
◎DATE (日付)
1000-01-01~9999-12-31
◎YEAR(年) (とても長い文字列)
1901~2155
◎TIME (時刻)
-838:59:59~838:59:59
——————————————————————
■全てのデータ表示させる
SELECT * FROM tb1;
■データを表示する
SELECT カラム名1,カラム名1,カラム名1, FROM テーブル名;
(例
SELECT bang,name FROM tb1;
■一度にデータを入力する
INSERT INTO テーブル名
(例
INSERT INTO tb1 (toshi,name,bang) VALUES(23,’佐藤’,’A104′), VALUES(26,’鈴木’,’B104′), VALUES(40,’加藤’,’C120′);
■カラム名を指定してデータを挿入する
INSERT INTO テーブル名(カラム名1,カラム名2・・・) VALUES(データ1,データ2・・・);
(例
INSERT INTO tb1 (toshi,name,bang) VALUES(23,’佐藤’,’A104′);
■テーブルにデータ挿入する
INSERT INTO テーブル名 VALUES(データ1,データ2・・・);
(例
INSERT INTO tb1 VALUES(‘A101′,’佐藤’,40);
——————————————————————
■テーブルのカラム構造を表示する
DESC テーブル名;
■すべてのテーブルを表示する
SHOW TABLES;
■テーブルを作る
CREATE TABLE テーブル名(カラム名1 データ型1, カラム名2 データ型2・・・)
(例
CREATE TABLE tb1(bang VARCHAR(10),name VARCHAR(10),tosi INT);
■現在使っているデータベースを表示する
SELECT DATABASE();
■使用するデータベース名
USE データベース名
■データデース一覧を確認
SHOW DATABASES;
■データベースを作る
CREATE DATABASE データベース名;