■ Comment
WARNING
■ 演算子
DESC
演算子とは、演算内容を指示する記号(Symbol)のこと
( 子 )というのは 記号 ( Symbol のこと )
SQLの中で使用される式は、『オペランド』と『演算子(オペレータ)』を組み合わせたもの
ie. 式. == { Operand, Operator }
このオペランドを[ 操.作 ]する記号が、演算子です
Expression : 10 + 100
Where
+ : Opecode
10 : Operand
■ 比較演算子
SYNTAX
< > < = >= ==
DESC
Operand の型によって比較方法が変わる
// 2つとも整数なら , 整数として比較
where number > 3
// 2つとも文字列なら , 文字列(文字コード順)として比較
where str > "abc"
// 1つでも NULL なら NULL をかえす
where number > 3
// 一方が TIMESTAMP || DATETIME で
他の引数が定数のときは定数は比較前にTIMESTAMP に変換されます
// 他の場合は全て浮動小数として比較される
■ 論理演算子
DESC
引数に 0, NULL といった値がひとつでもあれば 0 がかえる
BETWEEN 条件
AND OR
TIP
NULL の意は "データが存在しない"
数値や文字と 比較も計算もできない
■ 算術演算子(Math)
DESC
sql は DB から 値を取るだけでなく, 算術演算もできる
mysql> select 10 - 7, 8.8 - 17.92, 4.5 - 3.5, 5.7 - 10, 3.0 - 2.0;
// 除算の結果は float になる
// RET: 0.3333
mysql> select 1/3
// div ( 商 )
// RET: 1
mysql> select 4 div 3
// mod
// RET: 0
mysql> select 4 % 2
// mod
// RET: 0
mysql> select pow(2,4)
■ 関数.Function
POINT
関数を使えば, レコードの結果を編集してから取得できる
■ 数学.math
// 除算の結果は float になる
// RET: 1
mysql> select abs (-1)
// round ( 四捨五入 )
// RET: 3.14
mysql> select round( 3.1412, 2 )
// truncate ( 切捨て )
// RET: 3.14
mysql> select truncate( 3.1412, 2 )
// ceil, floor
// RET: 4
mysql> select ceil( 3.1412 )
// 自然対数
select exp( 1 );
// 自然対数
select exp( 1 );
// 常用対数
select log10( 1000 );
// 常用対数
select log2( 1024 );
// 円周率
select PI()
// 少数を丸める
// 11
CEILING( 10.3 )
// 10
FLOOR( 10.3 )
// 10.4
ROUND( 10.36, 1 )
// 10.3
TRUNCATE( 10.31, 1 )
// 数値から 書式変換
// String 型になる
// RET: 19,800
mysql> select format( 19800, 0 )
// 文字列から数値に 明示的に変換
mysql> select cast( "100" as signed )
// BAD
mysql> select cast( "100.1" as float )
■ 文字列操作
■ LPAD
DESC
Left Padding
左に文字を詰める
// RET
// 0000000009
select LPAD( "9", 10, '0' );
select LPAD( id, 10, '0' ) from tbl;
// 数値の文字列を sort する
// 1
// 2
// 11
select id from tbl order by LPAD( id, 10, '0' );
// 1
// 11
// 2
select id from tbl order by id
■ concat
select concat("aaa","bbb");
select concat(myoji,namae) from member;
■ insert
select insert( "abcdef", 2,3, '999' );
■ replace
select replace( "abcdef", "bcd", '999' );
■ length
-- バイト単位
select length("aaa");
-- bit単位
select bit_length("aaa");
-- 文字単位
select char_length("あああ");
■ space
-- 5個分のスペースを返す
select space(5);
■ strcmp
DESC
大小関係を返す。
ASCII 以外のマルチバイトでも利用できるが、大文字、小文字の区別はされない。
-- 0
stcmp( "abc", "ABC" )
-- 1
stcmp( "d", "ABC" )
-- -1
stcmp( "あ", "い" )
■ network
■ inet_aton inet_ntoa
select inet_aton("127.0.0.1");
■ 集計.count
DESC
グループ内での最大、最小を求める
POINT
集計、平均はグループが対象になる。
グループは GROUP BY で指定したり、カラムが対象になる。
select max( id ) from member
select min( id ) from member
合計と平均
select avg( id ) from member
select sum( id ) from member
レコード数を取得する。
-- テーブル内の全レコード数を取得する。
select count(*) from member;
-- カラム idadr が重複なしで何種類あるか取得する。
select count(DISTINCT idadr) from member;
-- 条件にマッチしたレコード数を取得する。
select count(*) from member idadr = 1;
■ 日付時刻
-- 秒数 < -> 時刻
select sec_to_time( 777 );
-- 2011-11-26
select CURDATE();
-- 2011-11-26
select CURTIME();
-- 2011-12-01 22:47:00
select NOW();
■ 情報
-- 現在のデータベースを取得する
select database();
-- 利用可能な権限リストを取得する。
show privileges;
-- カラムのデフォルト値を取得する
select default( idadr ) from member;
USAGE >■ USAGE
■ MySQLを起動する
DESC
すべては Program であることを忘れないこと
常駐 Program であることを意識する. ( Service > MySQL にはいっている )
Program 本体は
C:\Program Files\MySQL\MySQL Server 5.1\bin\mysql.exe
↑に SQL command を送信することで DB 操作をする ( 今は jsp 経由でなげている )
■ DB.を作成する
DESC
MySQLAdminstrator(GUI) でのつくりかた
1. Sel [カタログ]
2. Sel Schema(図表) RMB > Create New Table
Schema > Table という Data 構造らしい
3. Column を入力する
WARNING
名前 (TIME | DESC) は reserved かも
4. Table Name をいれる
5. 作成したものを QueryBrowser で確認する
TIP
Primary Key には KEY Icon が表示される
CHAR() の方が VCHAR よりも軽いらしい
WARNING
CHAR(256) は too big といって怒られる -> '\0' 文字を考慮してね ! ということかな ?
以下の command が生成される
CREATE TABLE `mytbl`.`New Table` (
`ID` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`TOOL` CHAR(128) NOT NULL,
`ARG1` CHAR(256) NOT NULL,
`ARG2` CHAR(256) NOT NULL,
`ARG3` CHAR(256) NOT NULL,
`ARG4` CHAR(256) NOT NULL,
`TIME` CHAR(128) NOT NULL,
`DESC` CHAR(256) NOT NULL,
PRIMARY KEY (`ID`)
)
ENGINE = InnoDB;
// DB の内容を一覧する
// RET: mysql, test ( これが DB 扱いらしい. )
SHOW DATABASES;
// DB を作成する
// ということは ( App ごとに )config.xml に指定するのは, DB の名前かも
CREATE DATABASE testDB;
// DB を選択する
// Window 部分に, localhost:3306/testDB
USE testDB;
// table 一覧をみる
show tables;
// table 作成
create table Customer (
age INT(3),
name VARCHAR(20),
PRIMARY KEY (PREF_CD)
);
USAGE
起動して接続する
( ということは, winsock などを利用して, DB へ SQL command を投げているのか )
DB はひとつの Program( PS )であり, Port 3306 から起動しているのか ?
MySQL > MySQL Query Browser
ServerHost: DB がある場所を指定する
username : Account
Password : xxx
Table を選択する.
USE SampleDB040;