X



トップページDB@2ch掲示板
1002コメント294KB
SQL初心者質問スレ [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001NAME IS NULL
垢版 |
2016/05/12(木) 05:29:07.61ID:HmbS4CfD
SQL初心者用の質問スレッドです。
0342NAME IS NULL
垢版 |
2017/03/01(水) 15:57:14.00ID:???
DB自体の操作やユーザー管理も含めて言っているのじゃないかな?
0343NAME IS NULL
垢版 |
2017/03/01(水) 18:47:02.65ID:???
業務で使う時は特殊な記述を避けるというだけの話かと
0344NAME IS NULL
垢版 |
2017/03/01(水) 20:05:39.23ID:???
sqlに特殊な記述なんてあったか?
0345NAME IS NULL
垢版 |
2017/03/02(木) 03:01:35.02ID:???
顧客id 顧客名
取引id 顧客id 取引額 取引日

こんな2つの顧客テーブルと取引テーブルがあるとします。
取引テーブルの取引日と顧客idはUNIQUEな関係です(同じ日の再度の取引はない)。
ある顧客との、ある期間中どれだけ取引があったか(回数と総額)の計算をしたいです。

顧客テーブル
  顧客id INT PK
  顧客名 VARCHAR NN

取引テーブル
  取引id INT PK
  顧客id INT FK
  取引額 INT NN
  取引日 DATE NN
  UNIQUE (顧客id, 取引日)

インデックスを貼るべきところとかよくわからないのですが、テーブルはこんな感じでいいのでしょうか?
検索(WHERE)に取引日を使うので、取引日にもインデックス貼ったほうがいいのでしょうか?
あと取引日のDATE型なんですが、UNIXTIMEのようにある日からの起算のほうが検索早そうなのでINTにしたほうがいいですか?
0346NAME IS NULL
垢版 |
2017/03/02(木) 06:14:34.18ID:???
>取引日にもインデックス貼ったほうがいいのでしょうか?

それで検索をよくするんだったら良いんじゃないの。自分は株価テーブル作っててPKが(コード、出来高年月日)なんだけど、
出来高年月日での検索もするんでその出来高年月日にindex貼ったら実行スピードめちゃ上がったし
0347NAME IS NULL
垢版 |
2017/03/02(木) 14:18:17.25ID:???
>>345
DATE型使っても、内部表現はバイナリー値だから実行スピードは変わらないだろう
0348345
垢版 |
2017/03/03(金) 05:48:15.55ID:???
>>346-347
レスありがとうございます。
実例での効果まであげていただいて感謝です。
DATA型でも検索速度は変わらないとのことなので、
このままでCREATEしたいと思います。
0351NAME IS NULL
垢版 |
2017/03/03(金) 17:39:50.51ID:???
(DATA型は)このままでってことだろう
0352NAME IS NULL
垢版 |
2017/03/04(土) 06:08:32.02ID:GZ+afmPr
RDBMSの内部構造を意識するのが初心者なのかと。
0353NAME IS NULL
垢版 |
2017/03/04(土) 07:48:26.00ID:???
まあプログラムやってればその辺はちょっとは検討つくでしょう
JavaScriptみたいのしかやったことないとかだとDBいじる機会もなかなかないだろうし
ところでDATE型とINT型の検索速度の比較って
ググって見るとINT型のほうが早いみたいだけど
0354NAME IS NULL
垢版 |
2017/03/04(土) 08:31:07.04ID:???
郵便番号と地名が書いてるデータベースを作るとして
0から始まる北海道はとりあえず無視するとして
7桁のユニークな数字になるわけですが
そういう番号があっても主キーにせずオートインクリメントなサロゲートキーを作るべきですか?
0355NAME IS NULL
垢版 |
2017/03/04(土) 08:46:24.32ID:???
郵便番号は郵便局が自分たちの業務をやりやすくするために振っただけのものであって
地名との一対一の紐付けを保証するものではないし
郵便局の都合で変更されることもある
そのへんを理解した上で使うなら別にいいんじゃない?
0356NAME IS NULL
垢版 |
2017/03/04(土) 09:03:59.24ID:???
「郵便番号の」サロゲートだとしたらそのへんは何も変わらんが。
0357NAME IS NULL
垢版 |
2017/03/04(土) 09:23:42.43ID:???
>>353
> ところでDATE型とINT型の検索速度の比較って
> ググって見るとINT型のほうが早いみたいだけど

そらそうよ。プログラムやってれば見当つくはず。

>>354
困ったことに、郵便番号と地名は1:nです
0358NAME IS NULL
垢版 |
2017/03/04(土) 09:32:54.15ID:???
データベースは当然、1:n関係を表現できるだろうに。何を困ることがある?
0360NAME IS NULL
垢版 |
2017/03/04(土) 10:37:00.43ID:???
郵便番号はちょっと例えが悪かったかな・・・
例えばクレジットカードとか連番だと都合が悪いけど一意な番号
それでもサロゲートは必要?
0361NAME IS NULL
垢版 |
2017/03/04(土) 10:49:39.48ID:???
そういう質問している人には必要ない。
0362NAME IS NULL
垢版 |
2017/03/04(土) 11:01:27.93ID:???
だってとりあえずauto incrementを主キーにしとけって書籍に書いてるんだもの
0364NAME IS NULL
垢版 |
2017/03/04(土) 11:36:56.78ID:???
初心者にはあれこれいうよりベストな書き方覚えろっていう
ベストでもないオレオレ書き方教える書籍は多い
全部のテーブルにcreated updated作れみたいな
0365NAME IS NULL
垢版 |
2017/03/04(土) 15:42:19.31ID:???
SQLはなんで大文字が好きなの?
0366NAME IS NULL
垢版 |
2017/03/04(土) 23:32:19.88ID:b+Y4fejK
>>353
そもそもどのRDBMSのINT型なのか知らないが、標準SQLではコンピュータの数値表現としているので、速いのはあたりまえ。

ちなみにOracleでは標準SQLのINT型はNUMBER型なのでまったく違う。当然Oracleでは計算が遅くはなる。
0367NAME IS NULL
垢版 |
2017/03/04(土) 23:33:46.81ID:b+Y4fejK
>>365
プログラミング言語の歴史では、小文字をメインに使うようになったのはC言語あたりから。
0368NAME IS NULL
垢版 |
2017/03/04(土) 23:57:32.49ID:???
Oracleの場合、内部で大文字に変えていると聞いたことがある
本当かどうかは確かめたことないし、今もそうなのかは分からないが
使っていた当時は全部大文字で書いてたな
0369NAME IS NULL
垢版 |
2017/03/05(日) 04:43:17.86ID:???
DB側で用意してる関数含めてユーザ入力による変数になってる
テーブル名とかカラム名以外は全部大文字にしてる
`table` `long_table_name` `column` `long_column_name`
ご丁寧に``で囲んでるけどこれもいらんのよなあ
なんかいい規則があればいいんだけど
0370NAME IS NULL
垢版 |
2017/03/05(日) 11:05:14.00ID:???
基本的に大文字しか使えない環境が当たり前の頃からSQLあるからな、、、
COBOLでの EXEC SQL 文とか懐かしいなあ
0371NAME IS NULL
垢版 |
2017/03/05(日) 15:50:25.27ID:ZV3ds4gJ
>>368
それを言うのがいるけど、プログラマでそんなことを言ったら恥ずかしいぞ。大文字、小文字を区別しないなら大文字、小文字の判定処理が入るわけで、そこから大文字に変換する処理が遅くて問題になるなど阿呆みたいなこだわりだ。
0372NAME IS NULL
垢版 |
2017/03/06(月) 00:07:50.62ID:???
大文字に変換する処理が遅くて問題になるなんて誰か言ってた?
0373NAME IS NULL
垢版 |
2017/03/06(月) 01:05:03.96ID:VHVbqVdu
>>368 が書いてるが?
0374NAME IS NULL
垢版 |
2017/03/06(月) 01:09:49.78ID:VHVbqVdu
大文字が大文字かどうかより、文字がなんなのかの判定も入るわけで、そんな処理時間はいつの時代のコンピュータの性能で考えているんだよw

こんなことを言い出したらRDBはあらゆることが遅すぎて使えない。現実にRDBはコンピュータの性能が上がったから使い物になるようになった歴史も知らないのか?
0376NAME IS NULL
垢版 |
2017/03/06(月) 02:48:06.58ID:???
368本人です。何かお騒がせしてしまい済みません。
相当昔の話です。
動かしていたサーバーはW2k、CPUはP3、メモリー4G程度でした。
できるだけ負荷を減らせと言う指示の中で作業してました。
0377NAME IS NULL
垢版 |
2017/03/06(月) 05:47:11.51ID:???
パーサーの仕様で大文字小文字区別しないにしても
大文字しかパースできなくて変換処理が必要だとしても
それに判定を挟む必要もなければ
ただの一文にすぎないSQLに処理時間なんてギャグかよって話
0378NAME IS NULL
垢版 |
2017/03/06(月) 07:05:39.51ID:???
>>377
お前の小さい脳みそこそギャグかよww
0380NAME IS NULL
垢版 |
2017/03/06(月) 07:28:15.30ID:???
>>378
構文解析にかける時間に比べれば
文字列の処理なんて微々たるものがわからないような猿
0381NAME IS NULL
垢版 |
2017/03/06(月) 12:11:06.08ID:0KbRjlYP
>>377
判定処理はいるだろw
文字がAならAかどうか判定する。

何この低レベルw
0382NAME IS NULL
垢版 |
2017/03/06(月) 12:23:32.62ID:???
小文字混ざってる前提で全て大文字にしてからパースすればいいだけってのは
プログラマーならわかるだろ
0383NAME IS NULL
垢版 |
2017/03/06(月) 12:41:33.78ID:???
>>381
全部大文字にすればよいでしよw
0384NAME IS NULL
垢版 |
2017/03/06(月) 15:24:30.48ID:bDLzF0aS
結局予約語だけ大文字で書けばいいの?
開発効率落ちまくるけどどの参考書もそうしてるよな
0385NAME IS NULL
垢版 |
2017/03/06(月) 15:32:38.74ID:???
コーディング規約ってのがそれぞれのチームなり部署なりにあるだろ?
それに従えば良いだろ。
んで自分一人のものだけなら好き勝手に
0386NAME IS NULL
垢版 |
2017/03/06(月) 15:59:13.62ID:???
そうなんだけどさ、大文字と小文字使い分けるのってすごい面倒なんだよなぁ
玄人の皆さんは使い分けなきゃいけない状況のときどうやって書いてるの?
毎回shift+capslockしてるの?てか列名日本語にするのほんとやめてください
0387NAME IS NULL
垢版 |
2017/03/06(月) 16:09:32.32ID:???
使い捨ては全部小文字
あとで見返すことがあるものは予約後大文字、シフトに指置けばいいべ
0388NAME IS NULL
垢版 |
2017/03/06(月) 16:13:07.82ID:???
>>384
効率落ちまくるって、どんだけクエリ書いてるんだよ
300char/minだとして、大文字小文字意識しても5秒ほどしかかわらんだろ
つまり、1分の差がでるのに3600文字必要
毎日1万字書く奴がいたとしても、せいぜい3分/dayくらいの差だ
0389NAME IS NULL
垢版 |
2017/03/06(月) 19:02:01.27ID:aPuKjXeW
>>388
お前はキーパンチャーかwどんだけキーボードマスターだよw
0390NAME IS NULL
垢版 |
2017/03/06(月) 19:18:44.61ID:???
全部小文字でもいいだろ好きにしろ
ぱっと見てここSQLだなってわかるようにしたいなら大文字にすりゃいいし
動きゃいいんだよ
0391NAME IS NULL
垢版 |
2017/03/07(火) 02:45:55.03ID:???
>>381
大文字にするにあたって元の文字が大文字か小文字か判定する必要はないって話だと思うんだが、
あなたが言うように判定するのは無駄なので判定しないのが普通。
0392NAME IS NULL
垢版 |
2017/03/07(火) 10:30:00.17ID:???
>>388
キーパンチャーなみのタイプ速度で、普通は考えられないような量のクエリを1日にタイプするとしても、
それでも1日あたりの作業低下量は3分程度なんだが、>>384はどんだけタイプしてんだよって話だ

読解力ない奴って、底が知れんわ
0393NAME IS NULL
垢版 |
2017/03/07(火) 12:02:08.35ID:???
そもそもSQL誕生して何十年も経ってるのにいまだにこの議論してんだから
大文字小文字の問題は根深いよな

>>392
タイピング速度の問題ではなくてストレス的な意味の開発効率を言ってると思うぞ>>384
0394NAME IS NULL
垢版 |
2017/03/07(火) 13:44:27.84ID:???
>>393
この程度のコーディングルールでストレスとか、向いてないんじゃねーの?
0395NAME IS NULL
垢版 |
2017/03/07(火) 13:54:22.26ID:???
安価ミスしちゃうそそっかしい人はフォーマッタ使えばいいんじゃないでしょうか。
0396NAME IS NULL
垢版 |
2017/03/07(火) 14:03:09.27ID:???
>>393
> 大文字小文字の問題は根深いよな
根深いっつーか、どっち派もいるというだけでしょ
他言語だっていつまでたっても中括弧の書き方レベルの議論が終わらないし
0397NAME IS NULL
垢版 |
2017/03/07(火) 14:23:20.70ID:???
てか、別に大文字小文字で開発効率が落ちる奴がいても不思議じゃない。
不思議じゃないが、だから何ってはなしで。
俺らには関係ない。
0398NAME IS NULL
垢版 |
2017/03/07(火) 15:50:13.46ID:???
スレチかも知れんがMac使ってるやつはSequel入れとけフリーでこんないいの
なかなかないぞ
0399NAME IS NULL
垢版 |
2017/03/07(火) 16:33:49.67ID:???
大文字小文字もインデントの具合も全てどうでもいいと思ってるが・・・

カンマを行頭に置く奴だけは許せん!!!
0400NAME IS NULL
垢版 |
2017/03/07(火) 17:40:36.93ID:???
俺もこの程度で効率落ちまくるなら、プログラマに向いてないと思うよ
0401NAME IS NULL
垢版 |
2017/03/07(火) 17:52:14.51ID:???
プログラマなら、たとえMISRA-C完全準拠を要求されても、淡々と従うものだ。
0402NAME IS NULL
垢版 |
2017/03/07(火) 18:17:10.46ID:???
>>381
お前がw
このスレでw
一番低レベルだがなwww
0404NAME IS NULL
垢版 |
2017/03/07(火) 23:52:37.76ID:???
俺は逆に面倒だと思う人のほうがプログラマには向いてるとおもうけどな
if so を考えるのって大事だと思うぞコーダーって意味なら向いてないと思うけど
0405NAME IS NULL
垢版 |
2017/03/08(水) 12:54:37.42ID:???
>>404
面倒だと思うのはかまわない

ただ、この程度で効率落ちまくるレベルの奴は、プログラマに向いてないってだけだ
0406NAME IS NULL
垢版 |
2017/03/08(水) 15:50:08.89ID:???
「落ちまくる」のは向き不向きよりも不慣れなだけだろう

向き不向きの話をするなら、大文字で書くことに何の疑問も持たない人の方がプログラマに向いていない
理由があって大文字を選択してるなら良いことだと思うが
0407NAME IS NULL
垢版 |
2017/03/08(水) 16:03:35.29ID:???
マジでうざいわ。
いつまでやってんだ。
0408NAME IS NULL
垢版 |
2017/03/08(水) 16:10:50.92ID:???
>>406
キーワードを大文字で書けくらい、即慣れるだろ
ふつーのプログラマなら、効率が落ちまくったりしません
0409resumi
垢版 |
2017/03/08(水) 17:37:21.53ID:hjh5f++s
https://goo.gl/l3fSYl
これ本当??
普通にショックだね。。
0410NAME IS NULL
垢版 |
2017/03/08(水) 17:54:51.71ID:???
この粘着質、どこかで
0411NAME IS NULL
垢版 |
2017/03/08(水) 18:00:24.69ID:???
>>386
> 毎回shift+capslockしてるの?
誰も答えないのでコメントしとくか。

普通はCapsLockなんか使わないでしょ。
Shift推しながらタイプするだけ。
0412NAME IS NULL
垢版 |
2017/03/08(水) 18:11:39.11ID:???
予約語なんて一覧にして各RDBのドキュメントに乗ってんだから
ちょちょいとコピペして整形して正規表現で置き換えりゃいいだろ
0413NAME IS NULL
垢版 |
2017/03/08(水) 19:12:42.88ID:o80qSDDR
でたw正規表現厨w
0414NAME IS NULL
垢版 |
2017/03/08(水) 19:15:55.09ID:???
その正規表現がこちらになります
0415NAME IS NULL
垢版 |
2017/03/08(水) 19:58:12.66ID:???
age半角wはレベル低すぎんだよ
0416NAME IS NULL
垢版 |
2017/03/08(水) 20:37:34.03ID:o80qSDDR
それでは気をとりなおしてwレベル高い正規表現どうぞw
0417NAME IS NULL
垢版 |
2017/03/08(水) 21:24:42.52ID:???
エディタに丸投げするだけなのに
本気で言ってるのかどうなのか・・・
0418NAME IS NULL
垢版 |
2017/03/09(木) 18:52:44.02ID:cT/4yIz6
>>391
何をわけのわからないことを言ってるのか?コンピュータからしたら大文字と小文字のアルファベットは別の文字だぞ。
0419NAME IS NULL
垢版 |
2017/03/09(木) 18:55:38.08ID:cT/4yIz6
初心者が数字列を数値だと言い張ってゆずらないのと同じなのかな?

こういうのは時間の無駄だから関わらない方がいいわ。
0420NAME IS NULL
垢版 |
2017/03/09(木) 19:06:21.65ID:???
全くだな
話がわかってないID:cT/4yIz6 のようなキチガイは構ってはいけない
0421NAME IS NULL
垢版 |
2017/03/09(木) 19:25:54.71ID:l9oI+xHV
いやいくら馬鹿だからってキチガイさすがには言いすぎだろw


さて与太話はこれくらいにして
そろそろ正規表現の話題の戻そうか
0422NAME IS NULL
垢版 |
2017/03/10(金) 06:33:59.01ID:???
>>421
お前も馬鹿でキチガイのようだがw
0423NAME IS NULL
垢版 |
2017/03/10(金) 13:43:59.58ID:???
ぶっちゃけどんなプログラミング言語習得するよりDB極めたほうが金になるよな
業界の中でもDBエンジニアを目指すのが一番おすすめだわ
0424NAME IS NULL
垢版 |
2017/03/10(金) 13:44:11.48ID:???
正規表現、NGにした方がいい?
0425NAME IS NULL
垢版 |
2017/03/10(金) 13:58:27.33ID:???
>>423
クエリだけ書けてもプログラムないと高度な事できないだろ。分析止まりでランニングできない。
0426NAME IS NULL
垢版 |
2017/03/10(金) 14:55:14.16ID:???
>>425
逆にクエリが書けなればダイナミックなプログラムはかけないけどな
0427NAME IS NULL
垢版 |
2017/03/10(金) 14:59:24.06ID:???
>>426
だからどちらかじゃなくて両方必要って話だろ
0429NAME IS NULL
垢版 |
2017/03/10(金) 15:30:00.65ID:???
クエリしか書けないエンジニアなんているの?
0430NAME IS NULL
垢版 |
2017/03/10(金) 19:39:42.24ID:???
正規表現大好き💕
0431NAME IS NULL
垢版 |
2017/03/10(金) 19:42:09.92ID:???
改行考慮や大文字小文字無視するだけでも正規表現使う理由にはなる
正規表現と聞いて脊椎反射するやつはエディタで置換したことないやつ
0432NAME IS NULL
垢版 |
2017/03/10(金) 19:54:04.86ID:kvVonAc4
凄く難しいこと言ってSO
だけど全体的には凄くアタマ悪SO
正規厨って大体SOUL
0433NAME IS NULL
垢版 |
2017/03/10(金) 20:14:25.35ID:???
難しいように聞こえるならお前の頭が悪いのだろう
正規表現は一般的なテキスト処理にも使われるもので
プログラムの中だけで使われるものじゃない
0434NAME IS NULL
垢版 |
2017/03/10(金) 20:46:07.46ID:kvVonAc4
突如何者かに向けて正規教室を始めた正規厨SO FOOL
0435NAME IS NULL
垢版 |
2017/03/11(土) 09:13:34.14ID:???
正規とか言ってる阿呆は派遣か契約なのか?
0436NAME IS NULL
垢版 |
2017/03/11(土) 11:14:03.17ID:???
いいえ、ニートです
0437NAME IS NULL
垢版 |
2017/03/11(土) 11:57:22.36ID:???
正規表現知ってから、もう、文字数数えて
左から何文字目から何文字目でアレを見つけて
文字数数えて次のアレを見つけて文字数数えて
切り取って、みたいなことやらなくなったから
頭が鈍った気がするけど
便利でもう過去には戻れない。
0438NAME IS NULL
垢版 |
2017/03/11(土) 12:24:01.21ID:???
だが正規表現にバグがあった時のことを考えると
怖くて本番業務には使えない
0439NAME IS NULL
垢版 |
2017/03/11(土) 12:38:16.89ID:plFNS0RJ
正規厨ってニートだったのかYO
正規ばかり弄ってないで働けYO
0440NAME IS NULL
垢版 |
2017/03/11(土) 17:49:09.54ID:???
だからなんだよ正規って
頭悪いのか?
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況