タグ付けされた質問 「sql」

構造化照会言語(SQL)は、リレーショナルデータベース管理システムでデータを管理するための言語です。このタグは、SQLプログラミングに関する一般的な質問用です。Microsoft SQL Server(これには、sql-serverタグを使用します)用ではなく、SQLの特定の方言だけを参照することもありません。

2
ETLおよびレポートプロジェクトにTDDメソッドを使用してユニットテストを行うにはどうすればよいですか?
ETLプロジェクトは、SSIS、PowerCenterなどのETL(抽出-変換-ロード)ツールを使用して作成されたプロジェクトです。 これらには通常、外部ソースからのデータの読み取り、ステージングデータベースへのデータの読み込み、特定の変換の実行、最終データベースへの読み込みが含まれます。 簡単な例は、SSISを使用して、SSISを使用して学校の先生が提供するExcelファイルを読み取り、データベースにロードすることです。次に、ストアドプロシージャまたは複数のSSISパッケージを作成して各生徒の成績を計算し、そのデータをデータマート\ウェアハウスにロードします 次に、マートの上にストアドプロシージャを構築して、レポートツール(SSRS \ Excel \ etc)が視覚化を生成するために使用する出力を生成します。 このシナリオでTDDと適切な単体テストを実行する方法を理解しようとしています。ETLのテストは、主にステージングテーブルにロードされたデータがソースからのデータの正しいサブセットであることを確認することに関するものです。そのため、テストを実装すると、ETLのミニバージョンが実装されます。レポートSPの出力はテーブル自体のデータに依存するため、スクラブされたテストデータを含むデータベースを作成したとしても、メンテナンスの悪夢がなければ安定した出力データのセットを持つことはできません。 例: スプリント1:学生テーブルには名前、年齢、成績が含まれます このテーブルのテストデータを作成し、それに基づいて単体テストを作成します スプリント2:性別フィールドがテーブルに追加されます。 学生フィールドのデータを更新して性別属性を設定すると、データが変更されたため、テストケースは無効になります。しなければ、性別の列を必要とするテストケースを作成できません
12 unit-testing  sql  tdd 

4
Prologが命令型プログラミングでSQLよりも人気がない理由の歴史的な先例は?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 宣言 的プログラミングSQLは、命令型プログラミングで非常に人気があるようです。ただし、Declarative を記述するPrologことで複雑さを大幅に節約できるようにも見えますが、これはあまり一般的ではありません。 PrologよりもSQLがこのように優先されるという歴史的な先例はありますか? 理由が命令型言語によるネイティブサポートの欠如である場合、言語の作成者がそもそもネイティブサポートPrologが有用であるとは思わなかった理由に答えることは可能ですか? 特定の例を提供するには: 例1 ローンアプリケーションの評価は、ほんの数行のコードでPrologあるSELECT/JOINクエリのように、ほんの数行のコードであるかもしれませんがSQL、利点はそれほど明白ではないようですSQL。 例2 別の問題例とPrologの解決策を次に示します。次の制約論理プログラムは、教師としてのジョンの歴史の簡略化されたデータセットを表しています。 teaches(john, hardware, T) :- 1990 ≤ T, T < 1999. teaches(john, software, T) :- 1999 ≤ T, T < 2005. teaches(john, logic, T) :- 2005 ≤ T, T ≤ 2012. rank(john, instructor, T) :- 1990 ≤ T, …

4
C#最小SQLデータベース
私は、CSVのようなものでは処理が効率的でなく、SQL / MySQLサーバーが多すぎるほど十分なデータを保存する必要がある小さなプロジェクト(本番ではない)に取り組んでいます。.Netには、単一のファイルを読み込んで処理するのではなく、サーバーを管理および接続することなく、クエリ機能を使用して、データの複数のエントリを効率的に保存する方法がありますか。
12 c#  database  sql 

4
n-gramデータの保存
nグラムのデータを保存することについて少しブレインストーミングしたいと思っていました。私のプロジェクトでは、すべての(n -1)データ項目を知っており、適用可能なすべてのnグラムに対する線形補間を使用して統計的にnを推測したい言語の問題を解決しようとしています。(はい、用語集に従ってタグを既知の単語に割り当てるタガーと、未知の単語の単語の種類を推測するサフィックスツリーがあります。ここで説明するnグラムコンポーネントは、曖昧さの解決を担当します。) 私の最初のアプローチは、観測されたすべてのnグラム(n = 1..3、つまりモノグラム、バイグラム、トライグラム)のデータをそれぞれのSQLデータベースに単純に格納し、それを1日と呼ぶことです。しかし、私のプロジェクトの要件は、他のベクトルの長さ(n)を含むように変更される可能性があり、多くの作業(スキーマの更新、アプリケーションコードの更新など)なしにアプリケーションを4グラムに適応させたいです。理想的には、コードを大幅に(またはまったく)変更せずに、4グラムで動作するようにアプリケーションに指示し、特定のデータソースからのデータをトレーニングするだけです。 すべての要件をまとめるには: nグラムのデータを保存する機能(最初はn = {1、2、3}の場合 使用するnグラムの種類を変更する機能(アプリケーションの実行間) nグラムデータを(再)トレーニングする機能(アプリケーションの実行間) データストアを照会する機能(たとえば、A、B、Cを観察した場合、トレーニング済みの4、3、2、1グラムのデータセットを使用して、最も頻繁に観察されるアイテムを知りたい) ほとんどの場合、アプリケーションは読み込みが重くなり、データセットはほとんどの場合再トレーニングされません このソリューションは、.NET Framework(最大4.0)を採用しています では、そのようなタスクに適した設計は何でしょうか? 各nの SQLサーバー(MSSQL、MySQLなど)によって管理される固定テーブル(たとえば、2グラム、3グラムなどの専用テーブル) または、ドキュメントのキーとして最初のn -1 を保存し、ドキュメント自体にn番目の値と観測頻度が含まれるNoSQLドキュメントデータベースソリューションですか? または何か違う?

17
SQLを記述する必要はまだありますか?
最新のほとんどの言語用の非常に多くのORMツールがありますが、それらをサポートする言語/環境で、プログラムでSQLを記述および実行するためのユースケースはまだありますか?もしそうなら、なぜですか? わかりやすくするために、プログラマがSQLを知る必要があるかどうか、またはデスクトップにSQLツールを用意する必要があるかどうかについては質問していません。ORMではなく、コード(または構成など)に含める理由を具体的に尋ねています。
12 design  sql 

2
ORDER BY句がない場合、行はどの順序でフェッチされますか?
1人のプログラマが、同じデータベース構造と同じデータを使用する同じアプリケーションを、Oracle 8とOracle 9の2つの異なるデータベースでのみテストおよび比較しています。 アプリは句なしで クエリを実行しますORDER BY。 彼は、ORDER-BY-lessクエリは両方のデータベースで同じ順序で行を返すべきだと主張しています。 ORDER BY句を明示的に指定しない限り、同じ行順序の保証はないことを彼に伝えます。 データベースには同じインデックスとキーがあります。しかし、説明プランでは、データベースの1つではエンジンが結合テーブルの1つのキーを使用しているのに対し、他のデータベースでは別のデータベースのキーを使用していることを示しています。 彼は、2つのDB環境が等しくないことをほのめかしています。これは、統計やRDBMSエンジンなどが異なるためです。元のデータベースのすべてのインデックスを複製できなかったためではありません。 ORDER BY順序が本当に重要な場合は、明示的に条項を提供する必要があると彼に言います。 質問 だから私は彼をよりよく説明できます: ORDER BY句を明示的に指定しない場合、クエリはどの順序で行をフェッチしますか?また、なぜそのクエリは同じ順序で行を返さないのですか?
11 sql  oracle  rdbms 

7
SQLインジェクションに対して脆弱なコードの記述をプログラマーに停止させるにはどうすればよいですか?
時々忙しくなり、小さなタスクをジュニアプログラマに委任します。しかし、十分に注意を払わないと、この種のコードを本番環境で使用することになります。 class DivtoggleController extends Zend_Controller_Action { public function closeAction() { /* ... code removed for brevity ... */ $req = $this->getRequest(); $formData = $req->getPost(); $d = $formData['div']; $i = $formData['id']; $dm = new Model_DivtoggleManager(); $rs = $dm->setDivToggleById($d, $i); } } class Model_DivtoggleManager extends Zend_Db_Table { public function setDivToggleById($div, $id) { …
11 php  sql  training 

2
(基本的な)SQLクエリは、意味的に高次関数と同等ですか?
SQLは基本的にマップ+フォールド+フィルターのドメイン固有のインスタンスですか? 次のSQLのようです: SELECT name FROM fruits WHERE calories < 100 これは、次のマップ+フィルター+折りたたみ操作の構文糖です。 var fruits = [{id : 1, name: 'orange', calories : 100}, {id : 2, name : 'banana', calories : 150}, {id : 3, name: 'apple', calories : '50'}]; fruits.map(function(fruit) { return { name : fruit.name, calories : fruit.calories }) …

2
クラスに共通のデータベース接続を配置する場所
データベースにオブジェクトを保存したり、データベースからオブジェクトを取得したりするクラス(リポジトリ)がいくつかあります。それらすべてが1つのデータベースへの接続を確立する必要があります。 各クラスでConnectionStringとを再定義しないようにSqlConnection、オープン接続をそれらに渡すことを考えました。次に、その接続を定義/オープンしてクラスに渡すのに最適な場所/時間はいつ/どこですか? この共通のリソースにアクセスするためのより良いアプローチ/パターンはありますか?
11 c#  sql  class-design 

2
SQLコードをフォーマットするためのアルゴリズム
SQLコード(SQL Server / MySQL)をフォーマットする(社内で使用する)ツールが必要です。 それを実行するさまざまなサードパーティのツールとオンラインWebサイトがありますが、正確にどのようにそれを必要とするのかはわかりません。 したがって、自分のニーズに合った独自のツールを書きたいと思います。 最初の質問は、SQLコードをどのようにフォーマットするかについて、標準または規約がありますか?(私が試したツールは別の方法でフォーマットしました) 2番目の質問、このタスクにどのように取り組むべきですか?最初にSQLクエリをツリーのようなデータ構造に変換する必要がありますか?

7
ネストされたエンティティとリーフエンティティプロパティの計算-SQLまたはNoSQLアプローチ
メニュー/レシピ管理という趣味のプロジェクトに取り組んでいます。 これは私の実体とそれらの関係がどのように見えるかです。 AにNutrientはプロパティがCodeあり、Value のIngredientコレクションを持っていますNutrients A RecipeにはコレクションがIngredientsあり、時々他のコレクションを持つことができますrecipes Aは、Mealのコレクションを持っているRecipesし、Ingredients A MenuのコレクションがありますMeals 関係は次のように表すことができます いずれかのページで、選択したメニューについて、その構成要素(食事、レシピ、成分、および対応する栄養素)に基づいて計算された有効栄養素情報を表示する必要があります。 現在、SQL Serverを使用してデータを格納しています。メニューの各食事から始めて栄養素の値を集計して、C#コードからチェーンを移動しています。 この計算はページがリクエストされ、構成要素が時々変更されるたびに行われるため、これは効率的な方法ではないと思います。 MenuNutrients({MenuId, NutrientId, Value})と呼ばれるテーブルを維持し、コンポーネント(食事、レシピ、成分)のいずれかが変更されたときに、このテーブルに有効な栄養素を追加/更新するバックグラウンドサービスがあることを考えていました。 GraphDBはこの要件に適していると思いますが、NoSQLへの私の露出は限られています。 特定のメニューの栄養素を表示するというこの要件に対する代替の解決策/アプローチは何ですか? シナリオの説明が明確であることを願っています。

4
データベースクエリはページ自体から抽象化する必要がありますか?
PHPでページ生成を作成するとき、データベースクエリが散らかっている一連のファイルを作成していることがよくあります。たとえば、次のように、投稿に関するデータをデータベースから直接フェッチしてページに表示するクエリがあるとします。 $statement = $db->prepare('SELECT * FROM posts WHERE id=:id'); $statement->bindValue(':id', $id, PDO::PARAM_INT); $statement->execute(); $post = $statement->fetch(PDO::FETCH_ASSOC); $content = $post['content'] // do something with the content これらの迅速な1回限りのクエリは通常は小さいですが、データベースのやり取りコードの大部分が結局乱雑に見えることがあります。 場合によっては、ポスト関連のdbクエリを処理する単純な関数ライブラリを作成し、コードのブロックを単純なものに短縮することで、この問題を解決しました。 $content = post_get_content($id); そして、それは素晴らしいことです。または、少なくとも何か他のことをする必要があるまでです。たぶん、最新の5つの投稿をリストに表示する必要があります。ええと、いつでも別の関数を追加できます。 $recent_posts = post_get_recent(5); foreach ($recent_posts as $post) { ... } しかしSELECT *、それは結局クエリを使用することになります。これは通常、とにかく必要はありませんが、しばしば複雑すぎて合理的に抽象化できません。最終的に私は、すべての単一のユースケースのデータベース相互作用関数の大規模なライブラリ、またはすべてのページのコード内の一連の乱雑なクエリのいずれかになります。そして、これらのライブラリを構築した後でも、以前に使用したことがない小さな結合を1つ実行する必要があることに気づき、その仕事を行うために、突然別の高度に専門化された関数を作成する必要があります。 確かに、一般的なユースケースや特定のやり取りのクエリに関数を使用することはできますが、生のクエリを書き始めるとすぐに、すべてに直接アクセスできるようになります。それとも、怠惰になって、MySQLクエリで直接実行する必要があるPHPループで処理を開始します。 インターネットアプリケーションの記述に詳しい方にお願いしたいと思います。コードの追加の行と、抽象化によって導入される可能性のある非効率性に見合う保守性の向上はありますか。それとも、直接クエリ文字列を使用するだけで、データベースの相互作用を処理するための許容できる方法ですか?

6
ORMを使用するとどのような種類のWeb開発プロジェクトにメリットがありますか?
最初に、SQLを使用してデータベース作業の95%を完了したと言います。最近、NHibernateやDoctrineなどのさまざまなORMの調査を行いました。 多くのSQLと、ORMが提供するデータベースの移植性を知る必要がないことの利点がわかります。しかし、SQLを理解することでORMとの連携がより効果的になることもわかります。私のキャリアの中で、アプリケーションの最大の変更はデータベースベンダーになるとしか思えません。 私はSQLの作成に非常に慣れており、ORMを使用することでよく教えられる利点を実現していないようなので、ORMのヘビーユーザーへの私の質問は次のとおりです。 どのようなWeb開発プロジェクトがORMの使用から最も恩恵を受けますか?

12
「SELECT *」の英語の読み方は?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、専門知識によって裏付けられると期待していますが、この質問は、議論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前休業。 先日、友人はアメリカではSQLをes-qu-elではなくsquelのように発音していると私に言った。私はびっくりしました。話しながら「SELECT *」がどのように読み上げられるのか気になっていました。 星を選択しますか? アスタリスクを選択しますか? すべて選択?
10 sql 

2
複数のアプリインスタンスでデータベースの移行を安全に実行するにはどうすればよいですか?
高速(1秒未満)と低速のデータベース移行(> 30秒)の両方が混在するアプリケーションがあります。現在、データベースの移行をCIの一部として実行していますが、CIツールはアプリのデータベース接続文字列をすべて(複数の環境で)認識している必要があるため、理想的ではありません。このプロセスを変更して、アプリケーションが起動時に独自のデータベース移行を実行するようにします。 ここに状況があります: このアプリケーションの複数のインスタンスがあり、約5つが本稼働しています。それらを呼び出しましょうnode1, ..., node5。各アプリは単一のSQL Serverインスタンスに接続し、ローリングデプロイを使用していません(すべてのアプリは私の知る限り同時にデプロイされています)。 問題:長期にわたる移行があるとしましょう。この場合、node1は開始してから、マイグレーションの実行を開始します。さて、node4開始し、長期実行の移行がまだ完了していないためnode4、移行の実行も開始します->データ破損の可能性はありますか?この問題をどのように防止しますか、または問題は心配するほど重要ですか? 私はこの問題を分散ロックで解決しようと考えていました(etcdそれらを使用するか、それに沿って何かを使用します)。基本的に、すべてのアプリがロックを取得しようとし、そのうちの1つだけがロックを取得して移行を実行してから、ロックを解除します。残りのアプリが起動してクリティカルセクションに入ると、すべての移行がすでに実行されているため、移行スクリプトは終了します。 しかし、私の直感は「これはやり過ぎです。もっと簡単な解決策があるはずです」と言っているので、他の誰かがもっと良いアイデアを持っているかどうかを確認するためにここに尋ねると思いました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.