[音楽再生] DOUG LLOYD:私たちのビデオで Web開発のトピックに、 我々は、の概念を述べました データベースに数回、右? あなたがしているそうデータベース からで、おそらくお馴染み Microsoft Excelを使用して言います またはGoogleスプレッドシート。 これは、実際には組織的です テーブル、行、および列のセット。 そして、データベースがどこにあります 当社のウェブサイトの店 重要な情報 当社のウェブサイトのために正しく動作します。 ここでも、本当に一般的な例 ユーザ名とパスワードを記憶しています データベースでは、ときにするように 当社のウェブサイトにログインし、 データベースには、確認するために照会することができます そのユーザーがデータベースに存在する場合。 そして、彼らは、それをチェックしている場合 そのパスワードが正しいです。 そして、彼らのパスワードが正しければ、 その後、我々は彼らにどのようなページを与えることができます 彼らが要求しています。 だから、もう一度、おそらく精通しています ExcelやGoogleからのこの考えに スプレッドシート。 我々は、データベースを持っています、 テーブル、行、および列。 そして、それは本当に一種です 基本セットの ここでは、階層内訳の。 そこでここでは、Excelのスプレッドシートです。 そして、あなたは今まで、これを開いた場合 または他の同様のプログラム あなたはこれらがここにあることを知っています 1、2、3、4、5、6、7 rows--。 これらは、列です。 たぶんここでダウンして、あなたがかもしれないが ひどくmuch--この機能を使用しません 私たちは持っているin--ズームう シートのこのアイデア。 ので、多分これらのシート、場合 私は前後に交互に、 異なるテーブルがあること 私のデータベースに存在します。 そして、私たちはすべての例を続ける場合 途中、このデータベースの名前 ブック1です。 たぶん私は、ブック2とブック3を持っています。 したがって、各Excelファイルであります データベース、各シートはテーブルであり、 各テーブルの内側に私が持っています 行と列のこの考え。 だから、どのように私はこのデータベースで動作しますか? どのように私はそれから情報を得るのですか? まあと呼ばれる言語がありますSQL-- 私は通常ちょうどSequel--をコールします それの略 構造化照会言語。 それはプログラミング言語であり、 しかし、それはかなり限定されたプログラミングです 言語。 それは非常に他の人のようではありません 私たちが働いていること。 しかし、この目的 プログラミング言語 に、データベースを照会することです データベースの情報を尋ね、 内の情報を検索 データベースなど。 また、CS50--で、それは非常にです 共通のプラットフォームは、それは、MySQLと呼ばれています。 それは我々がコースに使用するものです。 これはオープンソースです 確立プラットフォーム いわゆるリレーショナルdatabase-- データベース、効果的。 我々は、取得する必要はありません あまり詳細に 何にリレーショナルデータベースです。 しかし、SQL言語です 作業に非常に長け MySQLおよび他の類似と リレーショナルデータベースのスタイル。 そして、多くのインストールの MySQLは何かが付属して これは、phpMyAdminのと呼ばれます グラフィカル・ユーザーであります そのGUI-- interface-- それはもう少し作ります 実行するためのユーザーフレンドリーな データベースクエリ、 データベースは、単に使用されていないため、 上級プログラマによって、右? 時々あります これらの中小企業、 彼らはに余裕がありません プログラマーのチームを雇います、 彼らはまだ保存する必要があります データベース内の情報。 phpMyAdminのような何か 誰かのために、それは非常に簡単になります 誰に前にプログラムすることはありませんです ピックアップし、どのように精通 データベースで動作するように。 問題は、phpMyAdminは、一方で それは学習のための素晴らしいツールです データベースについては、マニュアルです。 あなたがにログインする必要があるとしています それとコマンドと種類を実行します 手動で物事。 そして、私たちは私たちのから知っているよう PHPのWebプログラミングの例、 手動で行うようになります 当社のウェブサイト上での事、 私たちはダイナミック、アクティブな応答をしたい場合 ウェブサイトは、おそらくない最良の方法。 我々は、への道を見つけたいです おそらく何らかの形でこれを自動化します。 そして、SQLはこれを実行することが可能となります。 だから我々はするつもりだとき SQLを使用した作業を開始、 我々が最初に持っている必要があります で動作するデータベース。 データベースを作成することです 何かあなたはおそらく ので、phpMyAdminの中で行います あなたは一度だけそれを行う必要があります そうするための構文 多くの方が簡単です。 それはそれを行うには非常に簡単です グラフィック・ユーザ・インタフェースで コマンドとしてそれを入力するよりも。 コマンドは少し面倒を取得することができます。 同様に、表を作成することができます 同様にかなり面倒な取得します。 データベースを作成するようなので、事 あなたがしているテーブルを作成します おそらく唯一のやろうとしてonce-- テーブルごとに一回、一回あたりのdatabase-- それはでそれを行うには、[OKです グラフィカルなインターフェイス。 過程で テーブルを作成、あなた'LL また、すべてを指定する必要があります そのテーブルになります列。 情報のどのような行い あなたがテーブルに保存したいですか? たぶん、ユーザーの名前と生年月日、 パスワード、ユーザID番号、そしておそらく 都市と状態、右? そして、毎回のために私たちは、ユーザーを追加したいです データベースには、我々はすべての6つを取得したいです これらの情報の。 そして、我々は追加することによってそれを行います テーブルへの行。 だから、最初にデータベースを作成し、 その後、我々は、テーブルを作成します。 作成の一環として、 テーブルは、我々が求められます すべての列を指定すること 私たちは、この表にしたいと思います。 そして、我々はスタートとして追加します データベースへの情報 およびデータベースの詳細照会 generally--追加するだけではありません、 しかし、他のすべて、我々 我々が扱うことでしょうdo-- 1であるテーブルの行を持ちます 全体のセットからユーザーの情報。 だから、すべてのSQL列は可能です 特定のデータ型のデータを保持します。 だから我々は一種のこれを解消しました PHPのデータ型の考え方、 しかし、彼らは、SQLにここに戻っています。 また、データ型がたくさんあり​​ます。 ここではわずか20それらのだが、 それも、それらのすべてではありません。 だから我々はINTs--のようなアイデアを持っています 我々は、おそらく知っていますIntegers-- この列は整数を保持することができます。 そしてバリエーションがありますthereon-- SMALLINT、TINYINT、MEDIUMINT、BIGINT。 多分、我々は常に4刺さを必要としません。 多分私達は8バイトを必要とし、私たちは 整数に対するこれらの変動を使用することができます 少しより多くのスペース効率的に。 我々は、我々の小数を行うことができます 浮動小数点数を行うことができます。 これらはかなり似ています。 いくつかの違いがありますが、 あなたが希望する場合 ルックアップするのが好き ガイドのSQL並べ替え、あなた 何わずか見ることができます 違いは、それらの間にあります。 多分私達は、保存したいです 日付と時間の情報。 多分、我々はを追跡しています ユーザーは、当社のウェブサイトに参加したとき、 ので、多分私達がしたいです コラムを持っています 日付時刻またはタイム・スタンプ ときに、ユーザーが実際に示しています サインアップ。 私たちは、幾何学的形状とラインストリングを行うことができます。 これは実際にはかなりクールです。 私たちは外にマップすることができ 使用して地理的領域 GISは面積をプロットするために調整します。 だから、実際にその種を保存することができます SQL列の情報。 TEXTは多分、テキストだけの巨大なブロブです。 列挙型は、一種の興味深いです。 彼らは実際にC言語で私たちにはない存在します 彼らはないですので、それらについての話 ひどく一般的に、少なくともCS50を使用していました。 しかし、それは、どの列挙データ型です 制限された値を保持することが可能です。 ここでは本当に良い例は以下のようになります 7列挙型を作成します 可能な値は、日曜日、月曜日、 火曜日、水曜日、木曜日、金曜日、 土曜日、右? のデータ型デー 週は、存在しません。 しかし、我々は作成することができます このような列挙型データ型 その列は今まで保持できること これらの7つの可能な値のいずれか。 我々は、すべて列挙しました 可能な値の。 その後、我々は、CHARとVARCHARを持っています、 私は、これらの緑を着色しました 私たちは、実際にしているので、 秒を取るつもり 違いについて話をします これら二つのものの間で。 だから、CHARとは異なり、C場所 CHARは、単一の文字でした、 SQLのCHARはを参照 固定長文字列。 そして、我々はこれを作成するとき コラム、実際に我々 文字列の長さを指定することができます。 したがって、この例では、 私たちは、CHAR(10)を言うかもしれません。 それはすべてのことを意味し その列の要素 情報の10バイトで構成されます。 これ以上、劣らず。ん だから我々がしようとすると15に入れた場合 ビットまたは15文字要素 または、この列に値、 我々は最初の10を取得しています。 私たちは二つに置く場合 文字長の値、 我々は2を持っているつもりです 文字、その後8ヌル刺さ。 我々はそれよりも効率的になることは決してないだろう。 VARCHARは、一種のようなものです 文字列の私たちの考え方 我々は理解していること CからのやPHPからと。 これは、可変長の文字列です。 そして、あなたが作成したとき このコラム、あなただけ 可能な最大の長さを指定します。 ので、多分99、または一般的に255。 それが最大の長さになります。 そして、私たちは保存された場合 15文字の文字列、 我々は多分、16を15バイトを使用します ヌルターミネータのバイト。 私たちが保存されている場合 3文字の文字列、 我々は、3つまたは​​4つのバイトを使用します。 しかし、我々は完全な99を使用することはありません。 では、なぜ我々は両方持っているでしょうか? さて、私たちはどのように把握する必要がある場合 長い何かがVARCHARであり、 我々は、反復の種類に持っています 我々はC言語でやったようにそれを横切っ 止まる場所と把握。 私たちはそのすべてを知っている場合は一方 このコラムでは、多分、10バイトであります 我々はその情報を知っている、私たちはジャンプすることができます 10バイト、10バイト、10バイト、10バイト、 そして、常に見つけます 文字列の先頭。 だから我々はいくつかを持っていること CHARとスペースを無駄にし、 多分貿易があります より良いスピードを持っていることのオフ データベースをナビゲートインチ しかし、おそらく私たちが望みます VARCHARの柔軟性 代わりに、私たちのCHAR場合having--の 255でしたが、私たちのユーザーのほとんど 唯一の3つまたは​​4つのバイトを入力しました。 情報または3つまたは​​4つの価値 情報の価値がある文字。 しかし、一部のユーザーが使用していました 全255、多分 VARCHARがより適切であろう。 これはトレードオフの一種だし、 一般CS50の目的のために、 あなたはについてはあまり心配する必要はありません あなたがCHARまたはVARCHARを使用するかどうか。 しかし、現実の世界では、これらの事 これらの列のすべてのために重要ではありません 実際の物理的なスペースを取ります。 そして、中に物理的な空間、 現実の世界では、プレミアムで来ます。 だから、一つの他の考慮事項 あなたは、テーブルを構築しているとき なる1つの列を選択することです 主キー何と呼ばれています。 そして、主キー列であります すべての単一の値は一意です。 そして、それは簡単にあなたができることを意味し 見ているだけから単一の行を選びます その行の主キーで。 例えばそう、あなた 一般的に、ユーザーと、 2人のユーザーたくない人 同じユーザID番号を持ちます。 だから多分あなたは持っています 多くの情報、 多分2人のユーザがすることができます 同じname--を持っています あなたはジョン・スミスとジョン・スミスを持っています。 それは、必ずしも問題ではありません 複数の人がいるので、 世界にジョン・スミスという名前。 しかし、我々は唯一のユーザーID番​​号を持っています 10、一人のユーザID番号11、12、13。 私たちは、二人のユーザーを持っていません 同じ番号を持ちます、 そしてので、多分ユーザーID番​​号 良い主キーになります。 我々は、任意の重複を持っていません、 私たちは今、一意にすることができます ただ一つ一つの行を識別 その列を見て。 実際に主キーを選択することができます その後のテーブル操作を行います あなたが活用できる​​ため、非常に簡単に 特定の行があるという事実 一意であること、または特定の列 データベースやテーブルの 選ぶのにユニークになります 特定の行アウト。 また、関節の主要なを持つことができます あなたが機会を見つけることが重要な、 ちょうどである、使用します その2列の組合せ 一意であることが保証されています。 だから、多分あなたは1を持っています ようとBSのコラム、 一つだ1列、2、 三、しかし、あなたは今までよ 単一A1、シングルを持っています A2などのように。 しかし、あなたは、B2を持っているかもしれませんが、 C2、またはA1、A2、A3、A4。 だから、複数のように、複数があるかもしれません 旅館、複数のものを、複数の補数、 しかし、あなたは今まで持つことができます 単一A1、B2、C3、など。 だから私が言ったように、SQLがあります プログラミング言語 しかし、それはかなり限定された語彙を持っています。 それはほど広大ではありません CとPHPと他の言語 我々はもちろんで話すこと。 それは、より冗長aは 私たちがしているものよりも言語 この中での話に行きます このため、ビデオの映像、 我々はについて話をするつもりです 4操作、我々 テーブルの上に実行することができます。 これ以上あります。 私たちは、これ以上の操作を行うことができ、 しかし、我々の目的のために、 我々は、一般的に使用してことになるだろう わずか4 operations--挿入、 選択、更新、および削除。 そして、あなたはおそらく直感的に推測することができます これらの事のすべての4つは、何をすべきか。 しかし、我々はビットに行きますよ それぞれの詳細。 この目的のためにそのように ビデオ、のと仮定しましょう 我々は、次の2つを持っています 単一のデータベース内のテーブル。 私たちは持っているユーザーと呼ばれるテーブルを持っています 4 columns-- ID番号、ユーザー名、 パスワード、およびフルネーム。 そして、我々は、第二​​を持っています 同じデータベース内のテーブル 単に情報を格納と呼ばママ ユーザー名と母について。 すべての実施例については、これ このビデオでは、我々はよ このデータベースを使用すると、 それに続いて更新されます。 それでは、私たちがしたいとしましょう テーブルに情報を追加します。 つまり、挿入操作が何をするかです。 のすべてを説明するには これらのコマンドは、私は行きますよ あなたが使用する一般的な骨格を得ました。 基本的には、クエリのため、 かなり似て行っています、 私たちは変化することになるだろう 情報の若干異なる作品 表と異なることを行います。 だから、INSERT、スケルトンのための 種類のこのようになります。 私たちは、に挿入します 特定のテーブル。 その後、我々は開き括弧を持っています そして、列のリスト 我々は値を挿入することを。 閉じる括弧、 値は以下の、そしてその後 再び、我々は値を一覧表示します 私たちはテーブルに載せていきたいと思います。 このだから例 以下になります。 私は、テーブルに挿入します ユーザー以下columns-- ユーザ名、パスワード、およびフルネーム。 私が入れているので、新しい行 私たちがしていると、これらの3つの列で 値に置くつもり ニューマン、USMAIL、およびニューマン。 したがって、この場合には、私はよ 小文字ニューマンを置きます ユーザ名欄に、パスワード USMAIL、およびフルネーム資本N フルネーム欄にニューマン。 だからここに何のデータベースです 前のように見えました。 ここではどのようなユーザーテーブルが上です 我々はこれをした前に、トップのように見えました。 我々はこれを実行した後、 クエリは、我々はこれを取得します。 私たちはテーブルに新しい行を追加しました。 しかし、この一つのことに気づきます 私は指定していないこと、 何とか私は値を持っています 右ここでこの12である、のために。 私は私がしたいとしませんでした そこにID番号を入れます。 私は、ユーザ名を入れたいと思いました パスワード、フルネーム。 そして、私はそれは大丈夫だ、ということでした。 しかし、私はまた、この12を得ました。 なぜ私はこの12を取得したのですか? まあ、それはことが判明 あなたが定義されている場合 あなたのことを行っている列 通常は、主キー、 私は、ID番号を言ったように。 それは必ずしもありません ID番号であることを行って、 それは、通常することをお勧めします 整数値のいくつかの並べ替えです。 あなたは、phpMyAdminの中のオプションを持っています あなたは、データベースを作成しているとき または、あなたのテーブルには、それを設定するには 自動インクリメントとしてカラム。 ときに、本当に良いアイデアどれ あなたは主キーで作業しています、 あなたはすべての値をしたいので、 その列に一意です。 そして、あなたが指定するのを忘れた場合 複数の人にとって、 あなたは今どこに状況があります その列はもはやユニークません。 あなたは、2つのブランクを持っていないので、あなたは何もすることができます 長い一意column--を識別 または、あなたは、もはや一意にすることができません その列に基づいて行を識別します。 それは、そのすべてを失ってしまいました 主キーとして値。 だから明らかに私がやっていること ここでは、ユーザIDを設定されています 自動インクリメントのカラムごとになるように 時間は私は、テーブルに情報を追加 それは自動的に私を与えます 主キーの値。 だから私はので、それを行うことを決して忘れないことができます データベースは、私のためにそれを行います。 だから、ちょっとうれしいです。 我々が取得する理由となるようです そこに12、私はしましたので、 自動インクリメントまでその列を設定します。 私は他の人を追加した場合 私が追加された場合には、13になるだろう 他の誰かがそれがように14である、と思います。 それでは、もう一つだけ挿入を行いましょう。 私たちはで、ママのテーブルに挿入します 特に、ユーザ名と母親 列、値 クレイマーとバブスクレイマー。 そして、私たちは前にこれを持っていました。 我々はそれを実行した後 SQLクエリは、我々はこれを持っています。 私たちは、クレイマーとバブスを追加しました ママテーブルにクレーマー。 だから、挿入です。 SELECTは、私たちが抽出するために使用するものです テーブルの情報。 だから、これは我々が取得する方法です データベースのうち、情報。 だから、SELECTコマンドがあることを行っています 非常に頻繁にプログラミングで使用。 一般的にはframework-- 一般的なスケルトンは次のようになります。 から列のセットを選択します テーブル、次に場合 あなたがcondition--を指定することができますか 私たちは通常、述語を呼んでいるもの、 通常我々は、SQLで使用される用語です。 しかし、それは基本的に何 特定の行はあなたが取得したいです。 あなたがしたい場合は、代わりに取得します すべては、それを絞り込みます あなたがそれを行うだろう場所です。 そして、必要に応じて、あなたもすることができます 特定の列での順序。 だから、多分あなたはソートされたものを持っているしたいです アルファベット順に1列に基づいて、 またはアルファベット別に基づきます。 ここでも、WHEREおよびORDER BYオプションです。 しかし、彼らはおそらくなるだろう 特にuseful-- WHEREに有用であろう あなたがないように絞り込みます バックデータベース全体を取得し、 それを処理する必要がある、あなただけの取得します あなたが気にすることを、それの作品。 したがって、たとえば、私が選択することをお勧めします ユーザのID番号とフルネーム。 それでは、これは、次のようになりますか? だからここに私のユーザー表です。 私はID​​NUMを選択したいです ユーザーからのフルネーム。 私は何を取得するつもりですか? 私はこれを取得するつもりです。 私はそれを絞り込むなかったので、私はよ すべての行のためのID番号を取得します 私は完全に取得しています すべての行から名前を付けます。 OK。 私は、パスワードを選択したい場合はどう ユーザーからWHERE--ので、今 私は条件を追加しています、predicate-- IDNUMは12未満です。 だからここに私のデータベースには、再びですが、 私のユーザーテーブルトップ。 私は私がしたい場合は取得するつもりです その情報を選択し、パスワード、 ユーザIDまたはIDNUMは12未満である場合? 私はこれを取得するつもりです 情報バック、右? それはあまり、IDNUMは10であることを起こります 12よりも、ID番号11 12よりも少ないです。 私はそれらの行のためのパスワードを取得しています。 それは私がを求めたものです。 これはどうですか? 私は何からスターを選択する場合 ユーザ名はジェリーに等しいママテーブル? [OK]を選択し星が特別です ワイルドカードの一種いわゆる 私たちはすべてを取得するために使用すること。 そこで、彼らは選択言っています これは、カンマ母のユーザ名 だけであることを起こっ この表の2列、 私は星を選択することができます そして、すべてを取得 ユーザ名はジェリーに等しいです。 そしてそうそれは私が得るだろうものです 私は、その特定のクエリを行った場合。 さて、データベースがあります 彼らができるので素晴らしいです 私たちは、おそらく情報を整理します 私たちよりもより効率的にビット そうでない場合があります。 私たちは必ずしも保存しないでください 情報のすべての関連作品 同じテーブル内のユーザーに関する。 私たちは、そこに2つのテーブルを持っていました。 私たちは、格納する必要があります みんなの母親の名前、 そして多分私達は、社会保障を持っていません 数は、我々は彼らの誕生日を持っています。 それは必ずしも必要はありません 同じテーブルにあるように。 限り、我々が定義することができますように tables--間の関係 それはどこだとリレーショナル データベースの用語は、一種の来ます play--限り、我々が定義することができますように テーブル間の関係、 我々は一種の区分することができます または抽象的なものにせよ、 我々は持っている場所 本当に重要な情報 我々は、ユーザのテーブルに気。 そして、我々は、補助的な情報を持っています 他のテーブルや追加情報 私たちは主に戻って接続できること 特定の方法でユーザのテーブル。 そこでここでは、この2つのテーブルを持っていますが、 それらの間の関係があり、 右? これは、ユーザ名のように思えます 何かあるかもしれません それは間で共通に存在します これらの2つの異なるテーブル。 だから我々が今持っているものならば 状況どこ からユーザーのフルネームを取得したいです ユーザーの表、および母親の 母テーブルから名前は? 我々は、取得する方法を持っていません それは右、スタンドとしてそれ? 含まれている単一のテーブルはありません フルネームと母親の名前の両方。 私たちは、そのオプションを持っていません 我々はこれまでに見てきたものから。 そして、私たちは導入する必要があり JOINのアイデア。 そして、JOINを、おそらくあります 最もcomplex-- それは本当に、非常に複雑な操作です 我々は、ビデオでは約話をするつもりです。 彼らは、少し複雑です しかし、あなたはそれのこつを得る一回、 彼らは実際にはそれほど悪くはありません。 それはちょうど、SELECTの特殊なケースです。 私たちは、のセットを選択するつもりです 参加表の列 いくつかの述語上の第二のテーブルです。 この場合、this--のようにそれについて考えます 表1は、ここの上に1円です 表2は、ここを介して他のサークルです。 そして、その述語部分 中央では、です 一種のあなたが考える場合のように ベン図などについて、どのような 彼らが共通しているのですか? 我々は、これら2つのテーブルをリンクします 彼らが共通して持っているものに基づいて、 そしてこの仮想テーブルを作成 それは、2つの合併です。 だから我々は、これを参照してくださいよ 例と多分それがお手伝いします 少しそれをオフにします。 だから、多分あなたは選択したいです user.fullnameとmoms.mother に参加しているユーザからの あらゆる状況でママ表 ここで、ユーザー名の欄 それらの間で同じです。 そして、これは新しいです ここでは、構文、このユーザー。 そして、ママ.. 私は複数のテーブルをやっている場合 一緒に、私はテーブルを指定することができます。 私は特定の上で区別することができます その上そこに非常に下部にあります。 私はユーザー名を区別することができます ユーザー表の列 のユーザ名欄から otherwise--あるお母さんテーブル、 私たちはユーザ名が等しいと言ったら 本当にいないユーザ名、 何の意味。 我々は、彼らが一致する場所にそれをやってみたいです。 だから私は、テーブルと指定することができます 状況の場合は列名 どこにそれが不明確になります 私は何を話しています。 それは私がやっているすべてですので、私はそこにあります この表から、このコラムを言って、 そして、非常に明示的です。 だからもう一度、私が選択しています フルネームと母親の名前 一緒に連結されたユーザテーブルから あらゆる状況でママテーブル付き ここで、彼らはそのcolumn--を共有します 彼らは、そのユーザ名の概念を共有しています。 そこでここでは前に持っていたテーブルがあります。 これは私たちの状態であり、 それが今存在するデータベース。 我々が抽出している情報 これは、から始めることです。 これは、我々が行っている新しいテーブルです 作成するために一緒にこれらを組み合わせます。 そして、我々は強調表示していない気付きます ユーザーの表でニューマンの行、 私たちは強調表示していません ママ・テーブルのクレーマーの行 どちらもが内に存在するため 両方が両方のテーブルにsets--。 共通する情報のみ それらの間にジェリーは両方のテーブルにあります そして、gcostanzaは両方のテーブルにあります。 だから私たちは、SQLを実行したときに、JOIN、私たち get--、我々はこれを取得、実際にやって。 これは一時的な変数のようなものです。 それは仮定のようなものです 二つのテーブルの合併。 私たちは、実際に何かを得ます このように、ここで 私たちは、上のテーブルをマージしました 彼らに共通している情報。 だからusers.usernameに気付きます そして、、列をmoms.username それはまったく同じです。 それは、その情報でした ユーザーから一貫していました テーブルとママのテーブル。 そして、私たちはそれらを一緒にマージされました。 我々は彼ので、クレイマーを破棄しました usersテーブルに存在しませんでした、 私たちはので、ニューマンを破棄しました 彼はママのテーブルに存在しませんでした。 だから、これは架空の合併であり、 SELECTのJOIN操作を使用して。 そして、我々が探していました ユーザーのフルネームとユーザの母親、 そしてこれはその情報です 我々は、全体的なクエリからになるだろう 私たちは、SELECTで作られています。 だから、私たちは一緒のテーブルに参加しました 我々は、これらの2つの列が抽出され、 ので、それは我々が得ることになるものです。 しかし、SQLは複雑のようなものを結合します。 おそらく、あまりにも多く、それらをしないだろう、 ちょうど骨格のいくつかのアイデアを持っています 次の2つをマージするために使用することができること 一緒にテーブル、あなたがする必要がある場合。 最後の二つがあります ビット単純な私は約束します。 だから更新、我々は、UPDATEを使用することができます 表の情報を変更します。 一般的な形式は、いくつかのアップデートです テーブルには、いくつかの値にいくつかの列を設定します 一部の述語は満足です。 したがって、たとえば、私たちはお勧めします ユーザーテーブルを更新します そして、矢田にパスワードを設定します ID番号が10である矢田、。 したがって、この場合には、我々はしています ユーザーテーブルを更新。 ID番号は10です そこの最初の行、 我々は更新したいです 矢田の矢田へのパスワード。 そして、そのためには何が起こるかです。 それは右、非常に簡単ですか! それはちょうど非常に簡単です テーブルへの変更。 我々が使用する操作がされているDELETE テーブルから情報を削除します。 WHEREテーブルFROM DELETE いくつかの述語が満たされます。 私たちは、から削除します 例えば、ユーザーテーブル ここで、usernameはニューマンです。 あなたは、おそらくに何が起こっているのかを推測することができます 我々はそのSQLを実行した後に、ここで起こります クエリは、ニューマンがテーブルから消えています。 私が言ったように、すべてのこれらの操作、 phpMyAdminの中で行うことは非常に簡単です。 それは非常にユーザーフレンドリーなインターフェイスです。 しかし、それは手作業を必要としません。 我々は、手動努力を採用する必要はありません。 我々は我々のプログラムにしたいです 私たちのためにこれを行うには、右? だから我々は何をしたいかもしれません このプログラムで。 私たちは、SQLを組み込みたいとしてい 私たちのためにこれを行うには、何か他のもの。 しかし、私たちはそのことができます何を見てきました 私たちは、プログラムに何かを行うには? 我々は右、PHPを見てきましたか? これは、いくつかを紹介します 私たちのプログラムに活力。 それで幸いにも、SQLおよび PHPは一緒に非常にうまく再生されます。 PHPの関数があります 使用することができると呼ばれるクエリ。 そして、あなたはのように渡すことができます パラメータまたは引数 そのSQLクエリを照会します あなたが実行したいと思います。 そして、PHPはあなたに代わってそれを行います。 だから、接続した後に PHPを使用してデータベースに、 これを行う2原色があります。 MySQLiをと呼ばれるものがあります そして、PDOと呼ばれるもの。 私たちは巨大に行くことはありません そこ量のディテール。 CS50では、PDOを使用しています。 あなたが接続した後 あなたのデータベースに、あなた その後、クエリをあなたのデータベースを作ることができます 引数としてクエリを渡すこと PHP関数に。 あなたはそれを行うときに、あなたが保存します 結果は連想配列に設定してください。 そして、我々はで動作する方法を知っています PHPの連想配列。 だから私は何かを言うかもしれません 以下のようなthis-- $ results-- これはPHP--でクエリに等しいです。 そして、内部の その引数のクエリ機能 私は、クエリを実行するために渡していること それは、SQLのように見えます。 そして、実際にSQLがあること。 それは私がすることをクエリ文字列です 私のデータベース上で実行したいです。 だから赤で、これはPHPのです。 これは、私はSQLです することによってPHPに統合 それクエリ関数の引数。 私はからフルネームを選択します ID番号は10に等しく、ユーザー。 そして多分私はそれをやった後、 私はこのような何かを言うかもしれません。 私はプリントアウトしたいです にログインするためのメッセージをありがとう。 そして、私はそれが私が欲しいinterpolate--たい $結果のフルネームを補間します。 そしてそうそれは私がそれとどのように動作するかです 私が戻った連想配列。 $結果フルネームだろう 基本的にプリントアウトしてしまいます、 ログインするためのおかげで、ジェリー・サインフェルド。 それは完全な名前でした どこIDNUMは10に等しいです。 私がやっているので、すべての 私は保存さnow--よさ 私のクエリは、私のクエリの結果 連想配列で、その結果、 そして、フルネームはの名前です 私が得ていた列。 だから、結果に私の鍵です 私が欲しい連想配列。 だから、おかげでログインするための、$結果、 フルネームは、プリントアウトされます固執します 右カーリーそれらの間で ブレース、ジェリー・サインフェルド。 そして、私はメッセージを出力したいですよ ジェリー・サインフェルドにログインしていただきありがとうございます。 今、私たちは、おそらくハードにしたくありません その中のようなコードのもの、右か? 我々は、印刷のような何かをしたいかもしれません 我々は代わりに、おそらくすることができ、F、 異なる情報を収集し、 または多分クエリプロセスを持っています 異なる情報。 だから、クエリ、クエリ機能を持っています 置換の種類のこの概念 パーセントのfを印刷することが非常に似て パーセントcは、疑問符です。 そして、私たちは質問を使用することができます 非常に類似したマーク 代替変数にfを印刷します。 だから、多分あなたのユーザーが以前に記録され、 あなたは自分のユーザーID番​​号を保存しました PHPスーパーの$ _SESSIONで キーIDのグローバル。 ので、多分彼らはログインした後、 あなたは、IDが10に等しい$ _SESSIONを設定 例から外挿する 私達はちょうど秒前に見ました。 そして、私たちが実際に実行したとき これは、今の結果を照会 それは10のプラグイン、または何だろう $ _SESSION ID値です。 そしてそうそれは私たちがすることができます もう少し動的なもの。 我々はハードもはやで物事をコーディングしていません。 我々は情報を保存しています どこかで、その後、 我々は再びその情報を使用することができます ソートの私たちが何をしたいのか一般化、 ちょうどプラグインと変更を 私達のページの動作 どのようなユーザのID番号に基づいて 彼らがログインした後、実際にです。 これは、しかし、ことも可能です、 あなたの結果が設定されていること 複数の行で構成されることがあります。 その場合、あなたが持っています arrays--の配列 連想配列の配列。 そして、あなたはそれを反復処理する必要があります。 そして、我々は反復処理する方法を知っています PHPの配列を介して、右か? そこでここでは、おそらく最もです 我々はこれまでに見てきた複雑なもの。 これは、実際に統合します 一緒に3つの言語。 ここでは赤で、これはいくつかのHTMLです。 私は明らかにこれはstarting--よ 私が持っているいくつかのHTMLスニペット。 私は新しい段落を開始しています テレビのサインフェルドのお母さんは言います。 そして、その直後 私はテーブルを始めています。 そしてその後、私 いくつかのPHPを持って、右か? 私はそこで、このPHPコードのすべてを持っています。 私は明らかにクエリを作るつもりです。 そして、クエリを作るために、私はするつもりです ママから選択した母親を使用すること。 だから、これはgetting--これはSQLです。 だから、青はSQLです。 我々は前に見た第二の赤は、HTMLました。 そして、ここで緑のは、PHPです。 だから私は、クエリを作ってるんです 私のデータベースに、私はよ すべてを選択 ママ・テーブルの母親。 ただ特定に絞り込んはありません 行は、私はそれらのすべてのために求めています。 結果がある場合、私はチェック 偽等しい等しくありません。 これは、単にソートチェックの私の方法です 結果がヌルに等しくないのならば、 我々は、例えばCを参照してくださいだろうと。 基本的に、これはただ作るためにチェックしています それは実際に戻ってデータを持っていることを確認してください。 私は印刷を開始する必要はありませんので データ外に私はすべてのデータを取得できませんでした場合。 そして、その結果として、各結果を得るために PHPからのforeach構文は、すべて私がやっています $結果母親をプリントアウトされます。 そして、私はセットを取得するつもりです each--の母親のすべての それは連想配列です arrays--と私はプリントアウトしています テーブルの独自の行として各1。 そして、それは本当にきれいです 多くのすべてのことにあります。 私は少しあります知っています ビットは、ここで起こっ の配列と、この最後の例で 連想配列の配列をarrays--。 しかし、それは本当にただ沸騰ん ダウンクエリを作るためのSQLで、 我々はすでにした後、通常の選択 テーブルに情報を入れて、 して、それを引き抜きます。 そして、これは我々がそれを引くことになるであり、 この特定のケースでアウト。 私たちは、個々のすべてを抽出することになります お母さんテーブルから母親。 我々は彼らの全体のセットを持って、私たち 反復処理し、プリントアウトしたいです それぞれ。 だから、再び、これはおそらくです 最も複雑な例 私たちは3を混合しているので、我々が見てきました 異なる言語一緒に、右か? 繰り返しますが、私たちは赤でここにHTMLを持っています、 青で、ここでいくつかのSQLを混合し、 緑の中のいくつかのPHPと混合。 しかし、これらのすべてがプレイ うまく一緒に、それはです 開発だけの問題 良い習慣あなたが得ることができるように 彼らは、あなたが望むように一緒に動作するように。 本当にそれを行うための唯一の方法 、練習練習、練習することです。 私はダグロイドだけど、これはCS50です。