シングスブログ 中小企業のマーケティングやブランディングのコンサルティング。事業開発 (ビジネスモデルの開発)、デジタルマーケティングやウェブサイト改善など事業の持続的・長期的な成長・発展に貢献できるサービスを提供しています。
シングスブログ 中小企業のマーケティングやブランディングのコンサルティング。事業開発 (ビジネスモデルの開発)、デジタルマーケティングやウェブサイト改善など事業の持続的・長期的な成長・発展に貢献できるサービスを提供しています。
はじめに にゃーん この記事は、PostgreSQL 10全部ぬこ Advent Calendar 2017 の11日目のエントリです。 DROP FUNCTIONで複数の関数を削除 たとえば、こんな複数の関数が登録されているとする。 (https://github.com/nuko-yokohama/pg_scripts) func=# \df List of functions Schema | Name | Result data type | Argument data types | Type --------+----------+------------------+-----------------------------------------+-------- public | tategaki | text | src text | normal public | t
こんにちは。Oracle挑戦中の松田です。 今までまったく触ったことのなかったOracleに初めて触れ、頭が混乱中なので備忘録がわりにブログに書き留めておきます。 特に悩んだのがLIMIT関連。 何故かOracleってLIMITが無いんですね。LIMITに慣れていると、なぜ存在していないのかが不思議でしょうがありません。ほんとどうしてなんでしょ? ・memberテーブルから LIMIT 10 で結果取得 SELECT * FROM member WHERE ROWNUM <= 10 ROWNUM ・・・ 抽出した結果セットに勝手に付けられるレコード番号 基本はこれを使って結果セットの切り分けをするらしい。 ・memberテーブルから LIMIT 10, OFFSET 5 で結果取得 SELECT * FROM ( SELECT id, category, age, ROWNUM line
SERVEROUTPUT システム変数 SERVEROUTPUT は DBMS_OUTPUT による PL/SQL の標準出力を非表示にするか、出力を許可して任意にバッファサイズを設定する。 短縮形は SERVEROUT デフォルト値 OFF SET SERVEROUTPUT コマンド SET SERVEROUTPUT コマンドの構文 SET SERVEROUTPUT ON [SIZE n] SET SERVEROUTPUT ON [SIZE n] [ FORMAT 表示制御オプション ] SET SERVEROUTPUT OFF SET SERVEROUTPUT ON UNLIMITED (Oracle 10g R2〜) 短縮形 SET SERVEROUT ON [SIZE n] SET SERVEROUT ON [SIZE n] [ FORMAT 表示制御オプション ] SET SER
サービス・リニューアルの際のデータ移行とか、運用・保守フェーズなんかで、コマンドラインからデータベースの中身を調べてたりする時、しばしばSELECT句やWHERE句のカラムやテーブル指定を動的に行いたい!…というシーンに出くわす。 アプリケーション側の開発であれば、使用しているプログラム言語のメソッドを使ったり、OSのシェルコマンド使ったりしてSQLを動的に生成すれば対応するのは造作もないんだが、恒久的には発生しない一時的なデータ調査作業でそんな処理を書くのは非効率的で面倒でもある。 もうコンソールでDBにログインしてしまっているし…とかいうケースならなおさら、もうそのままSQLコマンドで完結してしまいたいものだろう。 そんな時に有効ななのが動的SQLだ。まぁ、ストアドプロシージャを使うという手もあるんだが、一回こっきり的な作業をそこまで大事(おおごと)にしたくもないっちゅーケースはままあ
はじめに 弊社のデータ分析案件において、RedshiftにてSQLを実行してデータを抽出することが増えてまいりました。SQLはデータの抽出には強力なのですが、JavaやRubyなどのプログラミング言語と比べると独特であることも事実です。 例えば(PL/SQLなどは除いてですが) ループがない 変数に代入して次の処理に行くことができない メソッドやクラスに処理を分割できない などです。 これらの特徴からSQLでデータ抽出を行う為には、JavaやRubyなどとは異なった手法を取る必要があります。そこで「JavaやRubyとかでは・・・というやり方でやるのだけど、SQLではどうやるのだろう」というケースについて、シリーズ形式で何回かに分けて取り上げたいと思います。 尚、SQLの基本的な構文(select、join、group byなど)については説明しません。またデータベースの種類に関わらず使用
A5:SQL Mk-2のアップデート方法の覚書きです。 A5:SQL Mk-2(Version 2.13.3)→ A5:SQL Mk-2(Version 2.14.1)への アップデートを以下の手順で行いました。 対象ツール A5:SQL Mk-2 手順 A5:SQL Mk-2のサイトより、A5:SQL Mk-2の最新版のzipファイルを取得します。 https://a5m2.mmatsubara.com/ 任意の場所で展開します。 古いバージョンのA5:SQL Mk-2をzip化します(※万が一のことがあった時のバックアップ用です。) 古いバージョンのA5:SQL Mk-2一式を破棄し、新しいバージョンのA5:SQL Mk-2一式を配置します。(自分はProgram Files配下に置いています。) 起動用の「A5M2.exe」のショートカットを作成している場合は、古いものを破棄し、 新
Oracle で排他ロックをかける場合には「FOR UPDATE」を使用します。 通常は「COMMIT」もしくは「ROLLBACK」にてそのロックは解除されますが、 何らかの問題があって解除されなかった場合には当該セッションを削除することでロックを解除することができます。 【操作手順】 まずはロックをしているセッションを突き止めます。 以下のSQLを実行し、該当のセッションの「SID」と「SERIAL#」を確認します。 SELECT SID ,SERIAL# ,SADDR ,MACHINE ,USERNAME ,PROGRAM FROM V$SESSION WHERE SID = ANY(SELECT SID FROM V$LOCK WHERE TYPE IN ('TX','TM') );
Oracle・PostgreSQL・MySQL・SQLServer・H2Databseで、JDBCを使って実行計画を取得する方法を調べたのでさらすことにします。 SQLServerだけ少し手こずりましたが他は簡単でした。 とりあえず取得しているだけで、僕はOracle以外は全く読めないので間違っていたらごめんなさい。 public static void explainOracle(String sql) throws SQLException { System.out.println("■Oracle 実行計画取得:" + sql); try (Connection connection = DriverManager.getConnection(ORACLE_URL, ORACLE_USER, ORACLE_PASSWORD)) { connection.setAutoCommit(f
NOT IN (NULL) に苦しめられる昼下がり sql文のnot inとnull | アララグループの技術者ブログ 上記リンクの方々のように NULLを含むサブクエリの結果などをNOT INに渡した場合、 期待していたクエリの結果が得られないことがある。 検証 postgresql(9.6.1)で確認 以下のテーブルを準備する --日本で作ってるフルーツ一覧 CREATE TABLE japan_fruits (name VARCHAR(10)); INSERT INTO japan_fruits VALUES ('りんご'),('ぶどう'),('みかん'); --フィリピンで作ってるフルーツ一覧 CREATE TABLE Philippines_fruits(name VARCHAR(10)); INSERT INTO Philippines_fruits VALUES ('バナナ'
NULLIF 関数って動作の説明は多いけど、それを何に使えばいいのかってあんまり理解されてないんじゃないかと思う。 ってことで、NULLIF 関数の実用的な使い方をいくつか紹介する。 NULLIF 関数の動作 まずは、NULLIF 関数の動作から。 NULLIF 関数は引数を 2 つとって、引数が等しい場合に NULL を返し、異なる場合に第一引数を返すだけの、動作自体はかなり簡単な関数。 例えば、 SELECT col_a, col_b, NULLIF(col_a, col_b) FROM SomeTable; これを実行すると、次のような結果が得られる。 col_a col_b NULLIF(col_a, col_b) 10 10 NULL 10 0 10 0 10 0 NULL NULL NULL また、プログラマのためのSQL 第2版では、CASE 式を用いて、 NULLIF(V1
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く