タグ

sqlに関するtyoro1210のブックマーク (24)

  • papa.to. / ぱぱネット / ぱぱねっと / パパネット

    Papanet Productsぱぱネットで開発している電子工作関連ガジェット キーワード: 電子工作, IoT, Arduino, ESP8266, Processing あいあんの雑記帳鉄道写真、フィギュア写真で有名なあいあん氏のブログです キーワード: 旅、鉄道、写真、フィギュア、トミカ、アニメ 路線別撮影地ともりん先生のまとめた鉄マニア垂涎の路線別撮影地ガイドです TVまとめ流行のテレビ番組の 内容を圧縮してお届けするサイトです 技術Twitterクローラ、MongoDB、自然文要約 顔パクTwitterアイコンが画像的に似ている人を探せる検索エンジンです 技術Twitterクローラ、MongoDB、画像特徴点抽出、ヒストグラム類似度 ともりんの秘密日記JR,私鉄全線完乗を達成したともりん先生のブログです キーワード: 鉄道、のりつぶし、天文、写真、進学塾経営 聖☆立川デイズ(

  • SQLインジェクションゴルフ - なんと3文字で認証回避が可能に

    昨日のエントリ「SQLインジェクションゴルフ - 認証回避の攻撃文字列はどこまで短くできるか?」にて、認証回避の攻撃文字列が5文字にできる(「'OR'1」)ことを示しましたが、@masa141421356さんと、やまざきさん(お二人とも拙著のレビュアーです)から、idとpwdにまたがった攻撃例を示していただきました。やまざきさんの例は、MySQL限定ながら、なんと3文字です。これはすごい。 @masa141421356さんの攻撃例 @masa141421356さんのツイートを引用します。 @ockeghem 大抵のDBでid=''OR' AND pwd='>' ' が通ると思います(id側に「'OR」, pwd側に「>' 」で6文字)。長さ0の文字列がNULL扱いされないDBなら最後のスペースを消して5文字です。 — masa141421356 (@masa141421356) June

  • MySQLのorder by rand() - jazzanovaのブログ

    インデックスをかけてるテーブルでも、結局ランダムなので全件捜査してから値を返す。プライマリーキーに対して rand() する場合でも O(1) ではないのですよね。なんか回避する方法があったりするのかな。 自分は良くorder by rand()を使ってます。 んで、id:naoya氏も懸念してるようにテーブルサイズが増大した時の動作とかその辺がorder by rand()だときついです。 追記 下記の方法はidに欠番があったりすると使い物になりません。 idに欠番がなく、idに数値を使ってる場合のみ有効です。悪しからず。 なので自分の場合は set @id = floor(rand()*n)+1; select id from entry where id = @id; ってな感じでやってます。 純粋にorder by rand()を使うより体感的にかなり高速だと思うけどどれくらい早く

    MySQLのorder by rand() - jazzanovaのブログ
  • Using filesort

    去年ソートに関する記事を書いたが、今日はその続きである。 MySQLでEXPLAIN SELECT...を実行するとExtraフィールドでよく見かける「Using filesort」という文字列。Filesortって一体なんだろう?と思ったことはないだろうか。単刀直入に言ってFilesortの正体はクイックソートである。 クエリにORDER BYが含まれる場合、MySQLはある程度の大きさまでは全てメモリ内でクイックソートを処理する。ある程度の大きさとはsort_buffer_sizeであり、これはセッションごとに変更可能である。ソートに必要なメモリがsort_buffer_sizeより大きくなると、テンポラリファイル(テンポラリテーブルではない)が作成され、メモリとファイルを併用してクイックソートが実行される。 Filesortは全てのソート処理において実行されるわけではない。前回の記事

    Using filesort
    tyoro1210
    tyoro1210 2011/01/07
    なんか美しくないし もっと整理できないかと思ったけど、サブクエリ内でlimitするしかねぇか。
  • MySQL FULLTEXT Ngram : LIKE検索より数十倍高速な、お手軽 日本語全文検索 について|blog|たたみラボ

    tatamilab.jp

  • PHPのセッション管理をMysqlで行ったときのよく分からない不具合 - ぬかるむ日々

    CREATE TABLE session` ( `id` CHAR(32) NOT NULL, `data` TEXT, `update` INT(10) DEFAULT 0, PRIMARY KEY (`id`) ) TYPE=MyISAM; という感じでセッション管理用のテーブルをつくって、 <?php class mySession { var $_name; var $_path; function __constructor() { $this->mySession(); } function mySession() { } function start() { session_set_save_handler( array(&$this, 'open'), array(&$this, 'close'), array(&$this, 'read'), array(&$this,

    PHPのセッション管理をMysqlで行ったときのよく分からない不具合 - ぬかるむ日々
  • PostgreSQL 8.1.3から8.1.4の変更点

    $Id$ リリース日:2006/05/23 掲載日:2006/05/24 PostgreSQL 8.1.3から 8.1.4 の変更点 2006-05-24、バージョン8.1.4、8.0.8、7.4.13、7.3.15 のリリースがありました。以下に変更点をまとめます。各項目の末尾に適用されるバージョンを記載しております。ドキュメントはPostgreSQLのリリースノート/HISTORYファイルを元に作成しています。 セキュリティに関する修正 常にサーバ側で無効なコードのマルチバイト文字を拒否するように修正されました (8.1系〜7.3系) これにより、一律にすべての文字エンコーディングのすべてのテキスト入力に対して検査が行われ、単に警告が出るのではなく常にエラーが出るようになりました。この変更は CVE-2006-2313 に記述されているような SQLインジェクション攻撃に対抗するもの

    tyoro1210
    tyoro1210 2010/02/12
    「文字列リテラル中の安全でない「\'」を拒否する機能が追加されました (8.1系~7.3系)」
  • SQLiteのLIKEは、デフォルトだと大文字小文字が区別されない。 - Enjoy*Study

    大文字小文字を区別なく検索したいがために、わざわざUPPER()なんぞかましてたりしたのですが、そもそもそんな必要もなく大文字小文字区別なくひっかかるとのこと。 で、大文字小文字区別したい場合は、、 コンパイル時に、-DSQLITE_CASE_SENSITIVE_LIKE を指定する PRAGMA case_sensitive_like = 1 を実行する の2種類の方法がある模様。 コンパイル時の方は、試していないが、PRAGMAの方は試してみて、実際に大文字小文字が区別されることを確認しました。(Firefoxに同梱されているSQLite3.3.5にて) INDEXを効かせるために大文字小文字を区別したくないって時はあるけども、そうじゃなくても"PRAGMA case_sensitive_like = 1"にしておいたほうが、検索時に行われる処理が少なくてちょっとは早くなったりするのだ

    SQLiteのLIKEは、デフォルトだと大文字小文字が区別されない。 - Enjoy*Study
  • SQL : 日付関数

    select Date() as 日付部分 ,Time() as 時間部分 ,Now() as 日付と時間1 ,Now as 日付と時間2 ,Year('2010/01/21 1:02:03') as 年1 ,Month('2010/01/21 1:02:03') as 月1 ,Day('2010/01/21 1:02:03') as 日1 ,Hour('2010/01/21 1:02:03') as 時1 ,Minute('2010/01/21 1:02:03') as 分1 ,Second('2010/01/21 1:02:03') as 秒1 ,Now() + 1 as 日数加算1 ,DateAdd('d', 1, Now()) as 日数加算2 ,DateAdd('m', -1, Now()) as 月数加算 ,DateAdd('yyyy', 1, Now()) as 年数加算 ,

  • Comparison of different SQL implementations

    The goal of this page was to gather information relevant for people who are porting SQL from one product to another and/or are interested in possibilities and limits of 'cross-product' SQL. The following tables compare how different DBMS products handled various SQL (and related) features. If possible, the tables also stated how the implementations should do things, according to the SQL standard.

  • 最近知ったSQL〜複数のINSERTとUPDATE〜

    私がSQLに疎いからかもしれないのですが、最近知ったINSERT文とUPDATE文の使い方をご紹介します。 うっすらとできるんじゃないかナ~と思っていたら、やっぱりできました。 INSERT文 INSERT-SELECT文(SELECT結果を一括でINSERTする)は知ってたのですが、INSERT-INTO文で直接値を指定する場合に、1レコードずつINSERT文を流すのって効率が悪いと感じていたら、まとめて複数行挿入する書式がありました。 INSERT INTO TABLE_NAME1 ('COLUMN_A', 'COLUMN_B') VALUES (VALUE_A11, VALUE_B12), (VALUE_A21, VALUE_B22); MySQL:対応「MySQL :: MySQL 5.1 リファレンスマニュアル :: 12.2.4 INSERT 構文」 VALUES 構文を利用す

    最近知ったSQL〜複数のINSERTとUPDATE〜
  • なぜMySQLのサブクエリは遅いのか。

    よくMySQLはサブクエリが弱いと言われるが、これは当だろうか?半分は当で半分は嘘である。MySQLのサブクエリだってなんでもかんでも遅いわけではない。落とし穴をしっかり避け、使いどころを間違えなければサブクエリも高速に実行できるのである。今日はMySQLがどんな風にサブクエリを実行し、どのような場合に遅いのかということについて説明しよう。 EXPLAINで実行計画を調べた際に、select_typeにはクエリの種類が表示されるのだが、代表的なサブクエリには次の3つのパターンがある。 SUBQUERY DEPENDENT SUBQUERY DERIVED 結論から言おう。遅いのは2番目、DEPENDENT SUBQUERYである。DEPENDENT SUBQUERYとはいわゆる相関サブクエリに相当するもので、サブクエリにおいて外部クエリのカラムを参照しているサブクエリのことである。そし

    なぜMySQLのサブクエリは遅いのか。
    tyoro1210
    tyoro1210 2009/09/16
    『MySQLは内部的にINを直接処理することができないので、EXISTSに変換することでSQL的には相関のないサブクエリも相関サブクエリになってしまう』
  • CREATE SEQUENCE

    概要CREATE [ TEMPORARY | TEMP ] SEQUENCE name [ INCREMENT [ BY ] increment ] [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ] [ START [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE ] 説明CREATE SEQUENCEは、新しいシーケンス番号生成機構を作成します。 これは、nameという名前を持った一行だけの新しい特殊なテーブルの作成と初期化を行います。 シーケンス番号生成機構は、このコマンドを実行したユーザによって所有されます。 スキーマ名が与えられている場合、そのシーケンスは指定されたスキーマで作成されます。 スキーマ名がなければ、シーケンスは現在のスキーマで作成

  • SQLite で auto-increment なフィールドを作成する方法

    SQLite で auto-increment なフィールドを作成する方法 2006-02-12-1: [SQLite][PHP][MySQL] PHP のマニュアルの sqlite_last_insert_rowid の項目を見ていたら Tip: You can create auto-increment fields in SQLite by declaring them as INTEGER PRIMARY KEY in your table schema. つまり,SQLite で auto-increment なフィールドを作りたければ, INTEGER PRIMARY KEY を指定してあげればいいらしい. このような記述を見つけたのでテストしてみた. - SQLite 2.x の場合 $ sqlite test.db SQLite version 2.8.16 Enter "

  • SQLエスケープにおける「\」の取り扱い

    補足 この記事は旧徳丸浩の日記からの転載です。元URL、アーカイブはてなブックマーク1、はてなブックマーク2。 備忘のため転載いたしますが、この記事は2008年6月2日に公開されたもので、当時の徳丸の考えを示すものを、基的に内容を変更せずにそのまま転載するものです。 補足終わり 昨日のエントリ(徳丸浩の日記 - そろそろSQLエスケープに関して一言いっとくか - SQLのエスケープ再考)は思いがけず多くの方に読んでいただいた。ありがとうございます。その中で高木浩光氏からブクマコメントを頂戴した。 \がescape用文字のDBで\のescapeが必須になる理由が明確に書かれてない。\'が与えられたとき'だけescapeすると…。自作escapeは危うい。「安全な…作り方」3版で追加の「3.失敗例」ではDBで用意されたescape機能しか推奨していない このうち、まず「\」のエスケープが必

  • そろそろSQLインジェクションについてひとこと言っておくか。 - だらだらやるよ。

    ちょっとSQL Injectionについて未だに情報が少ないのにいらついていたので。 というか対策ばっかりで何ができますよーってのはほとんどログインできますよーくらいじゃねえか。 具体的な攻撃方法もわからずにぼんやり対策してるだけの人多いような気がするのでちょっと攻撃方法書いとく。 SQLインジェクションってなに? アプリのユーザ入力領域からSQL文を注入されてしまうこと。 サーバでこういうコード書いてると、user_nameに「' or '1'='1';#」とか書かれて素敵なことになる。(mysqlの場合) String sql = "SELECT * FROM users WHERE = name = '"+user_name+"' AND password='"+user_password+"'"; 簡単に言うと、開発者の意図しないSQLをユーザの入力によって行う攻撃手法ですね。 S

    そろそろSQLインジェクションについてひとこと言っておくか。 - だらだらやるよ。
  • http://www.mysqlpracticewiki.com/index.php/Select_type

  • TkSQLite - mynote

    Download† Old versions Tcl script http://reddog.s35.xrea.com/software/tksqlite-0.3.2.zip http://reddog.s35.xrea.com/software/tksqlite-0.4.1.zip http://reddog.s35.xrea.com/software/tksqlite-0.4.2.zip http://reddog.s35.xrea.com/software/tksqlite-0.4.3.zip http://reddog.s35.xrea.com/software/tksqlite-0.4.4.zip http://reddog.s35.xrea.com/software/tksqlite-0.4.5.zip http://reddog.s35.xrea.com/software/

    tyoro1210
    tyoro1210 2009/02/09
    これが一番使い易いようだ。
  • SQLiteManager - administration de bases de données SQLite.

    Principales fonctionnalitées : Gestion de plusieurs base de données (Création, accès ou upload de base) Gestion des bases de donnèes attachées Création, modification et suppression de tables et indexes. Insertion, modification, suppression d'enregistrement dans ces tables Gestion des Vues, possibilités de créer une vue a partir d'une requête SELECT Gestion des Trigger Gestion des fonctions utilisa

  • ADODB Manual

    PHPのためのADOdbライブラリ original document ADOdb関連文書 V4.62 2 Apr 2005 (c) 2000-2005 John Lim (jlim#natsoft.com) このソフトウェアはBSDスタイルとLGPLを使いデュアルライセンスされています。これはコンパイルされて所有権のある市販製品で使えることを意味しています。 役に立つADOdbのリンク: Download   Other Docs 序文 ユニークな特徴 どんなふうに人々はADOdbを使っているか 機能要望とバグ報告 インストール 最小インストール コードの初期化とデータベースへの接続 データソース名(DSN)   接続例 高速ADOdb - チューニングTips 安全なADOdbのハッキングと変更 PHP5の機能 foreach i