タグ

mysqlに関するkurojzのブックマーク (11)

  • MySQLで階層構造を扱うための再帰的なクエリの実装方法と実用例

    1.はじめに RDBでの階層構造の関係を持つデータを扱う上で、 効率的なデータの持ち方や抽出方法について検証を行っています。 結論から先に 階層構造を扱う方法として下記の種類があります。 隣接リスト 経路列挙 入れ子集合 閉包テーブル 再帰クエリ(WITH RECURSIVE)を使うと階層データを扱う上でのパフォーマンスが得られます。 検索性、更新量、データ量など加味すると隣接リストで再帰クエリを用いるのがよさそう。 2.階層構造を持つデータの概要 階層構造を持つデータとは 複数の要素(データ)が親子関係で結びついている構造を持つデータ 1つの要素が複数の要素の親になることができ、 また、1つの要素が複数の子要素を持つこともあります。 ある要素を親として、細分化された子要素であったり、 類似する要素を抽象化したものを親要素とするようなデータ。 階層構造を持つデータの例 組織における事業部、

    MySQLで階層構造を扱うための再帰的なクエリの実装方法と実用例
  • UTF-8のテーブル(MySQL5.6)に竈門禰󠄀豆子が格納できない問題を調べてみた - Qiita

    竈門禰󠄀豆子をMySQL5.6のテーブルにinsertしようとすると正しく格納できず、竈門禰となってしまうケースがあるという話を聞き、調べてみました。 実践 まずは試しにやってみます。 mysql> show create table verification\G *************************** 1. row *************************** Table: verification Create Table: CREATE TABLE `verification` ( `name` varchar(100) COLLATE utf8_bin DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin 1 row in set (0.01 sec) mysql> inse

    UTF-8のテーブル(MySQL5.6)に竈門禰󠄀豆子が格納できない問題を調べてみた - Qiita
  • MySQLノウハウ

    いろいろなからメモってきたメモのメモ。出典を書いておくのを忘れた。思い出し次第補完するかも。 deleteのコストは高いので、無効化を示すフィールドを作ってupdateすべき slow query logに要注意 多くのエントリでほとんどのフィールドが同じ値を持つ場合はインデックスの効果が小さい →複合インデックスの効果が大きい 複合インデックスは指定の順番が大切。AとBという指定の場合、A単独でもインデックスの効果がある。逆は真でない。 インデックスが使われる場面は フィールド値を定数と比較するとき (where name = 'hogehoge') フィールド値でJOINするとき (where a.name = b.name) フィールド値の範囲を求めるとき (<,>,between) LIKE句が文字列から始まるとき (where name like 'hoge%') min(),

  • SQL講座 LEFT JOIN とRIGHT JOIN(表の外部結合)

    「1日1問」仕事や勉強に役立つIT知識を充電! リクルートが運営する「ITキャパチャージ」は、最初に会員登録が必要ですが、無料で仕事から情報処理技術者試験まで幅広く活用できるWebサイトです。IT担当者のスキルアップに役立つ情報処理に関する問題を、毎日1問ずつ、メールやサイト上で提供するサービスです。解答ページはIT初心者でも分かる丁寧な解説つきで、サイト上では過去の問題にも挑戦できます。 また、IT用語が調べられるIT単語帳は、説明も詳しく簡単に調べられ、たいへん便利です。ぜひ、会員登録して活用したいサイトです。 LEFT JOINとRIGHT JOIN 表結合を指定するときにWHERE句とINNER JOINのほかにLEFT JOINとRIGHT JOINで表を結合することができる。これは、表の結合したときに指定された左右いずれかの表を優先して表示を行う指定である。 例題1は売上表と顧

  • MySQL: 同じ値のフィールドをグルーピング – GROUP BY句

    前回はソートした検索結果を出力しましたね。今回は、フィールドの値が同じレコードをグルーピングし、そのレコード集の任意のカラムに対してAVG(),MIN(),MAX(),COUNT(),SUM()…などの関数計算を適応してみます。使用するレコードは以下のものを用います。 mysql> SELECT * FROM product_list -> ORDER BY date, name; +----+-----------+----------+------------+ | id | name | quantity | date | +----+-----------+----------+------------+ | 10 | chocolate | 18 | 2009-11-17 | | 7 | cake | 35 | 2009-11-18 | | 6 | candy | 28 | 20

    MySQL: 同じ値のフィールドをグルーピング – GROUP BY句
    kurojz
    kurojz 2010/12/13
  • MySQLでサービス停止のないALTER TABLEの検討 - SH2の日記

    MySQLでテーブルへのカラム追加、インデックス追加やテーブルの再編成などを行うと、その間テーブルに共有ロックがかかってしまいます。そのためこれらのメンテナンス処理は、通常利用者の少ない深夜早朝帯にサービスを止めて実施する必要があります。日はそれを無停止、オンラインのままでできないかという話題です。 基的なアイデア メンテナンス対象の元テーブルをコピーして、作業用の仮テーブルを作ります 仮テーブルに対して、カラム追加などの変更を加えます その間、元テーブルに対して行われる更新処理について差分を記録しておきます 仮テーブルの変更が終わったら、記録しておいた差分データを仮テーブルに反映します 差分データの反映が終わったら、元テーブルと仮テーブルを入れ替えます これと似たようなことを考えた方は結構いらっしゃるのではないでしょうか。ただ、言うは易し、行うは難しです。整合性がきちんと取れるかどう

    MySQLでサービス停止のないALTER TABLEの検討 - SH2の日記
    kurojz
    kurojz 2010/11/01
  • MySQL: データ検索クエリの基本 – SELECT文、WHERE句、LIKE、IN、BETWEENキーワード

    前回までにテーブルに一定のデータを追加しましたので、今回はそのデータを検索するクエリ文を以下の場合に分けて練習してみます。 SELECT文の基形 – WHERE句 比較文字列内にワイルドカードを指定 – LIKEキーワード、「%」、「_」記号 比較範囲の指定 – BETWEENキーワード 複数のOR結合をIN句でまとめる NOTキーワードで条件の反転 NULLフィールドの検索 – IS NULL、IS NOT NULL まず、扱うテーブル内のレコードの一覧を下記に示します。 mysql> SELECT * FROM book_list; +---------+--------+--------+-------+-----------------------+ | book_id | title | author | price | comments | +---------+------

    MySQL: データ検索クエリの基本 – SELECT文、WHERE句、LIKE、IN、BETWEENキーワード
    kurojz
    kurojz 2010/04/13
  • auto_incrementのカラムに0をインサートする方法 - 朝比奈キョータローのなまらBLOG

    やっと風邪っぽいのが治ってきたな、ってことでなまらブログ再開。 MySQLでauto_incrementのカラムに0をインサートする方法っす。 以下を実行すると可能\。 mysql> SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE=’NO_AUTO_VALUE_ON_ZERO’; このあと、 mysql> insert into ithijikata values(0,8897); とかを実行可能\。 (参考) http://dev.mysql.com/doc/refman/4.1/ja/command-line-options.html

    auto_incrementのカラムに0をインサートする方法 - 朝比奈キョータローのなまらBLOG
    kurojz
    kurojz 2010/03/30
  • MySQLのデータ型

    MySQLで利用することができるデータ型と利用方法について解説します。

    MySQLのデータ型
    kurojz
    kurojz 2010/03/26
  • PHP で使用するデータベースクラス

  • http://www.res-system.com/weblog/item/550

    kurojz
    kurojz 2010/03/18
  • 1