SQL
例えば以下のようなテーブルがあるとします。(全てINTEGER型) key num1 num2 1 10 3 2 10 8 3 30 11 で、num2 の num1 に対する割合をSQL実行時に求めたいとします。 当初以下のようにしてました。 select key , num1 , num2 , num2/num1 as res from tbl し…
SQLiteのカラムの型には日付型がありません。 日付型として保存したい場合は、テキスト型のカラムで以下のような書式で保存するといいようです。 ・日付のみ。 YYYY-MM-DD ・時刻も含む場合。 YYYY-MM-DD HH:MM:SS SQLiteで日付指定のみで演算する場合は以下…
以前,(SQL)Access(JET)で FULL OUTER JOIN を行うで、FULL OUTER JOINをサポートしていないAccessで完全外部結合を行う方法を書きました。 SQLiteもFULL OUTER JOINがサポートされていないので、完全外部結合を行う場合同様の方法を用いてやる必要があります…
SQLiteでついハイフン(-)入のテーブルを作ってしまい、以下の用なクエリを実行したらエラーになりました。 SELECT * FROM hoge-test WHERE name='moe'; テーブル名にハイフンが入っていると、ダメなようです。 これは、SQLiteに限らず他のDBMS(MySQLやSQL Se…
SQLite内のデータベースを容易に管理するためにPHP上で動く SQLiteManager を入れてみたんですが、どうやら日本語に設定するとEUC-JPで動くらしく、UTF-8のデータをみると文字化けします。 ということで SQLiteManager でUTF-8のデータを扱う方法ですが、lan…
余り普段使わない MySQL ではログインでも四苦八苦する時があります。 (MySQL)スクリプトファイルからクエリを実行する方法では、MySQLクライアントにログインしてから外部ファイルを読み込んでますが、今回はコマンドラインから直接外部ファイルを読み込む…
SQL Server のデータベースログインユーザと、各データベースのユーザをSQLで列挙する方法です。 ログインユーザは master データベースの syslogins テーブルに定義されているようです。 データベースユーザは各データベースの sysusers テーブル定義されて…
ADO.Net を使って MDBへ のクエリ実行時に「式が複雑すぎます。」という例外で怒られました。 確かに、WHERE句に相当数の条件を入れています。 例えばこんな感じ。(パラメータクエリを使ってます。詳しくは(ADO.Net)OLEDB経由でのMDBへの副問い合わせにパラメ…
Access で LIKE 演算子で0文字以上の文字を表す時は * を使いますよね。 ところが、JETエンジン使って mdb にアクセスする OLEDB経由の ADO.Net だと % という純粋なSQLに近い形しないとダメなようです。 /*Accessだとヒットする。 OLEDB経由だとヒットしな…
SQL Server で現在日時を取得して、整数の文字列として保存する方法です。 あんまり需要は無いかもしれませんが、今回保存する汎用テーブル構造が キー:nvarchar(50) , 値:nvarchar(50) なので、こういう方法で。。。 下記のように convert 関数を使って、い…
あるデータベース専用のユーザを作って、db_owner のロールを与えてます。 バックアップもうまくいったんで、てっきり復元もできるかと思ったら、 System.Data.SqlClient.SqlError: ユーザーにはデータベース 'データベース名' を復元する権限がありません。…
ある SQL Server のユーザでログインし、データベースを復元しようとすると下記のようなエラーが。。。 System.Data.SqlClient.SqlError: データベース 'データベース名' はこのセッションで使用中なので、RESTORE では処理できません。この操作を実行すると…
(SQL Server)SQLサーバの無人インストールとインストール後の各種設定設定 Part3とかなり関連のあるネタです。 バッチファイルで SQL Server 2005 Express のインストールと mdf のアタッチさせるんですが、mdf ファイルはシステムドライブの固定のフォルダ…
SQL Server で MySQL のダンプのようにデータを含むクエリを作ってくれる簡単な方法はないのかと思って調査してる時に見つけたツールです。 この bcp ツールというのは SQL Server に付属しており、テーブルデータのエクスポートやインポートが簡単にできる…
無料でつかる SQL Server 2005 Express Editon を使おうという話になりました。 今回の要件はSQL Server 2005の任意のデータベースをバックアップするというものです。 ということで、ManagementStudio からバックアップジョブを登録しようとすると、エラー…
.Net アプリケーションから SQL Server 2005 のバックアップを行う方法です。 最初は .Net からバッチかDOSコマンドで sqlcmd を使おうと思ってたのですが、よく考えたら ADO.Net 使ってやった方が簡単だということに気付いたんで、その方法でやることにしま…
MySQLのパスワード変更で自分の古いメモ書き見たら、下記のように書いてました。 ログイン >mysql -p -u root -h localhost パスワード変更 mysql> SET PASSWORD FOR root=password('abc'); で、この通りに打ったら、下記のようなエラーに。 ERROR 1133 (420…
日別の集計データを取る SQL の作成を行うことになったのですが、データの種別毎に SQL を発行するとレスポンス的にもまずいかなと思い、一つのクエリで何とか取得出るようにしてみました。 たとえば下記のようなテーブルがあるとします。 Sales テーブル(主…
SELECT句の副問い合わせはJOIN内の副問い合わせとは違い、外のフィールドが使えるので便利です。 たとえば、下記のように Customer テーブルと利用履歴を残した UseHistroy テーブルがあるとします。 Customer テーブル ┏━━━━━━━━━━━━━━━━━┓ ┃CustomerID Cus…
3流プログラマ苦手な SQL のメモです。 このようなテーブルがあるとします。 ┌─────┬───┬──┬────┐ │CustomerID│LineNo│Sex │AgeBy │ ├─────┼───┼──┼────┤ │3 │1 │1 │30 │ ├─────┼───┼──┼────┤ │3 │2 │1 │30 │ ├─────┼───┼──┼────┤ │3 │3 │1 │30 │ ├─────┼───…
基本的なことですが、ついつい忘れてしまうのでメモメモ。 MySQLで、スクリプトファイルからクエリを実行する方法です。 mysqlクライントより下記のようにすることでできるようです。 mysql> source スクリプトファイル名; 参考: テキストファイル(スクリプ…
まず、sqlcmdの引数。 これはどうやら大文字小文字を判別してるので注意が必要です。 下記は SQL Server 認証モードでログインするコマンドです。 sqlcmd -S localhost\SQL2005DEV -U sa -P 1234 (-U や -P がないとWindows 認証モードを使用して接続を試み…
(SQL Server)SQLサーバの無人インストールとインストール後の各種設定設定 Part2の続き(最終回)です。 今回はアプリケーションで使う初期データベースファイルのアタッチの方法です。 普通に CEREATE 文や INSERT 文で初期化してもいいのですが、今回はあら…
(SQL Server)SQLサーバの無人インストールとインストール後の各種設定設定 Part1の続きです。 ■SQL Serverへのネットワークアクセス許可 SQL Server Express はインストール直後はセキュリティの問題で、ネットワーク越しのアクセスができないようになってい…
SQL Server 2005 Express の無人インストールの設定と、インストール後の各種設定をコマンドでやる方法です。 システムに詳しくないところをターゲットにしたパッケージ等に使えると思います。 なお、インストール先にはまだ SQL Server が入ってないという…
現在開発中ソフトのデータをAccessから多人数でも利用できるようにSQL Serverに移行しようとする話が上がってます。 データもそのままでSQL Server に移行したいらしいということです。当初は面倒だと思ってましたが、なんとAccessにはSQL Serverに簡単に移…
いつものごとく苦手SQLのためわかりにくい件名ですが、したいことは下記の通りです。 まず、下記のようなテーブルがあるとします。 Customerテーブル ┌───────────────────┐ │CustomerID CustomerName CustomerKana│ │3 新垣 アラガキ │ │4 戸田 トダ │ │21 …
.NetからOLE DBでmdb(Access)に対してパラメータクエリをする方法です。 OLEDBでは名前付きパラメータは使えず、パラメータの順序で対応するプレースホルダが決まるみたいなので注意が必要です。 (でも、パラメータに名前があっても問題は無いようです) 下記…
この直前の記事(SQL)SQLで区分などの複数の意味を持たせてるテーブルを何回も結合する方法でSQLを紹介しましたが、あのSQLをAccessで実行したら「JOIN式はサポートされていません。」というエラーが出ました。 いろいろ試したところどうやら結合条件(ON句)で下…
ちょっと題名の意味がわけわかめですが、つまりまあこういうことです。 データベースで区分とか設定情報とかは意味が異なったとしても1つのテーブルにまとめることが多いと思います。 下記は区分の名称を1つのテーブルでもたした例です。 "SettingDiv"列が…