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

構造化照会言語(SQL)は、データベースを照会するための言語です。質問には、コード例、テーブル構造、サンプルデータ、使用するDBMS実装(MySQL、PostgreSQL、Oracle、MS SQL Server、IBM DB2など)のタグを含める必要があります。質問が特定のDBMSにのみ関連している場合(特定の拡張機能を使用)、代わりにそのDBMSのタグを使用してください。SQLでタグ付けされた質問への回答には、ISO / IEC標準SQLを使用する必要があります。

2
SQL出力句が挿入されていない列を返すことは可能ですか?
データベースに変更を加えたため、古いデータを新しいテーブルに移行する必要があります。そのために、元のテーブル(Practice)からデータを取得してテーブル(ReportOptions)に入力し、2番目の中間テーブル(PracticeReportOption)に入力する必要があります。 ReportOption (ReportOptionId int PK, field1, field2...) Practice (PracticeId int PK, field1, field2...) PracticeReportOption (PracticeReportOptionId int PK, PracticeId int FK, ReportOptionId int FK, field1, field2...) 練習からReportOptionsに移動する必要があるすべてのデータを取得するクエリを作成しましたが、中間テーブルに入力するのに問題があります --Auxiliary tables DECLARE @ReportOption TABLE (PracticeId int /*This field is not on the actual ReportOption table*/, field1, field2...) DECLARE @PracticeReportOption TABLE (PracticeId int, ReportOptionId …
123 sql  sql-server 


6
SQL Group ByとOrder By
タグのテーブルがあり、リストから最大数のタグを取得したい。 サンプルデータはこのようになります id (1) tag ('night') id (2) tag ('awesome') id (3) tag ('night') を使用して SELECT COUNT(*), `Tag` from `images-tags` GROUP BY `Tag` 探しているデータを完全に取り戻します。しかし、私はそれを整理して、最も高いタグ数が最初になるようにし、最初の20かそこらしか送信しないように制限します。 私はこれを試しました... SELECT COUNT(id), `Tag` from `images-tags` GROUP BY `Tag` ORDER BY COUNT(id) DESC LIMIT 20 そして、私は「グループ関数の無効な使用-ErrNr 1111」を受け取り続けます 何が悪いのですか? MySQL 4.1.25-Debianを使用しています

9
SQL列で最も頻繁な値を見つける
SQLテーブルの特定の列で最も頻度の高い値を見つけるにはどうすればよいですか? たとえば、このテーブルtwoでは、最も頻繁に使用される値であるため、次のように返されます。 one two two three
122 mysql  sql 

10
データベースと関数型プログラミングは対立していますか?
私はしばらくの間Web開発者でしたが、最近、関数型プログラミングの学習を始めました。他の人のように、私はこれらの概念の多くを私の仕事に適用するいくつかの重大な問題を抱えてきました。私にとって、これの主な理由は、FPのステートレスを維持するという目標の間の矛盾が、私が行ったほとんどのWeb開発作業が非常にデータ中心のデータベースに強く結び付けられているという事実とかなり矛盾しているように見えることです。 OOP側でより生産的な開発者になった1つのことは、.GeneのMyGeneration d00dads、PerlのClass :: DBI、RubyのActiveRecordなどのオブジェクトリレーショナルマッパーの発見でした。終日、INSERTステートメントとSELECTステートメントを記述したり、オブジェクトとしてデータを簡単に操作したりすることに集中できます。もちろん、SQLクエリを作成することもできましたが、SQLクエリの能力が必要な場合はそれを実行できましたが、それ以外の場合は裏側でうまく抽象化されました。 さて、関数型プログラミングに移ると、リンクのようなFP Webフレームワークの多くでは、この例のように、ボイラープレートSQLコードを大量に記述する必要があるようです。Weblocksは少し優れているように見えますが、データを操作するために一種のOOPモデルを使用しているようで、この例のように、データベース内のテーブルごとにコードを手動で作成する必要があります。いくつかのコード生成を使用してこれらのマッピング関数を記述していると思いますが、それは明らかにLispに似ていません。 (私はWeblocksやLinksを非常に詳しく見ていないことに注意してください。それらがどのように使用されているのか誤解しているだけかもしれません)。 したがって、問題は、Webアプリケーションのデータベースアクセス部分(かなり大きいと思います)、またはSQLデータベースとのインターフェイスを必要とするその他の開発では、次のいずれかの方法を強制されるようです。 関数型プログラミングを使用しない 大量のSQLまたはSQLに似たコードをリンクを手動で作成することを含む、煩わしい、抽象化されていない方法でデータにアクセスする 関数型言語を強制的に擬似OOPパラダイムにし、真の関数型プログラミングの優雅さと安定性の一部を取り除きます。 明らかに、これらのオプションはどれも理想的ではないようです。これらの問題を回避する方法を見つけましたか?ここに本当に問題がありますか? 注:私は個人的にFPの前にあるLISPに最も精通しているので、例を挙げて複数のFP言語を知りたい場合は、おそらくlispが最適な言語でしょう PS:Web開発の他の側面に固有の問題については、この質問を参照してください。

12
世界のすべての住所に共通の住所データベース設計はありますか?
私はプログラマーであり、正直に言うと、世界の住所の構造がわからないのですが、私の国ではどのように構造化されているのでしょうか。1つのIDでちょうど識別され、世界のすべての住所格納するのに使用する、高速なクエリと動的に簡単なので、それはする必要がありますおかげで多くのことを

17
ストアドプロシージャの命名規則は何ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。事実、参考文献、専門知識によって回答が裏付けられることを期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問が改善され、場合によっては再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前に閉鎖。 ストアドプロシージャの命名に関するさまざまなルールを見てきました。 sproc名の前にusp_を付ける人もいれば、アプリ名の省略形を付ける人もいれば、所有者名を付ける人もいます。本当に意味がない限り、SQL Serverでsp_を使用しないでください。 プロシージャ名を動詞で始める人もいます(Get、Add、Save、Remove)。その他はエンティティ名を強調します。 何百ものsprocが存在するデータベースでは、すでに存在すると思われる場合、スクロールして適切なsprocを見つけるのは非常に困難です。命名規則により、sprocを見つけやすくなります。 命名規則を使用していますか?それを説明し、他の選択肢よりも好む理由を説明してください。 返信の概要: 誰もがネーミングの一貫性を主張しているようですが、誰にとっても同じネーミング規則を使用する方が、特定のネーミング規則を使用するよりも重要かもしれません。 接頭辞:多くの人がusp_または類似のもの(ただしまれにsp_)を使用していますが、他の多くはデータベースまたはアプリ名を使用しています。賢いDBAの1人は、gen、rpt、およびtskを使用して、一般的なCRUD sprocを、レポートまたはタスクに使用されるものと区別します。 動詞+名詞は名詞+動詞よりわずかに人気があるようです。動詞にSQLキーワード(選択、挿入、更新、削除)を使用する人もいれば、GetやAddなどのSQL以外の動詞(またはそれらの省略形)を使用する人もいます。単一名詞と複数名詞を区別して、1つまたは複数のレコードが取得されているかどうかを示すものもあります。 必要に応じて、最後に追加のフレーズが提案されます。GetCustomerById、GetCustomerBySaleDate。 名前のセグメント間にアンダースコアを使用する人もいれば、アンダースコアを使用しない人もいます。app_ Get_CustomerとappGetCustomerの比較-読みやすさの問題だと思います。 sprocの大規模なコレクションは、OracleパッケージまたはManagement Studio(SQL Server)ソリューションとプロジェクト、またはSQL Serverスキーマに分離できます。 不可解な略語は避けてください。 私が選んだ答えを選ぶ理由:良い回答がたくさんあります。皆さん、ありがとうございました!ご覧のとおり、1つだけを選択するのは非常に困難です。私が選んだものは私に共鳴しました。私は彼が説明するのと同じ道をたどりました-動詞+名詞を使用しようとすると、顧客に適用されるすべてのsprocを見つけることができません。 既存のsprocを見つけたり、存在するかどうかを判断したりできることは非常に重要です。誰かがうっかり別の名前で重複したsprocを作成すると、深刻な問題が発生する可能性があります。 私は通常、何百ものsprocを持つ非常に大規模なアプリを扱っているので、最も見つけやすい命名方法を好みます。小さいアプリの場合は、メソッド名の一般的なコーディング規則に従っているため、動詞+名詞を推奨します。 彼は、あまり役に立たないusp_ではなく、アプリ名をプレフィックスとして付けることも推奨しています。複数の人が指摘したように、データベースには複数のアプリのsprocが含まれている場合があります。したがって、アプリ名を前に付けると、sprocを分離するのに役立ち、DBAや他の人がsprocがどのアプリに使用されているかを判別するのに役立ちます。


1
postgresql外部キー構文
以下のposgresqlコードでわかるように、2つのテーブルがあります。最初のテーブルの学生には2つの列があります。1つはStudent_nameで、もう1つは主キーであるStudent_idです。テストと呼ばれる2番目のテーブルには、4つの列があります。1つはsubject_id、1つはsubject_name、次に1つは、被験者の中で最も高いスコアが最も高い、Student_idの生徒用です。私の生徒のテーブルで、highestStudent_idがStudent_idを参照するようにしています これは私が以下に持っているコードです、構文が正しいかどうかわかりません: CREATE TABLE students ( student_id SERIAL PRIMARY KEY, player_name TEXT); CREATE TABLE tests ( subject_id SERIAL, subject_name, highestStudent_id SERIAL REFERENCES students); 構文はhighestStudent_id SERIAL REFERENCES students正しいですか?私は別のようなものを見たのでhighestStudent_id REFERENCES students(student_id)) postgresqlで外部キーを作成する正しい方法は何ですか?

10
PostgreSQL ROLE(ユーザー)が存在しない場合は作成します
PostgreSQL 9.1でROLEを作成するSQLスクリプトを作成する方法はありますが、すでに存在する場合はエラーを発生させませんか? 現在のスクリプトは単に次のものを持っています: CREATE ROLE my_user LOGIN PASSWORD 'my_password'; ユーザーが既に存在する場合、これは失敗します。私は次のようなものが欲しいです: IF NOT EXISTS (SELECT * FROM pg_user WHERE username = 'my_user') BEGIN CREATE ROLE my_user LOGIN PASSWORD 'my_password'; END; ...しかし、それは機能しません- IFプレーンSQLではサポートされていないようです。 PostgreSQL 9.1データベース、ロール、およびその他のいくつかを作成するバッチファイルがあります。実行するSQLスクリプトの名前を渡して、psql.exeを呼び出します。これまでのところ、これらのスクリプトはすべてプレーンSQLであり、可能であればPL / pgSQLなどを避けたいと思います。

8
既存のテーブルに列を追加し、MS SQL Serverで一意に番号を付けます
既存のレガシーデータベースに列を追加し、各レコードに異なる値を割り当てることができる手順を記述したいと思います。列を追加し、そのデータを自動生成するようなもの。 同様に、"ID"(数値)という新しい列を追加する場合は、各レコードに一意の値を初期化します。したがって、私のID 列にはsayのレコードが含まれます1 to 1000。 それ、どうやったら出来るの?
121 sql  sql-server 

6
SQLではwhere句の順序は重要ですか?
PEOPLE3つのカラムを持つというテーブルがあるとしましょうID, LastName, FirstName。これらのカラムにはインデックスが付けられていません。 LastNameよりユニークで、FirstNameそれほどユニークではありません。 2つの検索を行う場合: select * from PEOPLE where FirstName="F" and LastName="L" select * from PEOPLE where LastName="L" and FirstName="F" 私の考えでは、よりユニークな基準(LastName)がwhere句の最初に来るため、2番目の方が速く、レコードがより効率的に排除されると考えています。オプティマイザーは最初のSQLを最適化するほど賢いとは思いません。 私の理解は正しいですか?

27
MySQL挿入場所クエリ
このクエリの何が問題になっていますか: INSERT INTO Users( weight, desiredWeight ) VALUES ( 160, 145 ) WHERE id = 1; WHERE句なしで動作します。SQLを忘れてしまったようです。
121 sql  mysql 

5
mysqlのWHERE句でエイリアスを使用できますか?
WHERE句でエイリアスを使用する必要がありますが、不明な列であることを通知し続けます。この問題を回避する方法はありますか?xより高い評価を持つレコードを選択する必要があります。評価は次のエイリアスとして計算されます。 sum(reviews.rev_rating)/count(reviews.rev_id) as avg_rating


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