database

列の別名

「Joe Celko / プログラマのためのSQL 第2版」でSQL覚えたくちなので、SELECT句は最後に実行されるはず、という理解だったんですが、Teradata Databaseでは、group byやorder byでも別名使えます。というか、これが通るのにはびっくりしたw select 1 as one,…

SQLiteのデータ・ディクショナリ的なもの

テーブルのカラム情報が知りたいときに、.table テーブル名だとテーブル名しか帰ってこないのですが、SQLite Frequently Asked Questions によると、永続的なもの(テーブル/インデックス)はSQLITE_MASTERに、一時表なんかはSQLITE_TEMP_MASTERに、情報が格納…

理事長のSQLパズル:階層つき分類の粒度・解答編

ちゃんと回答する前に解答が出てしまいました…。 さて、A案の擁護はこの程度で終えるとして、最後に、はてなブックマークで kamataro さんからコメントを戴いた、A案とB案の併用、つまり、3列 + 1列の合計4列持つ方法はどうか、という質問にお答えしましょう…

SETテーブルとMULTISETテーブル

何が違うのか判らなかったんですが、INSERT時に一意制約エラーが出るか出ないかが違う模様。 前提 一意制約エラーはUNIQUEになることを制約で保証している列に対して、既存の値をインサートしようとすると発生します。 Teradataでは、UPI(Unique Primary Ind…

UTF8の文字エクスポート幅

先日のJDBCのクライアント文字セットにUTF8を指定するとCHARが滅茶苦茶になる件は、ちゃんとドキュメント見たら載ってました。 The recommended workaround is to cast the char field to a varchar.え?VARCHARにするの? • Using cast SELECT CAST(col1 AS…

サーバー文字セットがUnicodeなのでクライアント文字セットをUTF-8にしたら、判定文が軒並みスルーされたでござるの巻

JDBC Type4ドライバー(Implementation-Version: 12.00.00.01)でCHAR型の文字長計算があれな件。 準備 サーバー文字セットがLATINの列を持つテーブルを用意する。(Teradata Sql Assistant等を使って、JDBC以外から実行) CREATE MULTISET TABLE FOO ( COL1 CHA…

S2JDBCで@GeneratedValueなカラムしかないエンティティをインサートしてみる。

たまたまDialectの調査してたら気づいた。 create table FOO (ID int not null primary key generated always as identity); こんなテーブル定義にあうようなエンティティを作ってみる。 @Entity public class Foo { @Id @GeneratedValue public int id; } …

S2JDBC用のTeradataDialect調査

中の人はstandardDialectで問題ないって言ってたけど、折角だからそれっぽく作ってみる。 2008-07-29追記 convertGetCountSql order by句対策が必要 convertLimitSql distinct, order by句対策が必要 getDefaultGenerationType GenerationType#IDENTITY getI…

RI用のテーブル名は元テーブル名の28字まででござるの巻

CREATE TABLE AAAAAAAAAABBBBBBBBBBCCCCCCCCCC ( COL1 CHAR(2) CHARACTER SET LATIN PRIMARY KEY ) ; ALTER TABLE AAAAAAAAAABBBBBBBBBBCCCCCCCCCC ADD CONSTRAINT FOO FOREIGN KEY (COL1) REFERENCES HOGE(FUGA) ; > AAAAAAAAAABBBBBBBBBBCCCCCCCC_0テーブ…

参照制約をつけたら追加/削除できなくなったでござるの巻

事象 これはOKなケース CREATE TABLE table1 (col1 VARCHAR(5) PRIMARY KEY); CREATE TABLE table2 (col2 VARCHAR(5) PRIMARY KEY); CREATE TABLE table3 ( col3 VARCHAR(5) REFERENCES table1(col1), col4 VARCHAR(5) REFERENCES table2(col2), primary key…

Teradata Databaseの勉強 其の1

特徴 徹底した多重化 冗長性=信頼性 並列処理に特化 スケールアウトで線形に性能増加 分散配置に関する管理が不要 データは勝手にハッシュ分散される 領域管理は大雑把でかなり楽そう 空いてる領域を勝手に使うかんじ? チューニングが自動、データ・バラン…

Oracle使ってるときにO/R Mapperが変なテーブルを引っ掛けてくる時の対応

結論から言うと、RECYCLEBINの中身を引っ張ってきてるので、フラッシュバックを無効にする。HibernateとS2Dao-codegenで発生するのを確認。多分他のでも。無効にする方法は下のどちらか。 init.oraに"RECYCLEBIN = OFF"を追加する。 ALTER SYSTEM SET "_recy…

Thinドライバ用のJDBC URL

問題 OracleのJDBC URLは、jdbc:oracle:driver_type:[username/password]@database_specifierという形式になっています。 なので、Type4ドライバ(Thinドライバ)の場合、以下のような書き方をしていると思います。 jdbc:oracle:thin:@hogehoge この場合のho…

TNSNAMES.ORAの字下げ

ORA-12154 TNS:指定された接続識別子を解決できませんでした TNSNAMES.ORAを手で修正する場合、先頭にインデント用のスペースを入れないと、ORA-12154エラーが発生します。 メールの本文に接続記述子をコピーして送ったりすると、インデントが失われる事があ…

Net Managerの文字数制限

Net Managerを使って、接続記述子を設定する場合、サービス名/SIDが9文字以上だと入力エラーになります。 OTN Japan - 404 ErrorTNSNAMES.ORAに正しいサービス名/SIDが設定されていれば問題ないので、手で直すのが早いと思います。 Net Managerを再起動すれ…

H2のCASE文で集約関数使ったときのおかしな挙動

CASE 集約関数 WHEN ... と言う書き方をするとちゃんと動いてくれないという話。『ジョー・セルコ / SQLパズル第2版(ISBN:9784798114132)』見ながらH2で確認してたら、CASE文の挙動がおかしいような。SQL select course_nbr, min(teacher_name) as col2, cas…

アクセス制御

アプリケーションサーバーからの接続だけを許可する等。sqlnet.oraを編集 TCP.VALIDNODE_CHECKING = {YES|NO} YESなら、以降のオプションをチェックする。 TCP.EXCLUDED_NODES = (IP or ホスト名[, IP or ホスト名]*) アクセス禁止 TCP.INVITED_NODES = (IP …

Oracleの起動

1. Oracleの起動 # sqlplus /nolog SQL> CONN / AS SYSDBA SQL> STARTUP2. listenerの起動 # lsnrctl start

楽観的ロック

時刻印アルゴリズム - サイエンスかリアルか エロくないけど勝手に回答してみる。 JoJo好きだと、第5部のvsボス戦でのポルナレフ戦法に似ているというと判りやすいかも?w SELECTする。 SELECTしたデータを編集する。 再度SELECTする。 1と3とでバージョンID…

バックアップ/レストア

バックアップ mysqldump db名 > パス -u ユーザー名 -p レストア mysql db名 < パス -u ユーザー名 -p 参考文献 mysqldumpでバックアップ&復元 - phpspot

体系的に学ぶデータベースのしくみ(ISBN:4891004754)

DBの理論の本で、ちゃんとした本を探すコツ、ってなんだろう? 少なくとも、第3正規形(3NF)とBCNFの違いがちゃんと説明されている*1、というのは一つの基準になると思います。安かったとはいえ、この本を買った基準は、3NFとBCNFの比較にページ割いている…

Oracle10g Real Application Clusters 実践ガイド(ISBN:4774122157)

買ったのはいいけど当分積読。 他の読み終わったらまとめて読もう。

SQLでの正規表現

@ITのSQLクリニックを見て愕然。SQL99の正規表現検索はSIMILAR述語じゃないのか? http://www.atmarkit.co.jp/fnetwork/tokusyuu/01sql99/sql99_2a.htmlまあ、SUBSTR、INSTR、REPLACEと合わせての対応だから、これはこれでいいのか?

Oracle9i以降のコンポジット索引

複合索引(コンポジット索引)が有効なケース (3/3):Oracle SQLチューニング講座(8) - @ITOracle9i以降では、コンポジット索引内の先頭列がWHERE句の条件列に含まれていなくても、INDEX_SSヒントを使用することで、そのコンポジット索引を使用してくれる…

DBArtisan 5.4 無償配布

たまたまRDB用のツールを検索してたら、こんなの見つけました。 『DBArtisan 5.4』を、機能制限なし/期間限定なしで無償配布、だそうです。 ちなみに、最新の製品版は7.2とのことで、どれだけ違うんでしょう?? 同じ開発元のER/Studioは、仕事でほんの触り…

DB2が1,980円

DB2使ったことないのでいまいち有難みが湧きませんが、安いのは確か。 でもRDBMSの勉強と言うことなら、フリーのでもいいような気が。 DB2使う機会があれば考えます。プレスリリース - 「IBM DB2(R) Personal Developer's Edition Lite V8.2」