1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [SQL] 2 00:00:02,000 --> 00:00:04,000 [クリストファーBARTHOLOMEW] [ハーバード大学] 3 00:00:04,000 --> 00:00:06,000 [これはCS50 IS] [CS50テレビ] 4 00:00:07,950 --> 00:00:11,620 だから、プログラマが保存および整理するためのツールと​​してデータベースを使用する 5 00:00:11,620 --> 00:00:13,620 テーブル内の永続データ。 6 00:00:13,620 --> 00:00:18,960 これは、データがハードドライブなどの不揮発性の中央値に格納されていることを意味します 7 00:00:18,960 --> 00:00:22,940 とコンピュータの電源がオフのときでも、データはそのまま残っています。 8 00:00:22,940 --> 00:00:29,530 そして、プログラマーとして、私たちのプログラムは、そのような保管などのシナリオでデータベースを利用する 9 00:00:29,530 --> 00:00:32,890 在庫を見上げて、Webフォームからユーザー情報、 10 00:00:32,890 --> 00:00:36,210 やサイトによっては表示内容に関する情報を更新。 11 00:00:37,150 --> 00:00:40,070 しかし、どのように我々は、実際には、私たちのデータベースと対話ん 12 00:00:40,070 --> 00:00:43,150 あるいは我々は、読んで保存、削除するために使用するのですか 13 00:00:43,150 --> 00:00:46,070 そして、これらのデータベーステーブル内に我々のデータを更新する? 14 00:00:47,280 --> 00:00:49,700 よく、答えは、我々はデータベース言語の特殊なタイプを使用するということです 15 00:00:49,700 --> 00:00:53,400 それは私達のデータベーステーブルと直接対話します。 16 00:00:53,400 --> 00:00:56,740 それの名前は、クエリ言語を構造化されている、 17 00:00:56,740 --> 00:00:58,740 [のStructured Query Language] 18 00:00:58,740 --> 00:01:00,740 または私はSQLなどを参照してください。 19 00:01:00,740 --> 00:01:05,100 >> さて、[SE-QUEL]、またはSQL、プログラミング言語ではありません 20 00:01:05,100 --> 00:01:08,580 その代わりに、それはコマンドの標準セットを提供する言語だ 21 00:01:08,580 --> 00:01:13,520 データベース管理システムの様々なデータを取得して操作する。 22 00:01:13,520 --> 00:01:17,630 CS50の目的のために、私たちは4つの基本的なコマンドをあげてみたいと思います: 23 00:01:17,630 --> 00:01:21,210 選択、挿入、更新、および削除します。 24 00:01:21,210 --> 00:01:26,230 さらに、我々は、phpMyAdminのと呼ばれるデータベースのWebインターフェイスを利用します 25 00:01:26,230 --> 00:01:29,890 その我々のSQL文を記述するアプライアンスにインストールされている。 26 00:01:30,830 --> 00:01:33,050 だから、あなたは、これらのコマンドを覚えやすくするために、 27 00:01:33,050 --> 00:01:37,080 私は我々のシナリオを支援するために棚にいくつかのカップケーキを持ってきた。 28 00:01:39,650 --> 00:01:42,210 あなたはケーキのデータベースを持っていると言う、 29 00:01:42,210 --> 00:01:44,490 あなたは、あなたのカップケーキに関するすべての情報を格納する場所。 30 00:01:44,490 --> 00:01:48,220 今では、データベースは多数の表を含めることができます 31 00:01:48,220 --> 00:01:50,950 とテーブル自体は、多くの列を含めることができます。 32 00:01:50,950 --> 00:01:57,020 私たちのカップケーキのデータベースの内部では、まずcupcake_cupboardと呼ばれるテーブルを持っています。 33 00:01:57,020 --> 00:02:00,500 このテーブルは、カップケーキに関するすべての情報を格納するために使用されます 34 00:02:00,500 --> 00:02:02,990 それはあなたの食器棚に、よく、されています。 35 00:02:02,990 --> 00:02:07,770 あなたのテーブル内にある列はカップケーキの属性を表します。 36 00:02:07,770 --> 00:02:14,560 たとえば、cupcake_cupboardのカラムです 37 00:02:14,560 --> 00:02:15,920 ケーキのID、CakeType、CakeColor、とCakeIsNice。 38 00:02:15,920 --> 00:02:23,040 このブール型指定された列は、ケーキはニースであるか否かを決定するために使用されます。 39 00:02:23,040 --> 00:02:26,560 我々は、select文を書くことから始めるつもりです。 40 00:02:26,560 --> 00:02:32,160 SELECTステートメントは、特定のデータベーステーブルのデータを取得するために使用されています。 41 00:02:32,160 --> 00:02:34,890 このシナリオでは、すべてを知りたい 42 00:02:34,890 --> 00:02:39,080 私達の食器棚に存在するすべてのカップケーキ約。 43 00:02:39,080 --> 00:02:48,670 これを行うための構文は、 "選択"スペーススター、または*、宇宙から宇宙私達のテーブルです 44 00:02:48,670 --> 00:02:52,050 cupcake_cupboardはどれですか。 45 00:02:52,050 --> 00:02:54,640 先に進み、それを実行してみましょう。 46 00:02:56,670 --> 00:03:00,140 >> 我々が見ることができるように、これらは私たちの食器棚にすべてのカップケーキです。 47 00:03:00,140 --> 00:03:05,110 それは*を注意することが重要だ、またはアスタリスクは、ワイルドカード文字である 48 00:03:05,110 --> 00:03:08,830 それはいくつかのテーブルのすべての列の集まりを意味する。 49 00:03:08,830 --> 00:03:13,650 通常、我々は、特定の列または列にアクセスすることができます 50 00:03:13,650 --> 00:03:16,950 実際の列名で*を置き換えることによって。 51 00:03:16,950 --> 00:03:21,220 我々はすべて、複数の列をしたいが、そうでなかったら、私達はこれを達成することができます 52 00:03:21,220 --> 00:03:25,620 コンマで各列を区切る列名を書き込むことにより、。 53 00:03:25,620 --> 00:03:28,620 たとえば、唯一cupcake_cupboardテーブル内CakeIdとCakeTypeを取得してみましょう。 54 00:03:28,620 --> 00:03:38,370 これを行うための構文は次のとおりです。SELECTスペースCakeIDのコンマ 55 00:03:38,370 --> 00:03:44,370 私たちのテーブルからCakeTypeスペース、cupcake_cupboard。 56 00:03:44,370 --> 00:03:46,370 先に進み、これを実行してみましょう。 57 00:03:49,340 --> 00:03:52,670 そしてここで、我々は現在だけでなく、我々は、指定した2つの列を持つ 58 00:03:52,670 --> 00:03:54,670 私達の食器棚内の各カップケーキのために。 59 00:03:54,670 --> 00:03:57,710 また、指定することによって、私たちのクエリ結果を絞り込むことができます 60 00:03:57,710 --> 00:04:00,910 ちょうどテーブル名の後に "where"句。 61 00:04:02,000 --> 00:04:05,410 例えば、我々の戸棚にケーキがあるように見える 62 00:04:05,410 --> 00:04:08,660 それは、まあ、そう見て良いことではありません。 63 00:04:08,660 --> 00:04:13,950 のが見て、よく、とても素敵されていない私達の食器棚にあるすべてのカップケーキを把握しましょう 64 00:04:13,950 --> 00:04:16,110 "where"句を使用しています。 65 00:04:16,110 --> 00:04:26,390 これを行うための構文は次のとおりです。スペースcupcake_cupboard、SELECT FROMスペース*スペース 66 00:04:26,390 --> 00:04:34,080 宇宙空間のWHERE私たちの条件列、この場合CakeIsNice =、 67 00:04:34,080 --> 00:04:36,900 Falseの場合、ブール値。 68 00:04:36,900 --> 00:04:42,750 それはあなたの文字列を使用している場合は、単一引用符で囲む必要があることに注意することが重要です。 69 00:04:42,750 --> 00:04:49,620 これは、SQLのすべての文字列に当てはまるものであり、または、SQLデータベースの用語では、変形文字 70 00:04:49,620 --> 00:04:51,620 VARCHARデータ型として知られている。 71 00:04:51,620 --> 00:04:57,660 この場合において、我々はブール値ではなく文字列である、TrueまたはFalseを使用しています。 72 00:04:59,120 --> 00:05:00,660 先に進み、このコマンドを実行してみましょう。 73 00:05:00,660 --> 00:05:05,340 >> 驚くなかれ、それは我々が1チョコレートを持っているケースである 74 00:05:05,340 --> 00:05:07,920 私達の食器棚でとても素敵ではないカップケーキ。 75 00:05:09,620 --> 00:05:11,460 次に、我々は、insert文を記述するつもりです。 76 00:05:11,460 --> 00:05:15,560 insert文は挿入または追加するために使用され 77 00:05:15,560 --> 00:05:17,770 データベースのテーブルにデータの追加行。 78 00:05:17,770 --> 00:05:23,160 私たちのシナリオを再考、我々はちょうど真新しいカップケーキを作ったと仮定してみましょう。 79 00:05:25,910 --> 00:05:30,080 我々は非常にカップケーキを食べる人を組織しているので、我々はこの新しいケーキを挿入する必要があるとしている 80 00:05:30,080 --> 00:05:32,330 当社cupcake_cupboardテーブルインチ 81 00:05:32,330 --> 00:05:40,690 、我々のテーブルスペースにスペースを挿入しますこれを行うための構文はこれです 82 00:05:40,690 --> 00:05:46,830 cupcake_cupboard、スペース(、 83 00:05:46,830 --> 00:05:51,060 そしてここで我々は、カンマで区切って列名を指定する 84 00:05:51,060 --> 00:05:59,790 CakeTypeコンマCakeColor CakeIsNiceカンマ)スペース。 85 00:05:59,790 --> 00:06:06,540 これに続いて、我々はここにワード値空間(書き込み、 86 00:06:06,540 --> 00:06:12,170 我々は、コンマで区切られ、また、それぞれ各列の値を入力します。 87 00:06:12,170 --> 00:06:17,830 彼らはすべてのVARCHAR値であるため、単一引用符は、我々は、単一引用符で囲みます 88 00:06:17,830 --> 00:06:26,780 ピーナッツバター 'コンマ'、LIGHT BROWN 'コンマ真。 89 00:06:26,780 --> 00:06:30,480 さて、それはそれぞれの行自体を識別するための固有の番号を付与することが重要です。 90 00:06:30,480 --> 00:06:33,660 カラムを自動インクリメントすると、このように提供しています 91 00:06:33,660 --> 00:06:37,410  "いいえtwo、同じIDはこれまで、このテーブルに存在することはありません。" 92 00:06:37,410 --> 00:06:39,480 先に進み、実行してみましょう。 93 00:06:39,480 --> 00:06:45,380 我々はすべての整理、そこに行く。 94 00:06:49,720 --> 00:06:52,100 >> 我々は、記述しようとしている次のSQL文は、UPDATEステートメントである。 95 00:06:52,100 --> 00:06:55,650 UPDATE文は、列内のデータを変更するために使用することができ 96 00:06:55,650 --> 00:06:58,440 データベーステーブル内の既存の行の。 97 00:06:59,670 --> 00:07:03,420 以前の私たちのシナリオでは、SELECTステートメントを使用して、我々はカップケーキを同定 98 00:07:03,420 --> 00:07:08,300 そのCakeIsNice値Falseであった私たちのcupcake_cupboardのテーブル内。 99 00:07:08,300 --> 00:07:12,050 、私たちのピーナッツバターのカップケーキはオーブンに入ったままの状態と仮定してみましょう 100 00:07:12,050 --> 00:07:15,790 我々はそれほど素敵なカップケーキは非常にいいました。 101 00:07:18,020 --> 00:07:22,240 ので、非常に組織されて、私達は私達のカップケーキはこの値を反映したい 102 00:07:22,240 --> 00:07:24,240 当社cupcake_cupboardテーブルインチ 103 00:07:24,240 --> 00:07:28,710 したがって、のはこれを反映して、データベース内の私達のチョコレートケーキを更新してみましょう。 104 00:07:28,710 --> 00:07:39,720 構文は次のとおりです。UPDATEのスペース我々のテーブル、cupcake_cupboard、スペースのSETスペース 105 00:07:39,720 --> 00:07:44,240 我々は変更したい列、CakeIsNice =。 106 00:07:44,240 --> 00:07:49,210 その後、ここで我々は、我々の新しい値をTrueスペースを入れてください。 107 00:07:49,210 --> 00:07:54,290 今、私たちは、この値を持つすべての行を更新したくないので、 108 00:07:54,290 --> 00:07:57,400 私たちは私たちを特定するでしょう "where"句を提供したい 109 00:07:57,400 --> 00:07:59,830 我々は、変更したい正確な行へ。 110 00:07:59,830 --> 00:08:03,690 この場合において、我々は1つだけのカップケーキがあることを知っている 111 00:08:03,690 --> 00:08:06,670 それは偽のCakeIsNice値を持っています。 112 00:08:06,670 --> 00:08:11,030 さらに、我々はまた、我々は正しい行を更新していることを保証します 113 00:08:11,030 --> 00:08:13,030 "そして、"句を使用します。 114 00:08:14,340 --> 00:08:17,270 我々は、クエリをさらに絞り込むために "そして"句を使用します。 115 00:08:17,270 --> 00:08:20,380 この場合において、我々はカップケーキはチョコレートであることを知っているので、 116 00:08:20,380 --> 00:08:23,160 我々はこのCakeType列を使用します。 117 00:08:23,160 --> 00:08:31,500 WHEREスペースわれわれの条件列空間CakeIsNiceスペースは= Falseにすると、 118 00:08:31,500 --> 00:08:38,330 とスペースCakeType = "チョコレート"。 119 00:08:38,330 --> 00:08:41,880 だから、それをすべて一緒に入れて、この更新ステートメントは言う 120 00:08:41,880 --> 00:08:44,670 私たちのカップケーキ戸棚にすべてのケーキを見つけ、 121 00:08:44,670 --> 00:08:50,520 と、その列CakeIsNiceがFalseの値が含まれているケーキがある場合 122 00:08:50,520 --> 00:08:54,130 とCakeTypeは、値chocolateを含んでいる 123 00:08:54,130 --> 00:08:58,240 我々はTrueに、特定の行のCakeIsNice値を更新したいと思います。 124 00:08:58,240 --> 00:09:01,140 それでは、先に行くと、文を実行してみましょう。 125 00:09:03,860 --> 00:09:05,860 そして今、私たちが組織している。 126 00:09:06,650 --> 00:09:09,220 >> カップケーキのすべてのこの話は、私は少し空腹にな​​りました。 127 00:09:09,220 --> 00:09:11,360 私は、1つに自分自身を助けるべきだと思う。 128 00:09:11,360 --> 00:09:17,670 しかし、私は実際にこのケーキを食べれば、私は、少なくとも、その存在を削除する必要があります 129 00:09:17,670 --> 00:09:19,670  当社cupcake_cupboardテーブルから。 130 00:09:20,650 --> 00:09:22,590 これを行うには、我々は、 "delete"文を使用します。 131 00:09:22,590 --> 00:09:27,400 "削除"ステートメントは、テーブルからすべての行または一部の行を削除するために使用することができます。 132 00:09:27,400 --> 00:09:29,920 あなたはテーブルからいくつかの特定の行を削除したい場合は、 133 00:09:29,920 --> 00:09:34,360 次にあなたは、このように列を指定して、 "where"句を指定する必要があります 134 00:09:34,360 --> 00:09:37,660 それはあなたが削除したい行に一意である必要があります。 135 00:09:37,660 --> 00:09:47,370 これは、構文は次のとおりです。宇宙から宇宙我々のテーブル、cupcake_cupboard、スペースを削除します。 136 00:09:47,370 --> 00:09:51,760 さて、この時点で、あなたは、これははるかにあなたのdelete文の中にある場合、 137 00:09:51,760 --> 00:09:54,240 あなたは非常に慎重になりたい。 138 00:09:54,240 --> 00:09:59,970 私はこのクエリを実行したい場合例えば、いくつかの "where"句を提供しなくてもです 139 00:09:59,970 --> 00:10:04,500 私は、このcupcake_cupboardテーブルのすべてのデータを失うことになる 140 00:10:04,500 --> 00:10:09,590 しかし、私はすでに私のケーキIDが一意であることを知っているので、私が使用します 141 00:10:09,590 --> 00:10:12,410 私の "where"句のための赤いビロードのケーキのID。 142 00:10:14,550 --> 00:10:20,670 WHEREスペースのコラム、CakeID = 1。 143 00:10:20,670 --> 00:10:25,010 これは整数値であるため、単一引用符で囲む必要はありません。 144 00:10:25,010 --> 00:10:27,020 だから、文を実行してみましょう。 145 00:10:33,560 --> 00:10:35,990 さて、今私たちは、このカップケーキの存在を一掃したこと 146 00:10:35,990 --> 00:10:40,360 当社cupcake_cupboardテーブルから、我々は唯一の左の1点を持っている: 147 00:10:41,680 --> 00:10:43,680 それが消えることを確認します。 148 00:10:43,680 --> 00:10:46,990 私はクリストファー·バーソロミューだ。これはCS50です。