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

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

4
SQLでは結合順序は重要ですか?
パフォーマンスを無視すると、以下のクエリAとBから同じ結果が得られますか?CとDはどうですか? -- A select * from a left join b on <blahblah> left join c on <blahblan> -- B select * from a left join c on <blahblah> left join b on <blahblan> -- C select * from a join b on <blahblah> join c on <blahblan> -- D select …

4
PostgreSQLで重複レコードを見つける方法
"user_links"と呼ばれるPostgreSQLデータベーステーブルがあり、現在次の重複フィールドを許可しています。 year, user_id, sid, cid ユニーク制約は、しかし、私は今、確認するために制約を追加するために探しています、現在「ID」と呼ばれる最初のフィールドでyear、user_id、sidおよびcidすべて一意であるが、重複した値がすでにこの制約に違反が存在するので、私は制約を適用することはできません。 すべての重複を見つける方法はありますか?

9
SQL文字列に「if句」を挿入するにはどうすればよいですか?
これが、MySQLデータベースで実行したいことです。 私はしたいと思います: SELECT * FROM itemsOrdered WHERE purchaseOrder_ID = '@purchaseOrdered_ID' AND status = 'PENDING' それが行を返さない場合、それはで可能if(dr.HasRows == false)ですがUPDATE、purchaseOrderデータベースにを作成します。 UPDATE purchaseOrder SET purchaseOrder_status = 'COMPLETED' WHERE purchaseOrder_ID = '@purchaseOrder_ID' このプロセスを少し短くするにはどうすればよいですか?
189 mysql  sql 

20
データベースをSINGLE USERモードからMULTI USERに設定します
SINGLE_USERモードで復元されたデータベースをに設定する方法を教えてくださいMULTI_USER。走るたびに ALTER DATABASE BARDABARD SET MULTI_USER; GO 私はこのエラーを受け取ります: 現在、データベース「BARDABARD」の状態またはオプションを変更することはできません。 データベースはシングルユーザーモードであり、ユーザーは現在データベースに接続しています。 それSINGLE_USERを別のモードに設定するには、非モードにする必要がありますが、モード中にデータベースを別のモードに設定することはできませんSINGLE_USER。
188 sql  sql-server 

12
なぜ歴史的にデータベースフィールドの大きさに256ではなく255を使用するのでしょうか。
255文字の大きさに設定されたデータベースフィールドをよく目にしますが、なぜ伝統的/歴史的な理由なのですか?私はそれがページング/メモリ制限とパフォーマンスに関係していると思いますが、255と256の違いは常に私を混乱させました。 varchar(255) これがインデクサーではなく容量または大きさであることを考えると、なぜ256は256よりも255が推奨されますか?バイトは何らかの目的(ターミネーターまたはnullなど)のために予約されていますか? おそらくvarchar(0)はナンセンスです(容量がゼロです)?どちらの場合、2 ^ 8のスペースは確かに256である必要がありますか? パフォーマンス上の利点を提供する他の大きさはありますか?たとえば、varchar(512)はvarchar(511)またはvarchar(510)よりもパフォーマンスが低いですか? この値は、新旧のすべてのリレーションデータベースで同じですか? 免責事項 -私はDBAではなく開発者です。既知のビジネスロジックに適したフィールドサイズとフィールドタイプを使用しますが、この設定の歴史的な理由を知りません。それがまだ関連している場合はより多く)。 編集: 答えをありがとう、サイズを格納するためにバイトが使用されるといういくつかの合意があるようですが、これは私の心の中で決定的に問題を解決するものではありません。 メタデータ(文字列の長さ)が同じ連続したメモリ/ディスクに格納されている場合、それはある程度の意味があります。1バイトのメタデータと255バイトの文字列データは非常にうまく適合し、256の連続したストレージのバイトに適合します。これはおそらくきちんと整頓されています。 しかし...メタデータ(文字列の長さ)が実際の文字列データとは別に(おそらくマスターテーブルに)格納される場合、1バイトの整数のみを格納する方が簡単だからといって、文字列のデータの長さを1バイトに制限します。メタデータの部分は少し変わっているようです。 どちらの場合も、おそらくDBの実装に依存するのは微妙なことのようです。255を使用する習慣はかなり広まっているように思われるので、最初にどこかで誰かがその良い事例について議論したに違いありません。プログラマーは理由なしに新しい慣行を採用することはありません。

9
varchar列の最大長を変更しますか?
内容を失わずに、varchar列の長さを255文字から500文字に更新しようとしています。以前にテーブルを削除して再作成したことがありますが、これを行うために使用する必要があると私が信じているalterステートメントに触れたことはありません。私はここにドキュメントを見つけました:ALTER TABLE(Transfact-SQL)しかし、それの表と裏を作ることはできません。 私はこれまでに以下のものを持っています(基本的に残念ながら何もありません): alter table [progennet_dev].PROGEN.LE alter column UR_VALUE_3 これにどのように取り組みますか?このステートメントの優れたドキュメントはありますか(例のステートメントをいくつか検索しましたが、空になりました)?


12
MySQL-行から列へ
投稿を検索しようとしましたが、SQL Server / Accessのソリューションしか見つかりませんでした。MySQL(5.X)のソリューションが必要です。 hostid、itemname、itemvalueの3つの列を持つテーブル(履歴と呼ばれる)があります。 選択(select * from history)すると、戻ります +--------+----------+-----------+ | hostid | itemname | itemvalue | +--------+----------+-----------+ | 1 | A | 10 | +--------+----------+-----------+ | 1 | B | 3 | +--------+----------+-----------+ | 2 | A | 9 | +--------+----------+-----------+ | 2 | c | 40 | +--------+----------+-----------+ …
188 mysql  sql  pivot-table  etl  crosstab 

4
Postgresqlの日時フィールドの日付を比較するにはどうすればよいですか?
postgresql(Windowsではバージョン9.2.4)の日付を比較すると、奇妙なシナリオに直面していました。テーブルに 'timestamp without timezone'タイプのupdate_dateという列があります。クライアントは、日付(例:2013-05-03)または日付(例:2013-05-03 12:20:00)のみでこのフィールドを検索できます。この列には、現在すべての行のタイムスタンプとしての値があり、日付部分(2013-05-03)は同じですが、時間部分が異なります。 この列を比較すると、異なる結果が得られます。次のように: select * from table where update_date >= '2013-05-03' AND update_date <= '2013-05-03' -> No results select * from table where update_date >= '2013-05-03' AND update_date < '2013-05-03' -> No results select * from table where update_date >= '2013-05-03' AND update_date <= '2013-05-04' -> results …
188 sql  database  postgresql  date 


10
MySQLクエリでタイムスタンプを日付に変換する
timestampMySQLのを日付に変換したい。 user.registrationフィールドをテキストファイルにとしてフォーマットしますyyyy-mm-dd。 これが私のSQLです: $sql = requestSQL("SELECT user.email, info.name, FROM_UNIXTIME(user.registration), info.news FROM user, info WHERE user.id = info.id ", "export members"); 私も日付変換を試しました: DATE_FORMAT(user.registration, '%d/%m/%Y') DATE(user.registration) テキストファイルを書き込む前に結果をエコーすると、次のようになります。 email1; name1; DATE_FORMAT(user.registration、 '%d /%m /%Y'); news1 email2; name2; news2 そのフィールドを日付に変換するにはどうすればよいですか?

5
mysql ::別のテーブルのデータをテーブルに挿入しますか?
純粋にSQLでこれを行う方法があるかどうか私は思っていました: q1 = SELECT campaign_id, from_number, received_msg, date_received FROM `received_txts` WHERE `campaign_id` = '8'; INSERT INTO action_2_members (campaign_id, mobile, vote, vote_date) VALUES(q1.campaign_id, q1.from_number, q1.received_msg, q1.date_received); 注: q1は約30k行を返します。 上記のストレートSQLでしようとしていることを行う方法はありますか?あるテーブル(基本的には生データテーブル)からデータを直接プルして、別のテーブル(基本的には処理されたデータテーブル)に挿入するには、どうすればよいですか。
187 sql  mysql 


20
データベースのトリガーは悪ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、専門知識によって裏付けられると期待していますが、この質問は、議論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前に閉鎖。 データベースは悪い考えを引き起こしますか? 私の経験では、それらは意外な副作用を引き起こす可能性があり、デバッグが難しいため(特に、1つのトリガーが別のトリガーを起動した場合)、悪です。多くの場合、開発者はトリガーがあるかどうかを考えさえしません。 一方、常に新しいロジックが発生した場合、 FOOデータベースにが作成される場合は、FOOテーブルの挿入トリガーが最も確実な場所になります。 トリガーを使用するのは、の設定などの非常に単純な場合のみですModifiedDate。
186 sql  triggers 

9
EXISTSをビットとして直接選択することは可能ですか?
私はこのようなことをすることが可能かどうか疑問に思っていました(これは機能しません): select cast( (exists(select * from theTable where theColumn like 'theValue%') as bit) それは実行可能であるように見えますが、SQLで機能するはずの多くのことはできません;)私はこれの回避策を見ました(SELECT 1 where ... Exists ...)が、私はちょうどできるように思えますexists関数の結果をビットとしてキャストし、それで完了します。
186 sql  sql-server  tsql 

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