タグ

SQLに関するuchida75cmのブックマーク (18)

  • SQLアンチパターン簡単まとめ

    SQLアンチパターン」について、自分の勉強がてら内容を簡単にまとめました。 「とりあえずSQLは触れてWebアプリが作れる」「シンプルなアプリを実務で作ったことがある」くらいの人が読むととても勉強になると思います。 また、「現場での良くない設計」が詳細に言語化されているので、経験豊富な人でも新たな発見があると思います。 詳しく知りたい方は是非を買って実際に読んでみて欲しいです。 第一章 ジェイウォーク パターン 1カラムにコンマ区切りで値を入れて複数の紐付きを表現しようとする なぜダメか 検索しづらい 文字列カラムの文字数制限という暗黙の制約を受ける バリデーションかけられない 解決策 交差テーブルの作成 第二章 ナイーブツリー パターン 木構造を表現するとき、常に親のみに依存する(parent_idだけ持ってしまう) 隣接リスト なぜダメか 階層を深く掘ろうとするとそのぶんSQLをか

    SQLアンチパターン簡単まとめ
  • 【SQL】サブクエリはWTIH句が最強。可読性こそ現場での正義。|sampling2x

    記事概要 対象者 SQLでのデータ分析を勉強されている方 特に非エンジニアのマーケティング担当者やPMの方 【SQL練習】サンプルデータベースを用意するでMySQL公式のデータベースをローカルに作成されている方には特におすすめです。 目的 サブクエリとは何か理解する。 WITH句を使って可読性の高いサブクエリを作れるようになる! 筆者 コインチェックという暗号資産の会社でマーケティング部の部長をしてます(https://twitter.com/sampling2x) そもそも「サブクエリ」とは? 完結に説明すると、クエリの中にクエリを作ることです。 クエリの中にクエリを作ることで、より複雑なデータを取得することができます。 言葉だけではイメージが湧かないと思うので、以下が具体例になります。 使用テーブルはpaymentテーブルとcustomerテーブルです。 ■paymentテーブル ■

  • 「SQLアンチパターン」。監訳者 和田卓人氏自身による書籍紹介

    アンチパターンに名前を付けることで、コンテキストを共有できて議論がしやすくなる。2月14日、15日に都内で開催されたイベント「Developers Summit 2013」、通称デブサミにおいて、書籍「SQLアンチパターン」の監訳をした和田卓人氏は書の意義をこう強調しました。 「SQLアンチパターン」は、データベースにおける設計からアプリケーションに関わるレイヤまで、開発者が陥りやすいミスや誤解に名前を付けたうえで原因と解決策を詳しく解説しています。 和田氏が指摘するように、これまでデータベースに関するデータ設計などのミスを指摘したり議論するには、その背景を共有するための面倒な説明が必要でした。SQLアンチパターンの登場は、そうした背景を暗黙のうちに共有する手段を与えてくれることになります。書はデータベース分野の古典になる資格を十分に備えているのではないでしょうか。 書籍の監訳者自身が

    「SQLアンチパターン」。監訳者 和田卓人氏自身による書籍紹介
    uchida75cm
    uchida75cm 2013/02/21
    SQLアンチパターンについて
  • データベースの内部動作を知る

    SQLのプログラミングは奥が深い。特にパフォーマンスの観点から、そう言えるだろう。 みなさんご承知の通り、同じ結果を出すプログラムでも、SQLの書き方次第で処理時間に何倍もの差が生じ得る。効率の悪いSQLを書いてしまう原因は、多くの場合、リレーショナルデータベースの内部動作やアプリケーションに関する理解不足である。両者をよく知った上で最適なSQLを書けるようになることは、システムエンジニアとしての重要なスキルの一つである。 特集『基礎から理解するデータベースのしくみ』では、リレーショナルデータベースの内部動作について、基的な部分を分かりやすく解説している。SQLプログラミングに役立つことはもちろん、SQLチューニングやデータベース設計のための基礎知識としても不可欠だ。 イントロダクション ブラックボックスのままでいいの? Part 1:SQL文はどのように実行されるのか SQL実行までの

    データベースの内部動作を知る
  • MySQL/PostgreSQLのコマンドラインの表示結果をみやすくする - chulip.org

    MySQL 末尾の;を\Gにする mysql> select * from users\G PostgreSQL postgres=# \x Expanded display is on.

    MySQL/PostgreSQLのコマンドラインの表示結果をみやすくする - chulip.org
  • GrapeCity

    帳票・レポート 日仕様の帳票開発に必要な機能を搭載したコンポーネント ActiveReports for .NET ActiveReportsJS 表計算・グリッド Excel風のビューと表計算機能を実現するUIコンポーネント SPREAD for Windows Forms SPREAD for ASP.NET SPREAD for WPF SpreadJS 入力支援 快適な入力を実現する日仕様入力コンポーネントセット InputManPlus for Windows Forms InputManPlus for ASP.NET InputManPlus for WPF InputManJS 多段明細 1レコード複数行&日付表示に 最適なグリッドコンポーネント MultiRowPlus for Windows Forms 戻る コンポーネントセット Visual Studioで利用す

    GrapeCity
  • PostgreSQL 編10 - 問い合わせ、抽出、ソート、where、like、order by、desc - SAK Streets

  • PostgreSQL 編16 - 日付計算、曜日、月末日、時間計算、期間計算、日付抽出 - SAK Streets

    PostgreSQL 編16 - 日付計算、曜日、月末日、時間計算、期間計算、日付抽出 ■年の演算(年加算、年減算) ・年の演算を行うには、次のようにする。 select current_timestamp + '1 years'; ?column? ----------------------------- 2003-11-03 17:26:35.4905+09 select current_timestamp + '-1 years'; ?column? ----------------------------- 2001-11-03 17:27:12.8085+09 ■月の演算(月加算、月減算) ・月の演算を行うには、次のようにする。 select current_timestamp + '1 months'; ?column? ---------------------------

  • Works - 逆引きSQL比較

    サンプルテーブルを使用し、実際によく使うであろうSQL文を挙げていきます。 このページでは、PostgreSQL について述べています。 他の RDBMS について見たい場合は、各項のリンク ( ORACLE MSSQL SSA Postgres MySQL Jet ) をクリックしてください。 また、使われている言葉の意味がわからない場合は、共通事項を見てください。 この項で使用するサンプルテーブルについて 日付型データをフォーマットして表示するには? 日付の演算あれこれ INSERT時にキーを自動的に連番で振るには? 同一テーブル内の別の行にある情報を結合して検索するには? 結合条件に合致しなくてもすべての行を表示させるには? SELECT文の中で条件分岐するには? クロス集計の方法は? 最大値と等しいデータを検索するには? AテーブルにあってBテーブルにな

  • Postgresのwhere句で正規表現を使う。 - Bamboo lath by mogumagu

  • PostgreSQLでINSERT時に振られたIDを取得 - Issei.M blog - Netsket Inc.

    PostgreSQLでINSERT時に振られたIDを取得 これはどのRDBMSを使っていてもあると思いますが、 たった今直前にINSERTしたレコードの、SERIAL型のカラムに割り振られた番号などを 取得したい時ってありますよね。 SERIAL型は、MySQLで言うところのAUTO_INCREMENTですが、 MySQLの場合、PHPで処理する時は、mysql_insert_id()を使ったり、 select last_insert_id() from ...を問い合わせれば解決しますが、PostgreSQLだとそう簡単にいかない…。 実際取得する際は、目的のINSERT後に select currval('users_seq') のように、currvalに目的のカラムのシーケンス名を渡してやれば取得できるのですが、 小規模なwebシステムではイマイチスマートじゃない(と思うの

  • SQLの基本とRDBMSのアーキテクチャ

    リレーショナル・データベース管理システム(RDBMS)は,業務アプリケーションにおいて必要不可欠な存在です。そのRDBMSを操作するSQLは,C言語やJavaなどの汎用のプログラミング言語とならんで,プログラマ/SEの必須科目と言えます。Part1では,SQLの基であるSELECT,UPDATE,DELETE,INSERTの文法について,Part2では実用的なSQLのテクニックを学習します。Part3では,RDBMSがどのような原理でデータを検索しているかを学び,RDBMSを使いこなすヒントをつかんでください。 Part1 SQLの基を理解しよう Part2 複雑なSELECT文やSQL高速化のコツ Part3 データベースの仕組みを基礎から学ぶ

    SQLの基本とRDBMSのアーキテクチャ
  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • PostgreSQLの使い方 - シークエンスの設定とか

    トリガの使い方 トリガ(TRIGGER)は、データベースに更新(insert/update/delete)があった時、あらかじめ指定した関数を呼び出す機能です。 一つのレコードに対する更新によって、他のテーブルに対する更新や同じテーブルの別のレコードに対する更新が必要になる場合等に、それを自動的に行なうために使われます。 PostgreSQLでは、C言語またはPL/pgSQLで定義したユーザ定義関数を、トリガで指定することができます。 PL/pgSQLで定義したトリガ用の関数のcreate文と、トリガのcreate文を、下に示します。 reate function set_koushin_datetime() returns opaque as ' begin new.koushin_datetime := ''now''; return new; end; ' language 'plp

  • エンタープライズ:第1回 PostgreSQLで学ぶSQLデータベースの操作 (6/15)

    特集 オープンソースで作るJava+DB 第1回 PostgreSQLで学ぶSQLデータベースの操作 (6/15) 表3に示したKeijiテーブルを作るため方法は、次のような手順になる。 1. 連番のためのシーケンスを作る Keijiテーブルでは、id列を主キーとした。このid列の値は、レコードが追加されるたびに、1、2、…と自動的に連番を振りたい。 このような連番を振りたい場合、PostgreSQLでは「シーケンス」という仕組みを使う。シーケンスとは、連番を自動発生させるものだ。また作成するためには、CREATE SEQUENCE文を使う。たとえば、KeijiIDという名前のシーケンスを作り初期値を1から始めるには、次のようにすればよい。 One Point! ここでは、KeijiIDという名前を付けたが、シーケンス名は任意である。 PostgreSQLでは、大文字小文字の区別はされない

  • blog.katsuma.tv

    前回、JavaScriptMap Reduceのコードが書けるHadoop Streamingについて紹介しました。 標準入出力さえサポートされてあれば、任意のコードでMap Reduuceの処理が書ける、というものでしたが、エンジニアはそもそも面倒くさがり。コードも書くのも面倒です。 と、いうわけで、今回はもうコードすら書かずにSQLライクでMap ReduceできるHiveというプロダクトについて、まとめたいと思います。 Hive Hiveとは、簡単に言うとHadoop上で動作するRDBのようなものです。 HDFSなどの分散ファイルシステム上に存在するデータに対して、HiveQLというSQLライクな言語で操作できます。 で、面白いのがHiveQLの操作は基的にMap Reduceのラッパーになっていること。 要するに、SELECT文実行すると裏でMap&Reduceのタスクが走り出

  • SQLライクにHadoop Hiveを使い倒す!

    パーティションを利用する 今回は少し凝ったテーブルを定義をしてみましょう。 郵便番号データは毎月更新されるので、テーブル指定時にバージョンも指定できるようにします。このような場合、Hiveではパーティションを使います。 以下に郵便番号を保存するテーブル「zip」を定義しますが、日付型DATEのパーティションverを設定するようにします。 hive> CREATE TABLE zip (zip STRING, pref INT, city STRING, town STRING) > PARTITIONED BY (ver DATE) > ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' > LINES TERMINATED BY '\n'; OK Time taken: 0.128 seconds

    SQLライクにHadoop Hiveを使い倒す!
  • 1