SYNTAX




Comment

-- コメントです
WARNING
--Spaceがないとだめ



演算子

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();



情報

show slave hosts
-- 現在のデータベースを取得する select database();
-- 利用可能な権限リストを取得する。 show privileges;
-- カラムのデフォルト値を取得する select default( idadr ) from member;



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;