約 3,764,732 件
https://w.atwiki.jp/swdp2p2/pages/13.html
PHP基礎知識文字列の結合 関数定義 条件文のtrueとfalseの省略記述 MDB2データベースへの接続 データの取得 データの書換え 検出数 暗号化hash関数 crypt関数 セッションセッションの基本 SmartySmarty基本 PHP 基礎知識 文字列の結合 ?php $a = "ポアソン" ; $b = "分布" ; // $aと$bを結合する $c = $a . $b; // 結果の出力 print($c); ? 文字列を結合するには.(ドット)を用います。文字列の結合は複数でも可能です。 出力結果ポアソン分布 関数定義 関数はfunction 関数名(引数){記述文}で定義できます。 返り値の型がない代わりにfunctionがついたC言語の関数と考えれば特に難しくはありません。 関数の例は以下のとおりです。 ?php // 文字列の出力関数 function Disp($string) { print($string);} // 文字列を返す関数 function GetString() { $string = "GetStringの文字列" return $string;} ? 条件文のtrueとfalseの省略記述 システムにより依存はありますが、基本的にtrue = 0以外, false = 0です。 if文などでよく if($isExist){...} などと変数名(ここでいう$isExist)のみの記述があります。 これは、$isExistがtrueならば実行すると言う意味です。 この意味はwhile文の無限ループを思い出してもらえれば簡単だと思います。 無限ループは、while(1){...} のように記述します。別に条件文が1である必要はありません。0以外の数値であればよいのです。 つまり、これはwhile(true)を意味しています。 ですので、$isExistがtrueの場合、if($isExist){...} は if(true){...}と解釈されます。 MDB2 データベースへの接続 ?php // ライブラリの読込み require_once "MDB2.php" ; // データベースへ接続 $mdb2 = MDB2 connect( "mysql //ユーザ名 パスワード@ホスト/データベース名" ); // エラー処理 if(PEAR isError($mdb2)) { die($mdb2- getMessage()); } // データベースへの接続を切る $mdb2- disconnect(); ? データの取得 ?php // ライブラリの読込み require_once "MDB2.php" ; // データベースへ接続 $mdb2 = MDB2 connect( "mysql //ユーザ名 パスワード@ホスト/データベース名" ); // エラー処理 if(PEAR isError($mdb2)) { die($mdb2- getMessage()); } // クエリを実行 $res = $mdb2- query( "SELECT * FROM データベース名" ); // エラー処理 if(PEAR isError($res)) { die($res- getMessage()); } // テーブルの最初の要素を出力する while( ($row = $res- fetchRow()) ) { print($row[0]. " br " ); } // データベースへの接続を切る $mdb2- disconnect(); ? テーブルの要素を求めるにはqueryを使用します。 $res = $mdb2- query("SELECT 必要な情報を取り出す記述"); 上記の例では全ての要素を取り出しています。 また、while文では1行ずつ要素を取り出し、1列目の要素を出力しています。 この配列の表記法($row[0],$row[4]等)の他に、文字列による表記法も存在します。 これを連想配列といいます($row["angle"], $row["apple"]等)。 // テーブルの最初の要素を出力する while( ($row = $res- fetchRow(MDB2_FETCHMODE_ASSOC)) ) { print($row[ "id" ]. " br " ); } データベースの行の要素を連想配列で取り出す場合は、$res- fetchRow()の引数にMDB2_FETCHMODE_ASSOCをいれます。 引数を指定しない場合は、デフォルトとしてMDB2_FETCHMODE_ORDERED が入ります。 この他に、MDB2_FETCHMODE_OBJECTとすることでオブジェクトとして要素を取り出せます。 // テーブルの最初の要素を出力する while( ($row = $res- fetchRow(MDB2_FETCHMODE_OBJECT)) ) { print($row- id. " br " ); } データの書換え ?php // ライブラリの読込み require_once "MDB2.php" ; // データベースへ接続 $mdb2 = MDB2 connect( "mysql //ユーザ名 パスワード@ホスト/データベース名" ); // エラー処理 if(PEAR isError($mdb2)) { die($mdb2- getMessage()); } // データベースの内容を変更する $sql = "update データベース名 set カラム = " . $mdb2- quote(セットしたい値, 型 ) . "WHERE 条件"; $res = $mdb2- exec($sql); // エラー処理 if(PEAR isError($res)) { die($res- getMessage()); } // データベースへの接続を切る $mdb2- disconnect(); ? 検出数 ?php // ライブラリの読込み require_once "MDB2.php" ; // データベースへ接続 $mdb2 = MDB2 connect( "mysql //ユーザ名 パスワード@ホスト/データベース名" ); // エラー処理 if(PEAR isError($mdb2) ) { die($mdb2- getMessage() );} // クエリを実行 $res = $mdb2- query( "SELECT * FROM データベース名 WHERE 条件" ); // エラー処理 if(PEAR isError($res) ) { die($res- getMessage() );} // 検出数を出力 print( "条件に合致したものは" . $res- numRows() . "個でした" ); // データベースへの接続を切る $mdb2- disconnect();? 暗号化 hash関数 ?php // 文字列をハッシュ関数で暗号化 $hsh = hash( "アルゴリズム" , "文字列" ); // 結果を出力 print($hsh);? hashで使用できるアルゴリズムは、hash_algos()で見ることができる。 また、sha1やmd5については突破方法や効率の良い攻撃法が見つかっているため使用は避けた方がよい。 hash_algos()の出力結果は以下である。 Array ( [0] = md4 [1] = md5 [2] = sha1 [3] = sha256 [4] = sha384 [5] = sha512 [6] = ripemd128 [7] = ripemd160 [8] = whirlpool [9] = tiger128,3 [10] = tiger160,3 [11] = tiger192,3 [12] = tiger128,4 [13] = tiger160,4 [14] = tiger192,4 [15] = snefru [16] = gost [17] = adler32 [18] = crc32 [19] = crc32b [20] = haval128,3 [21] = haval160,3 [22] = haval192,3 [23] = haval224,3 [24] = haval256,3 [25] = haval128,4 [26] = haval160,4 [27] = haval192,4 [28] = haval224,4 [29] = haval256,4 [30] = haval128,5 [31] = haval160,5 [32] = haval192,5 [33] = haval224,5 [34] = haval256,5 ) crypt関数 ?php // 暗号化する $cpt = crypt( "文字列" , "暗号化用文字列" ); // 結果出力 print($cpt);? cryptは、暗号化用文字列saltを指定することで暗号化方式を決定します。 引数を指定しない場合は標準のDESベースの暗号化となります。 ですが、標準のDESベースの暗号化の場合、文字列は8文字までしか使用しないため、 最初の8文字が同じ文字列は同じ暗号文が出力されてしまうので注意が必要です。 暗号化方式は以下のとおりです。 暗号化文字列が2文字の場合、標準のDESベース暗号化方式 暗号化文字列が9文字の場合、拡張のDESベース暗号化方式 暗号化文字列が12文字で bold(){$1$}で始まる場合、MD5暗号化方式 暗号化文字列が16文字で bold(){$2$}または bold(){$2a$}で始まる場合、Blowfish暗号化方式 セッション セッションの基本 ?php // セッション開始 session_start(); // セッション変数に値を格納 $_SESSION[ "num" ] = 1; $_SESSION[ "char" ] = c ; $_SESSION[ "string" ] = "test" ; $_SESSION[ "bool" ] = true; // 変数の破棄 unset($_SESSION[ "char" ]); // セッション変数の破棄 session_unset(); // セッション終了 session_destroy();? セッションは、ページ間に渡って特定のユーザであることを認識させるために用いられます。 一般に、ユーザがログインしていることを認識させるために使われます。 Smarty Smarty基本 ?php // Smartyのパスは環境により変わります。(Pearからインストールした場合、このパスになります) require_once "Pearified/Smarty/smarty.class.php" ; // Smartyオブジェクトの生成 function CreateSmartyObj() { $smarty = new Smarty(); // パスの設定 $smarty- template_dir = "template" ; // テンプレートディレクトリのパス $smarty- compile_dir = "compile" ; // コンパイルディレクトリのパス return $smarty;} $smarty = CreateSmartyObj(); // Smartyオブジェクトの生成 // 変数testにアボーン(´・ェ・`)を入れる $smarty- assign( "test" , "アボーン(´・ェ・`)" ); // テンプレートファイルを画面出力する $smarty- display( "index.tpl" );? テンプレートファイルの中身 html body test is {$test}. /body /html 実行結果 test is アボーン(´・ェ・`)
https://w.atwiki.jp/nicepaper/pages/248.html
MySQLのデフォルトの設定ではフィールドデータは1MBまでのパケットしか挿入できません。画像が1MB未満でも他のデータの合計が1MB以上超えると挿入できないので、挿入できるように変更していきます。10月8日記事 目次 MySQLの設定ファイルmy.iniを開く XAMPPなら、コントロールパネルから、configファイルをクリック 照合順序も一応設定する MySQLの設定ファイルmy.iniを開く 必ずバックアップを取るか、設定ファイルの変更部分を#でコメントアウトしておきましょう#がコメントアウトした状態です XAMPPなら、コントロールパネルから、configファイルをクリック [mysqld]の項目で ######(変更点)以下の3行を追加###### innodb_file_format = Barracuda innodb_file_per_table = 1 innodb_large_prefix #max_allowed_packet = 1M がオリジナルで、以下に変更 max_allowed_packet = 8M #innodb_log_file_size = 5M がオリジナルで以下に変更 innodb_log_file_size = 500M #innodb_log_buffer_size = 8M がオリジナルで以下に変更 innodb_log_buffer_size = 800M ※linuxなら、ファイルの場所は /etc/my.cnfです。 照合順序も一応設定する 一応これで挿入はできるようになるが、phpmyadminでは、「操作」の「テーブルオプション」から「照合順序」を切り替えておく。照合順序は utf8mb4_general_ci に設定。※また、コマンドで行う場合にはALTER TABLE テーブル名 COLLATE 新しい照合順序でいけるので、 ALTER TABLE テーブル名 COLLATE utf8mb4_general_ci; でもいいです。これをすることでUTF-8の4バイト文字も扱えるようになります。 以上
https://w.atwiki.jp/m_shige1979/pages/777.html
文字コード 設定 [client] default-character-set = utf8 [mysqld] skip-character-set-client-handshake default-character-set = utf8 character-set-server = utf8 collation-server = utf8_general_ci init-connect = SET NAMES utf8 [mysqldump] default-character-set = utf8 [mysql] default-character-set = utf8
https://w.atwiki.jp/devlabo/pages/13.html
参考ページ CentOS7にMysql5.6インストール(バージョン指定してインストールしたい場合) https //qiita.com/miqpim/items/5c519a9979d9b269d47e 参考にさせていただきました。ありがとうございした。
https://w.atwiki.jp/ohden/pages/521.html
selectの結果をfile出力したい CentOS 6.4 MySQL 5.1.69 selectの結果を出力したい場合は、以下のようなsqlを記述する。 mysql select * from tbl_hoge - into outfile "【出力ファイル名】" fields terminated by 【デリミタ】 ; 要は、出力したいsqlの後ろに『into outfile』以降を追記するだけ。 更に後ろに『optionally enclosed by 【囲み文字】 ;』を書くと、出力カラムの値の前後に付く文字を指定できる。出力する値にデリミタと同じ文字が含まれているなどの場合に必要になる。 e.g.) mysqlのuser情報をcsv形式で出力 mysql select * from mysql.user - into outfile "mysqluser.csv" fields terminated by , ; Query OK, 6 rows affected (0.00 sec) 出力されるのは、実際にmysql DBが存在するpath。 上記の結果は、『/var/lib/mysql/mysqluser.csv』に出力された。 e.g.) # cat mysqluser.csv %,user_redmine,*****************************************,N,N,N,N,N,N,N,N,N,Y,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,,,,,0,0,0,0 %,user_concrete5,*****************************************,N,N,N,N,N,N,N,N,N,Y,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,,,,,0,0,0,0 localhost,hogeuser,*****************************************,N,N,N,N,N,N,N,N,N,Y,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,,,,,0,0,0,0 localhost,mt6user,*****************************************,N,N,N,N,N,N,N,N,N,Y,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,,,,,0,0,0,0 %,root,*****************************************,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,,,,,0,0,0,0 他のDBを選択した場合だと『/var/lib/mysql/【DB名】/【出力file名】』に出力されましたね。 で、file出力しようとすると、こんなんが出て怒られる事がある。 ERROR 1045 (28000) Access denied for user hogeuser @ localhost (using password YES) これはmysqlにloginしているuserがOSのfile systemに対する操作権限を持っていないために起こる。 権限の確認方法は以下のsqlを実行。 mysql select user, file_priv from mysql.user; file_privが『N』になってたらfileの操作権限がありません。 なので、操作権限を与えてあげましょう。 mysql update mysql.user set File_priv= Y where user= 【変更対象のuser名】 ; Query OK, 1 row affected (0.00 sec) Rows matched 1 Changed 1 Warnings 0 この後で再度file出力を試みればちゃんと出力されるハズ。 更新日: 2013年07月12日 (金) 18時10分48秒 名前 コメント すべてのコメントを見る
https://w.atwiki.jp/nicepaper/pages/308.html
テーブルを別に挿入したいけど、紐づけするためにidも挿入したい。そんな場合にauto_incrementで両方やっていいのか?という問題が出てきます。 色々と検索しても問題ないということなのだそうですが、小心者のため保険としてother1のauto_incrementのlastidを取得して、その値も一緒にother2のテーブルの方に挿入していく方法を考えます。11月18日記事 目次 テーブル設計 コード まとめ テーブル設計 other1 CREATE TABLE other1( id INT NOT NULL AUTO_INCREMENT, col1 VARCHAR(64) NOT NULL, col2 INT NOT NULL, PRIMARY KEY(id) ) other2 CREATE TABLE other2( id INT NOT NULL AUTO_INCREMENT, other1_id INT NOT NULL, col3 VARCHAR(64) NOT NULL, col4 INT NOT NULL, PRIMARY KEY(id) ) コード 超手抜きスクリプトにします。ご了承ください。クエリの方をご覧いただければと思います。 index.php !DOCTYPE HTML html head meta charset="utf-8" title 別テーブルのインサート /title /head body form action="complete.php" method="post" label col1文字列 input type="text" name="col1" /label label col2数字 input type="text" name="col2" /label label col3文字列 input type="text" name="col3" /label label col4数字 input type="text" name="col4" /label input type="submit" name="submit" value="挿入" /form /body /html complete.php ?php require ("config.php"); $dsn = mysql dbname= .DB_NAME. ;host= .DB_HOST. ;port= .DB_PORT. ; $user = DB_USER; $password = DB_PASSWORD; try{ $dbh = new PDO($dsn, $user, $password); $stmt = $dbh - prepare("INSERT INTO other1 ( col1 ,col2) VALUES ( col1, col2)"); $stmt- bindParam( col1 , $_POST[ col1 ], PDO PARAM_STR); $stmt- bindParam( col2 , $_POST[ col2 ], PDO PARAM_INT); $stmt- execute();//実行 //ここで最後のauto_incrementのidを取得する $last_id = $dbh- lastInsertId();//このようなPDOでの使い方があります。 //別テーブル挿入 $stmt = $dbh - prepare("INSERT INTO other2 ( other1_id,col3 ,col4) VALUES ( other1_id, col3, col4)"); $stmt- bindParam( other1_id , $last_id, PDO PARAM_INT); $stmt- bindParam( col3 , $_POST[ col3 ], PDO PARAM_STR); $stmt- bindParam( col4 , $_POST[ col4 ], PDO PARAM_INT); $stmt- execute();//実行 print "完了"; }catch (PDOException $e){ print( Connection failed .$e- getMessage()); die(); } ? まとめ PDOではPDO lastInsertIdというものが存在し、それを使えば取得できます。あとはその値をもう一つのテーブルの方にも挿入していけばいいと思います。 以上
https://w.atwiki.jp/tmogmni/pages/6.html
PEARって PEARインストール PEAR DBインストールと動作確認 PEARDBのExceptionラッパー PEAR Calendarインストール PEARって PHP4以降?なら普通に付属してくる、いろんなものの作成を楽にしてくれるクラス群? 日本語マニュアルhttp //pear.php.net/manual/ja/index.php PEARインストール windowsの場合、PHPインストールディレクトリ以下にあるgo-pear.batを叩く。DOS窓が開く。全部エンターキーもしくはYes。(設定項目7のphpパスだけ何故か空だったので、ここだけ設定)PHPインストールフォルダ以下にPEAR_ENV.regができるのでそれをダブルクリック。終了。 Linuxの場合は、PHPをインストールした時点でPEARが使えるようになっているはず? PEAR DBインストールと動作確認 以下コマンド入力してするとネットワークインストールが開始される。 pear install DB ネットワークインストールできない場合は、http //pear.php.net/get/DB-1.7.6.tgz をダウンロードして適当なディレクトリに保存後、以下コマンド。 pear install 保存先ディレクトリ名の絶対パス/DB-1.7.6.tgz php.iniのinclude_pathの部分にpearへのパスが通っているか確認。通ってなければパスを通す。 # windowsの場合 include_path=".;d /php/pear" # linuxの場合 include_path=". /usr/local/lib/php/pear" apache再起動して完了。 以下ソースを書いてmysqlに接続。テーブルの内容が表示されたのでOK。 ?php require_once("DB.php"); $sql = "select * from table"; //mySQL接続 $config = "mysql //username password@hostname/dbname"; $db = DB connect($config, true); $db- setFetchMode(DB_FETCHMODE_ASSOC); $result = $db- query($sql); while( $rows = $result- fetchRow() ) { echo nl2br( print_r( $rows, true )); } ? 前日にいれたSmartyを試したら、「パスが通ってないよ」系のエラーが表示された。 php.iniを確認してみたら、Smartyへのパスがコメントアウトされていた。 インストール時のgo-pear.batを叩いた影響。 で、コメントアウトを外したら、今度はSmartyが動かなかったり、DB.phpが読み込まれなかったり... include_pathが複数行に渡ってある場合はアウトなのか? とりあえず、include_path を一行にまとめたところOKとなった。 × include_path=".;D \php\pear;D \php\includes" include_path=".;D \php\lib\Smarty" ○(一行にまとめた) include_path=".;D \php\pear;D \php\includes;D \php\lib\Smarty" PEARDBのExceptionラッパー 神のカキコミを保管(爽) 小山です。 最近になってようやく PHP5 で実用コードを書き始めています。 PHP5 で PEAR を利用する際にはエラー処理をどのようにするのかが悩まし いところだと思います。PHP5 の例外を全面に使いたいところですが、PEAR パッ ケージのクラスでは当然例外を投げてはくれずに PEAR_Error オブジェクトを 返します。この辺をなるべく簡単な記述で処理したいと思い、私は以下のクラ スを作りました。 ====================================================================== ?php require_once 'PEAR.php'; require_once 'PEAR/Exception.php'; class Hoge_ExceptionWrapper { static public function init() { static $initialized = false; if (!$initialized) { PEAR setErrorHandling(PEAR_ERROR_CALLBACK, array('Hoge_ExceptionWrapper', 'handleError')); $initialized = true; } } static public function handleError($err) { throw self factory($err); } static public function wrap($obj) { if (is_a($obj, 'PEAR')) { $obj- setErrorHandling(PEAR_ERROR_CALLBACK, array('Hoge_ExceptionWrapper', 'handleError')); } } static public function factory($err) { // default exception class $class = 'PEAR_Exception'; return new $class($err- getMessage(), $err- getCode()); } } ? ====================================================================== 使用方法は以下の通りです。 最初に Hoge_ExceptionWrapper init(); を呼んでおくと、デフォルトの $mode で PEAR_Error を返しているクラスは、 PEAR のエラーコールバックの中で例外が throw されるようになります。 $mode を PEAR_ERROR_RETURN に直接指定しているパッケージもあるので、 その場合は従来の PEAR isError() を用いてエラーチェックを行い、 if (PEAR isError($obj)) { Hoge_ExceptionWrapper handleError($obj); } のように例外に変換します。 throw される例外オブジェクトは factory メソッド内で自由に指定できま す。この例では常に PEAR_Exception を返すようになっています。 質問者の想定している回答とは全然違うと思いますが(笑)、この辺の情報が まとまってるのを見たことがなかったので、ちょっと書いてみました。 -- 小山 哲志@ビート・クラフト koyama @ beatcraft.com koyama @ hoge.org PEAR Calendarインストール PEAR DBに習って pear install Calendar と入力したが以下エラーが出た。 Failed to download pear/Calendar within preferred state "stable", latest release is version 0.5.3, stability "beta", use "channel //pear.php.net/Calendar-0.5.3" to install Cannot initialize 'Calendar', invalid or missing package filePackage "Calendar" is not valid install failed 仕方が無いので手動でインストール http //pear.php.net/package/Calendar/download から Calendar-0.5.3.tgz をダウンロード後、適当なディレクトリに移動。以下入力 pear install 格納されてるディレクトリ/Calendar-0.5.3.tgz
https://w.atwiki.jp/smasma/pages/103.html
SMART BOYS ※合コンの設定、女性陣の好みのスマートな男性をゲームで決める メモリーゲーム あるテーマの答えを記憶しながら足すゲーム (足すのは1人3個まで) 失敗したら脱落 最後の1人が女性を独り占めできる 2003.11.17 R1. 好きなマンガ ユースケ・サンタマリア脱落 SMART BOY:拓哉 R2. 寿司のネタ 剛脱落 R3. 日本のバンド 慎吾脱落 R4. アルファベット 吾郎脱落 FR. キッチンにあるもの 中居脱落 2003.11.3 R1. カラオケで歌いたい曲 剛脱落 SMART BOY:慎吾 R2. 体の部分 中居脱落 R3. 好きな動物 トータス松本脱落 R4. 行きたい国 吾郎脱落 FR. カタカナの付く有名人 拓哉脱落 2003.7.14 R1. 好きなくだもの 拓哉脱落 SMART BOY:中居 R2. 行ってみたい都道府県 吾郎脱落 R3. 好きなみそ汁の具 慎吾脱落 FR. 好きな映画のタイトル 剛脱落 2003.6.23 R1. 好きなスポーツ 慎吾脱落 SMART BOY:吾郎 R2. 好きなアニメ 中居脱落 R3. 数字 剛脱落 FR. 好きな給食のメニュー 拓哉脱落
https://w.atwiki.jp/fieds_labo1/pages/2.html
Home / History ■Information └このサイトについて JavaScript ■TOP ├変数と基本 ├制御 ├クッキーとGET ├ボタン ├実装 ├DOM ├全角半角変換 ├日付計算 ├ブログ連携 └javascript Perl ■TOP ├変数と基本 ├制御 ├ファイル ├演算子 ├クッキーとGET ├HTTPレスポンス ├5.8処理系 ├UNIXコマンド ├メール送信 ├定型処理 └perl PHP ■TOP ├変数と基本 ├定義済み変数 ├制御 ├関数 ├セッション ├ハッシュ ├環境 ├File ├File2 ├日本語 ├正規表現 ├正規表現2 ├使わない ├リンク └php Smarty ■TOP ├変数と基本 ├制御 ├修飾子 ├3.1.11 └smarty MySQL ■TOP ├基本 ├SQL |├SHOW |└SELECT └mysql SQLite ■TOP ├基本 ├日本語 ├エラー └sqlite HTML ■TOP ├表示モード ├ブラウザ判別 ├独自拡張 ├フォーム送信制御 ├MIME ├area ├iframe ├title └HTML CSS ■TOP ├セレクタ ├margin ├filter ├cursor ├角丸 ├ボーダー ├font-family ├text-shadow ├resize ├blink ├float ├table ├ボタン └CSS FONT ■TOP ├メーカー使用許諾 ├フリー使用許諾 ├FONT └FONT DashBoard ■TOP ├基本 ├リンク └DashBoard ■リンク
https://w.atwiki.jp/dellkeitai/pages/21.html
▼テーブルの変更 MySQL alter table テーブル名 CHANGE 古いカラム名 新しいカラム名 型情報 ; ▼SQL Server時間単位で解析 select day(update_date), DATEPART (hour,update_date), count(*) from event_log group by day(update_date),DATEPART (hour,update_date) order by 1,2 ▼MySQL 3→12 SQL show processlist; SQL show full processlist; ▼Oracle 設定の確認 select name, type, value from V$SYSTEM_PARAMETER where name = 'processes' or name='sessions' ユーザ名は大文字 select count(*) as SESSION_CNT from v$session where username = 'ユーザ名'; ▼SQL Server select * from sys.dm_exec_sessions where login_name='ユーザ名'; チューニング SQLServer キャッシュを削除 DBCC FREEPROCCACHE DBCC DROPCLEANBUFFERS http //msdn.microsoft.com/ja-jp/library/ms174283.aspx http //msdn.microsoft.com/ja-jp/library/ms187762.aspx GROUP BYした結果の件数の取得方法 ID 日付 データ 1 1/1 AAA 2 1/1 BBB 3 1/2 CCC これを日付でグループ化すると 1/1 2 1/2 1 になる。 この種類の数を知りたい場合は select count(distinct(日付)) from でOK。 項目が複数ある場合 CREATE TABLE TEST_CNT( VAR1 varchar(10) PRIMARY KEY, VAR2 varchar(10), VAR3 varchar(10)); INSERT INTO TEST_CNT VALUES ('1','A1','B1'); INSERT INTO TEST_CNT VALUES ('2','A1','B1'); INSERT INTO TEST_CNT VALUES ('3','A1','B2'); INSERT INTO TEST_CNT VALUES ('4','A1','B2'); INSERT INTO TEST_CNT VALUES ('5','A2','B1'); INSERT INTO TEST_CNT VALUES ('6','A2','B1'); INSERT INTO TEST_CNT VALUES ('7','A2','B2'); INSERT INTO TEST_CNT VALUES ('8','A2','B2'); SELECT VAR2,VAR3 FROM TEST_CNT GROUP BY VAR2,VAR3; ●MySQL SELECT COUNT(DISTINCT VAR2, VAR3) FROM TEST_CNT; ●Oracle SELECT COUNT(DISTINCT VAR2 || VAR3) FROM TEST_CNT; ●SQL Server SELECT COUNT(DISTINCT VAR2 + VAR3) FROM TEST_CNT; ●共通 SELECT COUNT(*) FROM (SELECT COUNT(*) AS CNT FROM TEST_CNT GROUP BY VAR2,VAR3) TEST_CNT; ※「SELECT COUNT(*) AS CNT」にする必要がある。「 AS CNT」が無いとSQL Serverでエラーになる。(Oracle,MySQLはOK) ※最後のに「TEST_CNT」を追加する必要がある。追加しない場合は、MySQL,SQL Serverでエラーになる。(OracleはOK) 最後のに「AS TEST_CNT」を追加するとOracleでエラーになるので、「AS」は不要。 ★第二弾フラグあり CREATE TABLE TEST_CNT2( VAR1 varchar(10) PRIMARY KEY, VAR2 varchar(10), VAR3 varchar(10), FLG varchar(1)); INSERT INTO TEST_CNT2 VALUES ('1','A1','B1','0'); INSERT INTO TEST_CNT2 VALUES ('2','A1','B1','0'); INSERT INTO TEST_CNT2 VALUES ('3','A1','B2','1'); INSERT INTO TEST_CNT2 VALUES ('4','A1','B2','1'); INSERT INTO TEST_CNT2 VALUES ('5','A2','B1','1'); INSERT INTO TEST_CNT2 VALUES ('6','A2','B1','0'); INSERT INTO TEST_CNT2 VALUES ('7','A2','B2','0'); INSERT INTO TEST_CNT2 VALUES ('8','A2','B2','1'); SELECT VAR2,VAR3 FROM TEST_CNT2 WHERE FLG = '1' GROUP BY VAR2,VAR3; SELECT COUNT(*) FROM (SELECT COUNT(*) AS CNT FROM TEST_CNT2 WHERE FLG='1' GROUP BY VAR2,VAR3) TEST_CNT; INSERT/UPDATE MySQL 「on duplicate key update」 create table a1 ( id int primary key, memo1 varchar(10), memo2 varchar(10)) insert into a1 values (1,'c','C') on duplicate key update memo1 ='c', memo2='C' SQL Server UPSERT MERGE merge into a1 using (select 4 as id1) as a2 on a1.id1 = a2.id1 when matched then update set memo2='d', memo3='D' when not matched then insert values (4,'d','D');