[음악 재생] DOUG 로이드 : 우리의 동영상에서 웹 개발 주제에, 우리의 개념을 언급 한 바로 데이터베이스 몇 번? 그래서 데이터베이스 당신이있어 에서와 아마 잘 알고 Microsoft Excel을 사용하여 말 또는 Google 스프레드 시트. 그것은 정말 조직의 테이블, 행과 열을 설정합니다. 그리고 데이터베이스가있는 곳입니다 우리의 웹 사이트를 저장 중요한 정보 우리의 웹 사이트가 제대로 작동합니다. 다시 말하지만, 정말 일반적인 예 여기에 사용자 이름과 암호를 저장하는 데이터베이스에, 그래서 때 우리의 웹 사이트에 사용자가 로그인, 데이터베이스는 볼 수 조회 할 수 있습니다 해당 사용자가 데이터베이스에 존재하는 경우. 그들이 경우에, 것을 확인 암호는 올바른 것입니다. 그리고 자신의 암호가 올 경우, 우리는 어떤 페이지를 그들에게 제공 할 수 있습니다 그들은 요청하고 있습니다. 그래서 다시, 아마 익숙 Excel 또는 구글이 아이디어 스프레드 시트. 우리는 데이터베이스가, 테이블, 행 및 열. 그리고 정말 일종 기본 세트 여기에 계층 적 고장. 그래서 여기에 Excel 스프레드 시트입니다. 그리고 혹시이를 연 경우 또는 다른 유사한 프로그램 당신이 여기 있다는 것을 알고 rows-- 1, 2, 3, 4, 5, 6, 7. 이러한 열입니다. 아마 여기에 아래로, 당신은 할 수 있지만 정말 much--이 기능을 사용하지 나는 우리가 in-- 확대합니다 시트의 생각. 그래서 어쩌면 이러한 시트, 경우 나는 앞뒤로 교대 다른 테이블은 그 내 데이터베이스에 존재합니다. 그리고 우리는 예를 들어 모두를 계속하는 경우 그런데,이 데이터베이스의 이름 1 권입니다. 어쩌면 내가 제 2 권과 제 3 권이있다. 각각의 엑셀 파일이며 데이터베이스, 각 시트는 테이블은, 각 테이블 안에 내가있다 행과 열이 아이디어. 그래서 내가 어떻게이 데이터베이스와 작동합니까? 어떻게하면 정보를 얻을 수 있습니까? 글쎄라는 언어 거기 SQL-- 나는 대개 Sequel--를 호출하는 그리고 약자 구조적 쿼리 언어. 그리고 프로그래밍 언어는, 그러나 그것은 상당히 제한 프로그램입니다 언어. 그것은 아주 다른 이들처럼 아니에요 것을 우리는 함께 일했다. 그러나 이것의 목적 프로그래밍 언어 하기 위해 데이터베이스를 조회한다 데이터베이스의 정보를 요청 정보를 찾을 수 데이터베이스 등. 또한, CS50--에있어 매우있어 공통 플랫폼, 그것은 MySQL을 불렀다. 그것은 우리가 과정에서 무엇을 사용합니다. 그것은 오픈 소스 설정 플랫폼 소위 관계형 database-- 데이터베이스, 효과적으로. 우리는받을 필요가 없습니다 너무 많은 세부 사항에 무엇에 관계형 데이터베이스입니다. 그러나 SQL 언어입니다 작업에서 매우 숙련 MySQL과 유사한 다른와 관계형 데이터베이스의 스타일. 의 많은 설치 뭔가 MySQL을 올 라는 phpMyAdmin을, 어떤 그래픽 사용자는 GUI--을 interface-- 그 조금 더 만든다 실행할 사용자 친화적 데이터베이스 쿼리, 데이터베이스는 사용되지 않기 때문에 고급 프로그래머로, 오른쪽? 가끔있다 이러한 중소 기업, 그들은 여유가 없다 프로그래머의 팀을 고용, 하지만 그들은 여전히​​ 저장해야 데이터베이스에 정보를 제공합니다. phpMyAdmin을 같은 뭔가 누군가를위한 아주 쉽게 누가하기 전에 프로그램 적이 없어요 픽업 및 방법에 익숙해 데이터베이스와 함께 작동합니다. 문제가있는 동안, phpMyAdmin을 인 그것은 학습을위한 훌륭한 도구입니다 데이터베이스에 대해서는, 수동입니다. 당신은에 로그인해야 할거야 IT 및 명령과 유형을 실행 수동으로 가지. 그리고 우리는 알고 우리의 PHP 웹 프로그래밍에 대한 예를 들어, 수동으로 할 필요 우리의 웹 사이트에 물건, 우리는 동적, 활성 반응을 원하는 경우 웹 사이트, 아마도하지 최선의 방법. 우리는 할 수있는 방법을 찾을 싶습니다 아마 어떻게 든이 문제를 자동화 할 수 있습니다. 그리고 SQL은이 작업을 수행 할 수있게됩니다. 그럼 언제 우리가 갈거야 SQL 작업을 시작, 우리는 먼저이 필요합니다 데이터베이스와 함께 작동합니다. 데이터베이스를 작성한다 뭔가 당신이 아마 때문에, phpMyAdmin을에서 할 것 당신은 한 번만 그것을 할 필요가있을 것이다 그렇게함으로써 구문 훨씬 더 간단합니다. 그것은 그것을 할 많은 쉽게 그래픽 사용자 인터페이스 명령으로 그것을 입력보다. 이 명령은 조금 성가신를 얻을 수 있습니다. 마찬가지로, 테이블을 생성을 수행 할 수 있습니다 뿐만 아니라 성가신 꽤 얻을. 데이터베이스를 만드는 등 그리고 것들 당신이있어 테이블을 생성 아마 단지 once-- 할 것 테이블 당 한 번, 한 번 database-- 당 이 글은 그렇게 할 괜찮아요 그래픽 인터페이스입니다. 과정에서 테이블을 당신이 만드는 것이다 또한 모두를 지정해야 해당 테이블에있을 것입니다 열. 정보의 어떤 종류의 수행 당신은 테이블에 저장하려면? 아마 사용자의 이름과 생년월일, 비밀 번호, 사용자 ID 번호, 어쩌면 도시와 상태, 오른쪽? 그리고 모든 시간을 우리는 사용자를 추가 할 데이터베이스에, 우리는 모두 여섯 싶어 정보의 그 조각. 그리고 우리는 추가하여 그렇게 테이블에 행. 그래서 우리는 먼저 데이터베이스를 작성, 우리는 테이블을 만들 수 있습니다. 만들기의 일환으로 테이블은, 우리가 요구된다 모든 열을 지정하는 우리는이 표에 싶습니다. 그리고 우리가 시작하기로 추가 데이터베이스 정보 데이터베이스 쿼리보다 generally-- 단지 추가하지, 하지만 모든 다른 우리 do-- 우리가 다루고있을거야 하나입니다 테이블의 행 전체 집합에서 사용자의 정보를 제공합니다. 그래서 모든 SQL 컬럼은 할 수있다 특정 데이터 유형의 데이터를 유지. 그래서 우리는 종류의를 제거 PHP에서 데이터 유형의 아이디어, 하지만 그들은 SQL 다시 여기. 그리고 데이터 유형이 많이있다. 여기에 단지 20,이다하지만 심지어 그들 모두 아니다. 그래서 우리는 INTs-- 같은 아이디어를 가지고 우리가 아마 알고 Integers-- 것을이 열은 정수를 보유 할 수 있습니다. 그리고 변화가있다 thereon-- SMALLINT, TINYINT, MEDIUMINT, BIGINT. 어쩌면 우리는 항상 네 바이트가 필요하지 않습니다. 어쩌면 우리는 8 바이트 필요하고, 그래서 우리는 정수에 이러한 변화를 사용할 수 있습니다 좀 더 공간을 효율적으로. 우리는 소수를 할 수있는 우리 부동 소수점 숫자를 할 수 있습니다. 이 꽤 유사하다. 약간의 차이가 있습니다, 당신이하고자하는 경우 조회 좋아 가이드의 SQL 종류, 당신 볼 수있는 약간의를 그들 사이의 차이이다. 어쩌면 우리는 저장할 날짜와 시간에 대한 정보를 제공합니다. 어쩌면 우리의 추적을 유지하고 사용자가 웹 사이트에 가입 할 때, 그래서 어쩌면 우리가 원하는 의 열을 가지고 날짜 시간 또는 시간 소인이 때 사용자가 실제로 나타냅니다 가입. 우리는 형상과 선 스트링을 할 수 있습니다. 이 사실은 꽤 멋지다. 우리는을지도 할 수 사용하는 지리적 영역 GIS는 지역을 플롯 조정합니다. 그래서 실제로 그런 종류를 저장할 수 있습니다 SQL 열에서 정보. 텍스트는 어쩌면, 텍스트의 단지 거대한 모양입니다. 열거 형은 가지 흥미로운. 실제로 C에 존재하는 우리는하지 않습니다 그렇지 않을이기 때문에 그들에 대해 이야기 정말 일반적으로 적어도 CS50 사용. 그러나 열거 데이터 형,이다하는 제한 값을 보유 할 수있다. 정말 좋은 예는 여기에있을 것입니다 열거를 만들 위치 일곱 가능한 값은 일요일, 월요일 화요일, 수요일, 목요일, 금요일, 토요일 맞죠? 그 데이터 형식 일 주, 존재하지 않는 그러나 우리는을 만들 수 열거 데이터 형식 등 그 열은 오직 보유 할 수 그 일곱 가지 값 중 하나입니다. 우리 모두는 열거 한 가능한 값. 그런 다음 우리는 CHAR와 VARCHAR 가지고, 나는 이러한 녹색 색상했습니다 우리가 실제로 있기 때문에 두 번째 걸릴 것 의 차이에 대해 이야기 이 두 가지 사이. 그래서 CHAR 달리 C 곳 CHAR는 하나의 문자였다, SQL에서 CHAR가에 의미 고정 길이 문자열. 그리고 우리는이를 만들 때 열, 우리는 실제로 문자열의 길이를 지정할 수 있습니다. 이 예에 따라서, 우리는 CHAR (10)를 말할 수 있습니다. 즉 모든 것을 의미합니다 해당 열의 요소 정보의 10 바이트로 구성됩니다. 더 이상, 더 적은.하지 우리가 시도하고 15에 넣어 있다면 비트 또는 15 문자 요소 또는이 열에 값, 우리는 처음 10을 얻을 것입니다. 우리는 두 가지에 넣어 경우 문자 긴 값, 우리는 두 가지를 할 겁니다 자, 다음 여덟 널 물린. 우리는보다 더 효율적일 수 없을거야. VARCHAR의 종류처럼 문자열의 우리의 개념 우리는 잘 알고 있음 C 나 PHP로와. 이것은 가변 길이 스트링이다. 그리고 당신은 만들 때 이 칼럼, 당신 단지 가능한 최대 길이를 지정합니다. 그래서 아마 99, 또는 일반적으로 255. 즉, 최대 길이 될 것입니다. 만약 그렇다면 우리는 저장했다 15 문자열, 우리는 어쩌면 16 15 바이트를 사용합니다 null 종결 바이트. 우리가 저장 한 경우 세 개의 문자열, 우리는 세 또는 4 바이트를 사용한다. 그러나 우리는 전체 99를 사용하지 않을 것입니다. 그런데 왜 우리는 둘 다해야? 음, 우리는 방법을 알아낼 필요가있는 경우 긴 뭔가 VARCHAR 함께, 우리는 반복 처리 가지에있다 그냥 좋아 통해 우리는 C로했다 멈출 어디 알아낼. 우리가 모든 것을 알고있는 경우 반면 이 열에 어쩌면, 10 바이트 우리는 그 정보를 알고, 우리는 이동할 수 있습니다 10 바이트, 10 바이트, 10 바이트, 10 바이트, 항상를 찾을 문자열의 시작. 그래서 우리는 몇 가지가있을 수 있습니다 CHAR과 공간을 낭비, 하지만 어쩌면 무역있다 더 나은 속도를 갖는 해제 데이터베이스를 탐색한다. 하지만 어쩌면 우리가 원하는 VARCHAR의 유연성 대신 having-- 우리의 CHAR 경우의 255 만, 우리의 대부분의 사용자 단지 세 또는 4 바이트를 입력했다 정보 또는 서너 상당 정보의 가치 문자. 그러나 일부 사용자는 사용했다 전체 (255), 아마 VARCHAR가 더 적합 할 것입니다. 그것은 떨어져 무역의 종류, 그리고 일반적으로 CS50의 목적을 위해, 당신에 대해 너무 많이 걱정하지 않아도됩니다 당신이 CHAR 또는 VARCHAR를 사용하는지 여부. 그러나 현실 세계에서, 이러한 것들 이 모든 열 때문에 문제가 않습니다 실제 물리적 공간을 차지합니다. 및 물리적 공간, 현실 세계는 프리미엄에 온다. 다른 하나의 고려 그래서 때 테이블을 구축하고 로 하나의 열을 선택하는 것입니다 무엇은 기본 키라고합니다. 그리고 기본 키 열입니다 어디 하나 하나 값이 유일하다. 그리고 그것은 당신이 쉽게 할 수 있음을 의미 그냥 보면 하나의 행을 선택 해당 행의 기본 키에. 그래서 예를 들면, 당신 일반적으로, 사용자와, 두 명의 사용자를 원하지 않는 사람 동일한 사용자 ID 번호를 갖는다. 그리고 어쩌면 당신은 정보를 많이, 어쩌면 두 명의 사용자가 할 수있는 같은 name--이 당신은 존 스미스와 존 스미스가 있습니다. 즉, 반드시 문제가되지 않습니다 여러 사람들이 있기 때문에 존 스미스라는 이름의 세계. 그러나 우리는 단지 하나의 사용자 ID 번호가 10 번 사용자 ID 번호 11, 12, 13. 우리는 두 명의 사용자가 없습니다 같은 번호, 그래서 어쩌면 사용자 ID 번호 좋은 차 열쇠가 될 것입니다. 우리는 어떤 중복이없는, 우리는 현재 유일하게 할 수있는 다만 모든 단일 행을 식별 해당 열보고에 의해. 실제로 기본 키를 수있는 선택 다음 표 작업을 당신이 활용할 수 있기 때문에 훨씬 더 쉽게 사실 그 특정 행 것 독특한, 또는 특정 열 수 데이터베이스 또는 테이블의 선택에 고유 한 것입니다 밖으로 특정 행. 또한 관절 차를 가질 수있다 당신이 기회를 찾을 수있는, 키 다만, 이는 사용하기 두 컬럼의 조합이 고유 보장됩니다. 그래서 어쩌면 당신은 하나가 A와 B에 칼럼, 둘, 하나 하나의 열, 세를,하지만 당신은 오직거야 하나의 A1, 하나가 등 등 A2. 하지만 당신은 B2가있을 수 있습니다, C2 또는 A1, A2, A3, A4. 그래서 여러으로, 여러가있을 수 있습니다 조식 제공, 여러 사람, 여러 조로, 하지만 당신은 오직있을 수 있습니다 단일 A1, B2, C3, 등등. 그래서 내가 말했듯이, SQL은 프로그래밍 언어 그러나 그것은 매우 제한된 어휘를 가지고있다. 그것은는 확실히 광대 아니다 C와 PHP와 다른 프로그래밍 언어 우리는 과정에서 말하는 것이다. 그것은 더 자세한입니다 우리가있어 무엇보다 언어 이에 대해 이야기 할 것 비디오,이 때문에 비디오 우리에 대해 이야기하는거야 4 개의 조작 우리가 테이블에 수행 할 수 있습니다. 이보다 더 있습니다. 우리는 이것보다 더 많은 일을 할 수 있습니다 하지만 우리의 목적을 위해, 우리가 일반적으로 사용하는거야 다만 4 operations-- 삽입, 업데이트를 선택하고 삭제합니다. 그리고 당신은 아마 직관적으로 추측 할 수있다 이러한 것들의 네는 무슨. 그러나 우리는 조금에 갈거야 각각의 세부 사항. 이것의 목적 그래서 비디오의 가정하자 우리는 다음의 두 한 단일 데이터베이스의 테이블. 우리는이 테이블라는 사용자가 네 columns-- ID 번호, 사용자 이름, 암호, 전체 이름. 그리고 우리는 두 번째가 동일한 데이터베이스에서 테이블 단지 정보를 저장 엄마라고 사용자 이름과 어머니에 대한. 모든 예제에 대한 그래서 이 비디오에서는, 우리는거야 이 데이터베이스를 사용하고 그 이후에 업데이트됩니다. 그래서 우리가하고 싶은 말은하자 테이블에 정보를 추가 할 수 있습니다. 즉, 삽입 작업이하는 일입니다. 모두를 설명 이 명령은, 내가 갈거야 당신이 사용하는 일반적인 골격을 제공합니다. 기본적으로, 쿼리 때문에 모양이 꽤 비슷한거야, 우리는 단지 변경 될거야 정보의 약간 다른 조각 테이블과 다른 일을합니다. INSERT를 들어, 골격 그래서 가지 다음과 같습니다. 우리는에 삽입 할 특정 테이블. 그 다음 우리는 열린 괄호가 및 열 목록 우리는에 값을 넣어하려는. 닫기 괄호, 다음의 값을 다음 다시,이 값을 나열 우리는 테이블에 넣을. 이 너무 예 다음이 될 것이다. 나는 테이블에 삽입 할 사용자가 다음 columns-- 사용자 이름, 암호 및 전체 이름. 내가 걸었 새 행 그래서 우린 그 세 개의 열에서 값에 넣어 것 뉴먼, USMAIL 및 뉴먼. 이 경우, 나는 해요 소문자 뉴먼을 가하고 사용자 이름 열에 암호 USMAIL 및 전체 이름 자본 N 전체 이름 컬럼에 뉴먼. 그래서 여기에 무엇 데이터베이스의 전에처럼 보였다. 여기에 어떤 사용자가 테이블에의 상단 우리가 이런 짓을하기 전에처럼 보였다. 우리는 이것을 실행 한 후 쿼리는, 우리는이를 얻을. 우리는 테이블에 새 행을 추가했습니다. 그러나 한 가지주의 내가 지정하지 않았다 하지만 어떻게 든 값을 가지고있어 대한, 여기이 12있는 것입니다. 내가 원한 말하지 않았다 거기에 ID 번호를 넣어. 나는 이름을 넣어 싶어 암호, 전체 이름. 그리고 나는 괜찮아요 것을했다. 그러나 나는이 (12)를 얻었다. 이유는이 12거야? 글쎄, 그것은 밝혀 때 당신이 정의하는 될 것입니다 열 당신의 일반적으로 기본 키, 같은 나는 ID 번호는 말했다. 항상 반드시이 아니다 ID 번호가 될 것, 하지만 일반적으로 좋은 생각 정수 값의 일종. 당신은 phpMyAdmin을에서 옵션을 가지고 때 데이터베이스를 만드는 또는 테이블은 설정하기 자동 증분으로 열입니다. 어떤 정말 좋은 생각 할 때입니다 당신은 기본 키와 함께 작업하고, 당신은 모든 값을 원하기 때문에 그 열에서 고유해야합니다. 그리고 당신은 지정하는 것을 잊지 경우 한 사람 이상하기에, 당신은 지금 상황 곳이 그 열은 더 이상 고유 없습니다. 두 공백이 없다, 그래서 당신은 할 수 있습니다 더 이상 고유 column--를 식별 또는 당신은 더 이상 고유 할 수 없습니다 그 열을 기준으로 행을 식별합니다. 그것은 모두를 잃은 그 기본 키 값입니다. 그래서 분명히 내가 한 일을 여기에서 사용자 ID를 설정한다 자동 증가에 열마다 있도록 시간이 나는 테이블에 정보를 추가 자동으로 나에게 줄 것이다 기본 키의 값. 그래서 나는 때문에 그것을 할 잊지 못할 수 있습니다 데이터베이스는 나를 위해 그것을 할 것입니다. 그래서 가지 좋은 데요. 우리가 얻을 왜 그리고 그건 거기에 12, 나는했습니다 때문에 자동 증가에 그 열까지를 설정합니다. 나는 다른 사람을 추가 한 경우 내가 추가 한 경우는 13 것 다른 사람은 그렇게 14, 그리고 것입니다. 그래서 그냥 하나 더 삽입 할 수 있습니다. 우리는에, 엄마의 테이블에 삽입합니다 특히, 사용자 이름과 어머니 열, 값 크레이머와 뱁스 크레이머. 그래서 우리는 전에이 있었다. 우리는 실행 후 SQL 쿼리, 우리는이 있습니다. 우리는 크레이머와 뱁스을 추가했습니다 엄마 테이블 크레이머. 그래서 삽입합니다. 선택은 우리가 추출하는 데 사용하는 것입니다 테이블에서 정보를 제공합니다. 그래서 이것은 우리가 얻는 방법이다 데이터베이스 중 정보. 그리고 SELECT 명령이 될거야 매우 자주 프로그램에 사용됩니다. 일반 framework-- 일반적인 골격은 다음과 같다. 열 세트를 선택 테이블하고 임의적 당신이 condition--를 지정하거나 우리가 일반적으로 술어를 부르는, 일반적으로 우리가 SQL에서 사용하는 용어입니다. 그러나 기본적으로 무엇을의 특히 행 당신은 싶어. 당신을 대신 점점하려면 모든, 범위를 좁힐 당신이 할 것 곳이다. 그리고 선택적으로, 당신은 또한 수 특정 열을 기준으로 주문한다. 그래서 어쩌면 당신은 정렬 된 물건을 갖고 싶어 알파벳 순으로 하나의 열을 기반으로 또는 알파벳 순으로 다른 기준으로합니다. 또, ORDER BY는 선택되는 경우합니다. 그러나 그들은 아마있을거야 useful-- 특히 어디에 도움이 될 것입니다 그렇게하지 ​​않도록 좁힐 다시 전체 데이터베이스를 얻을 를 처리 할 필요가, 당신은 얻을 그것의 조각은 당신이 걱정하는 것이. 그래서 예를 들어, 내가 선택 할 수 있습니다 사용자의 ID 번호와 전체 이름. 그래서이 같을 수 있는가? 그래서 여기 내 사용자 테이블입니다. 나는 IDNUM을 선택합니다 및 사용자의 전체 이름. 내가 뭘 사러 갈 건데? 나는이 얻을거야. 나는 그것을 좁혀하지 않았다, 그래서 나는 해요 모든 행 ID 번호를 받고 나는 전체를 받고 있어요 모든 행에서 이름을 지정합니다. 그래. 내가 암호를 선택하려면 WHERE-- 이제 사용자의 내가 조건을 추가 해요, predicate-- IDNUM 미만 (12)이다. 그래서 여기 내 데이터베이스 다시이다, 내 사용자 테이블 위에. 어떻게 내가 원하는 경우 사러 갈 건데 그 정보를 선택, 암호, 여기서, 사용자 ID 또는 IDNUM 12 미만인? 나는이 얻을거야 정보 다시, 오른쪽? IDNUM 10 것을이 발생, 이하 (12)보다, ID 번호 11 (12) 이하. 나는 그 행에 대한 암호를 얻고있다. 즉, 내가 무엇을 요구합니다. 무엇에 대해? 나는 무엇에서 별을 선택하려면 사용자 이름은 제리 같다 엄마 표? 확인을 선택 별은 특별하다 와일드 카드의 종류는 소위 우리는 모든 것을 얻을하는 데 사용하는. 그래서 그들은 선택 말을하는지 쉼표 어머니 사용자 이름있는 단지 우연히 이 테이블의 두 개의 열, 난 그냥 별을 선택할 수 있습니다 그리고 모든 것을 얻을 여기서 사용자 이름은 제리 같습니다. 그리고 그게 내가 얻을 것 무엇 나는 특정 쿼리를 만든 경우. 이제, 데이터베이스는 큰 그들은 수 있기 때문에 우리는 아마도 정보를 구성하는 우리는보다 더 효율적으로 비트 그렇지 않으면 수 있습니다. 우리는 반드시 저장하지 않습니다 정보의 모든 관련 부분 동일 표에 대한 사용자. 우리는이 두 개의 테이블이 있었다. 우리는 저장해야 모두의 어머니의 이름, 어쩌면 우리는 사회 보장이 없습니다 수, 우리는 출생의 자신의 날짜를 가지고있다. 즉, 항상 필요로하지 않는다 같은 테이블에 있어야합니다. 만큼 우리가 정의 할 수 있습니다로 tables-- 사이의 관계 그게 어디 그 관계 데이터베이스 용어는 가지 온다 play--로 우리가 정의 할 수있는에 테이블 간의 관계, 우리는 종류의 구획 수 또는 추상적 일 수있는 방법, 우리는이 곳 정말 중요한 정보 우리는 사용자의 테이블에 관심. 그리고 우리는 부수적 인 정보를 다른 테이블 또는 추가 정보 우리는 주에 다시 연결할 수 있는지 특정 방식의 사용자 테이블. 그래서 여기에 우리는이 두 테이블을 가지고 있지만, 그들 사이의 관계가있어, 권리? 그것은 이름처럼 보인다 뭔가 수 있습니다 그 사이에 공통으로 존재 이들 두 개의 서로 다른 테이블. 그래서 우리는 지금이있는 경우 상황이 우리가 어디 에서 사용자의 전체 이름을 얻으려면 사용자의 테이블, 그들의 어머니의 어머니 테이블에서 이름? 우리는 얻을 수있는 방법을 갖고 있지 그것은 바로, 그 약자로? 포함 단일 테이블이 없습니다 전체 이름과 어머니의 이름을 모두. 우리는 옵션이 없습니다 우리가 지금까지 본 것과. 그래서 우리는 도입해야 가입의 아이디어. 조인은 아마 가장 complex-- 정말 가장 복잡한 작업이다 우리는 비디오에 대해 이야기하는 것입니다. 그들은 조금 복잡한 것 그러나 당신이 그것의 묘리를 터득하면, 그들은 실제로 그렇게 나쁘지 아니에요. 그냥 선택의 특별한 경우이다. 우리는 세트를 선택하는거야 가입 테이블에서 열 일부 술어에 두 번째 테이블에서. 그것은이 항아리처럼 대해이 경우, 생각 테이블 하나, 여기에 하나 원입니다 테이블 두 사람은 여기에 다른 원이다. 그리고 그 술어 부분 중간에, 그것의 일종의 생각하면 같은 대한 벤 다이어그램으로, 무엇 그들은 공통점이 무엇입니까? 우리는이 두 테이블을 연결하려면 그들은 공통점이 무엇인지를 기반으로 이 가상 테이블을 생성 그 함께 두의 합병이다. 그래서 우리는이를 볼 수 있습니다 예를 어쩌면 그것은 도움이됩니다 조금 그것을 취소합니다. 그래서 어쩌면 당신은 선택합니다 USER.FULLNAME 및 moms.mother 에 가입 사용자의 모든 상황에서 엄마 표 여기서 사용자 이름 열 그들 사이에 동일하다. 그리고 이것은 새로운 여기에이 사용자를 구문. 그리고 엄마 .. 나는 여러 테이블을하고 있어요 경우 함께, 나는 테이블을 지정할 수 있습니다. 나는 특히에에서 구별 할 수있다 그에이 맨 아래에. 나는 이름을 구별 할 수있다 사용자 테이블의 컬럼 의 사용자 이름 열에서 엄마 표, otherwise-- 있습니다 우리는 단지 사용자 이름과 동일했다 경우 정말하지 않는 사용자 이름, 아무 의미. 우리는 그들이 일치하는 곳을 싶어요. 그래서 테이블을 지정할 수 있습니다 상황이 경우 열 이름 어디 불분명 것 나는 무엇에 대해 이야기하고있다. 그게 내가하고있어 모든 그래서 난이 이 테이블에서이 열을 말하고, 아주 명시 적 존재. 그래서 다시, 내가 선택한거야 전체 이름과 어머니의 이름 서로 연결된 사용자 테이블에서 모든 상황에서 엄마 테이블 어디 그 column--을 공유 그들은 그 이름의 개념을 공유 할 수 있습니다. 그래서 여기에 우리가 전에 있던 테이블이 있습니다. 이 상태 우리의 데이터베이스는 지금 존재. 우리가 추출하고 정보 시작하는이입니다. 이것은 우리가 가고있는 새로운 테이블 함께 이러한 조합 만들 수 있습니다. 그리고 우리는 강조하지 않을 통지 사용자의 테이블에있는 뉴먼의 행, 우리는 강조하지 않을 엄마 테이블에 Kramer의 행 어느 하나에 존재하기 때문에 모두 두 테이블 sets--. 공통적 인 정보만을 사이 제리 두 테이블입니다 과 gcostanza 두 테이블에 있습니다. 우리가 할 때, 그리고 SQL은, 가입 우리 이거나 먹어 우리는이를 얻을 실제로 일을. 그것은 임시 변수의 일종. 그것은 가상처럼 두 테이블의 합병. 우리는 실제로 뭔가를 얻을 수 이 같은 경우 우리는에 테이블을 병합 한 그들이 공통적으로 가지고있는 정보를 제공합니다. 그래서 users.username 통지 및 moms.username 열, 정확히 동일한이다. 즉, 정보였습니다 사용자의 일치 하였다 테이블과 엄마 표. 그래서 우리는 그들을 함께 합병했다. 우리는 크레이머 폐기 그는 때문에 사용자 테이블에 존재하지 않았다 우리는 때문에, 뉴먼 폐기 그는 엄마 테이블에 존재하지 않았다. 그래서 이것은 가상의 합병이다 선택의 가입 작업을 사용. 그리고 우리는 찾고 있었다 사용자의 전체 이름과 사용자의 어머니, 그래서이 정보는 그 우리는 전체 쿼리에서 얻을 것 우리가 선택으로 만든 그. 그래서 우리는 함께 테이블에 합류 우리는 그 두 개의 열을 추출, 그래서 그것은 우리가 얻을 것이 무엇입니다. 그러나 SQL은 복잡한의 종류를 결합합니다. 당신은 아마 그들에게 너무 많이하지 않을 것이다 하지만 단지 골격의 몇 가지 아이디어를 가지고 두 가지를 병합하는 데 사용할 수 당신이 필요 함께하면 테이블. 마지막 두가 비트 간단한 약속. 그래서 업데이트, 우리는 업데이트를 사용할 수 있습니다 테이블의 정보를 변경합니다. 일반적인 형식은 UPDATE 일부 테이블은 어떤 값에 약간의 열을 SET 어디 몇 가지 조건이 만족된다. 그래서 예를 들어, 우리는 할 수 있습니다 사용자 테이블을 업데이트하기 그리고 궁시렁에 암호를 설정 ID 번호가 10 궁시렁. 이 경우, 우리는 야 사용자 테이블을 갱신. ID 번호는 10이다 거기에 그 첫 번째 행, 우리는을 업데이트 할 궁시렁 궁시렁에 암호를 입력합니다. 그리고 그 일이 일어날거야. 그것은 바로, 매우 간단입니까? 그냥 아주 간단합니다 테이블에 수정. 우리가 사용하는 동작을한다 DELETE 테이블에서 정보를 제거합니다. 테이블 어디에서 삭제 일부 술어를 만족시킨다. 우리는에서 삭제할 예를 들어 사용자 테이블 여기서 사용자 이름은 뉴먼이다. 당신은 아마에 무슨 일이 일어나고 있는지 추측 할 수 우리가 SQL을 실행 한 후 여기에 일이 쿼리, 뉴먼은 테이블에서 사라. 그래서이 모든 작업은, 내가 말했듯이 phpMyAdmin을에서 아주 쉽게 할 수 있습니다. 그것은 매우 사용자 친화적 인 인터페이스입니다. 그러나 수동 노력을 필요로 않습니다. 우리는 수작업을 사용하고 싶지 않아요. 우리는 우리의 프로그램을 원하는 바로, 우리를 위해 이렇게? 그래서 우리는 수행 할 수 있습니다 이 프로그램. 우리는 SQL을 통합하는 원하고있다 뭔가 우리를 위해이 작업을 수행 할 수 있습니다. 그러나 우리는 할 수 있습니다 것을 보았다 우리는 프로그래밍 일을 할까? 우리는 바로, PHP 봤어요? 그것은 몇 가지를 소개합니다 우리의 프로그램에 활력. 그리고 다행히도, SQL 및 PHP는 함께 아주 잘 재생합니다. PHP에서 함수가있다 사용될 수있다라는 쿼리. 그리고 당신은으로 전달할 수 있습니다 매개 변수 또는 인수 SQL 쿼리를 쿼리하는 그 당신은 실행하고 싶습니다. 그리고 PHP는 사용자를 대신하여 그것을 할 것입니다. 당신이 연결 한 후에 그래서 PHP로 데이터베이스에, 이렇게 두 예비 선거가있다. 뭔가라는 MySQLi가있다 뭔가는 PDO를했다. 우리는 거대한로 들어 가지 않습니다 이 양의 세부 사항입니다. CS50에서 우리는 PDO를 사용합니다. 당신은 연결 한 후 데이터베이스에, 당신 다음 쿼리를 데이터베이스를 만들 수 있습니다 인수로 쿼리를 전달하여 PHP 함수에. 당신이 그렇게 할 때, 당신은 저장 연관 배열에 결과 세트. 그리고 우리는 함께 작동하는 방법을 알고 PHP의 연관 배열. 그래서 내가 뭔가를 말할 수있다 등이 항아리 $ results-- PHP-- 쿼리에 해당이입니다. 그리고 내부의 그 인수 쿼리 기능 나는 쿼리를 전달하고있어 것을 즉, SQL처럼 보인다. 그리고 사실 SQL은입니다. 즉이 나는 것 쿼리 문자열의 내 데이터베이스에서 실행할 것을 좋아합니다. 그리고 적색, 이것은 PHP이다. 이 난 SQL입니다 하여 PHP로 통합 그것은 조회 함수의 인수. 나는에서 전체 이름을 선택합니다 ID 번호는 10이 유저. 그리고 나는 그 일을했습니다 아마 후, 나는 이런 식으로 뭔가를 말할 수 있습니다. 나는 밖으로 인쇄 할 로그인에 대한 메시지 감사합니다. 그리고 내가 원하는 그것을 interpolate-- 할 $ 결과 전체 이름을 보간합니다. 그리고 그게 내가 그 작동 방법 내가 돌아 왔을 연관 배열. $ 결과 전체 이름 것 기본적으로 밖으로 인쇄 결국, 에 제리 펠트를 기록 주셔서 감사합니다. 즉, 전체 이름이었다 여기서 IDNUM 10 같습니다. 그리고 모든 내가하고 있어요 나는들을 당장 내가 저장되어있어 내 쿼리, 내 쿼리의 결과 과 연관 배열의 결과, 와 전체 이름이의 이름입니다 내가 점점 된 열입니다. 그래서 그 결과로 내 키입니다 내가 원하는 연관 배열. 그래서 덕분에 로그인하고, $ 결과, 전체 이름은 스틱 것, 인쇄한다 바로 그 곱슬 사이 중괄호, 제리 Seinfeld는. 그리고 메시지를 출력하고 싶은 것 제리 Seinfeld는 로그인 주셔서 감사합니다. 이제, 우리는 아마 열심히하지 않으 점에서 같은 코드 것들, 맞죠? 우리는 인쇄 같은 작업을 수행 할 수 있습니다 우리가 대체하고 어쩌면 수 F, 다른 정보를 수집, 아니면 쿼리 프로세스를 다른 정보를 제공합니다. 그리고 쿼리, 쿼리 기능이 있습니다 대체의 종류의 개념 퍼센트의 f를 인쇄 할 매우 유사 그리고 %의 C는 물음표입니다. 그리고 우리는 질문을 사용할 수 있습니다 마크 매우 유사 대체 변수 f를 인쇄합니다. 그래서 아마 사용자가 이전에 기록, 당신은 자신의 사용자 ID 번호를 저장 PHP 슈퍼의 $의 _SESSION에 키 ID 글로벌. 그들은 로그인 그래서 아마 후, 당신은, ID가 10에 해당 $ _SESSION을 설정 예로부터 외삽 우리는 단지 두 번째 전에 보았다. 그래서 우리는 실제로 실행할 때 이것은, 현재 쿼리 결과 그것은 10에 연결, 또는 어떤 것 $ _SESSION ID 값이다. 그리고 그것은 우리를 수 좀 더 동적. 우리는 열심히 더 이상 물건을 코딩 아닙니다. 우리는 정보를 저장하고 어딘가에 다음 우리는 다시 그 정보를 사용할 수 있습니다 일종의 우리가 수행 할 작업을 일반화, 그냥 플러그인과 변화 우리의 페이지의 동작 어떤 사용자의 ID 번호에 기초 그들은 로그인 한 후 실제로. 그것은, 그러나, 수도 결과가 설정하는 것이 여러 행으로 구성되어 있습니다. 이 경우, 당신은 arrays--의 배열 연관 배열의 배열. 그리고 당신은 그것을 통해 반복 할 필요가있다. 그리고 우리는 반복하는 방법을 알고 PHP의 배열을 통해, 오른쪽? 그래서 여기에 아마도 가장입니다 우리가 지금까지 본 적이 복잡한 것. 실제로 통합 함께 3 개 국어. 여기에 빨간색이 좀 HTML입니다. 나는 분명히이가 starting-- 해요 내가 가진 일부 HTML의 조각. 나는 새로운 단락이 시작 해요 TV의 펠트의 엄마를 말한다. 그리고 그 직후 나는 테이블을 시작 했어. 그리고 그 후, 바로, 일부 PHP가? 나는 거기에이 PHP 코드를 모두 가지고있다. 나는 분명히 쿼리를 만들려고하고있다. 그리고 쿼리를 만들기 위해, 내가 갈거야 엄마에서 선택 어머니를 사용합니다. 그래서은 SQL이다 getting--된다. 그래서 파란색 SQL이다. 우리가 두 번째 전 보았던 빨간색은 HTML이었다. 그리고 여기에 녹색 PHP입니다. 그래서 쿼리를 만들고있어 내 데이터베이스에, 나는 해요 모두 선택 엄마 표에서 어머니. 단지 특정로 좁혀 없음 행, 나는 그들 모두를 요구하고있다. 결과 인 경우, 나는 확인 같지 않음은 false 같습니다. 이것은 일종의 검사의 내 방법입니다 결과는 널 (null)로 동일하지의 경우, 우리는 예를 들어 C를 참조하십시오 것이다. 기본적으로 이것은 단지 확인 중입니다 실제로 데이터를 다시 가지고 있는지 확인하십시오. 나는 인쇄를 시작하지 않기 때문에 데이터에서 나는 어떤 데이터를 얻을하지 않은 경우. 그런 결과로 각각의 결과에 대한 PHP에서 foreach는 구문, 모두 내가하고 있어요 $ 결과 어머니를 인쇄한다. 그래서 나는 세트를 얻을거야 each--의 어머니의 모든 이는 결합의 배열이다 arrays-- 나는 밖으로 인쇄하고 있습니다 테이블의 고유 한 행으로 각각. 그리고 정말 예쁘다 많은 모든 거기에있다. 조금있다 알고 비트는 여기에 무슨 배열이 마지막 예에서 연관 배열의 배열을 arrays--. 하지만 정말 그냥 끓여 않습니다 쿼리를 만들기 위해 SQL에서 아래로, 우리가 이미 한 후에 일반적으로 선택 테이블에 정보를 넣어, 다음 그냥 철수. 그리고 이것은 우리가 그것을 당겨 것입니다 특히이 경우에 아웃. 우리는 개인의 모든를 추출하는 것 엄마 테이블에서 어머니. 우리는 그들의 전체 세트를 가지고, 그리고 우리 을 통해 반복하고 인쇄 할 각각. 그래서 다시, 이것은 아마도 가장 복잡한 예 우리는 세 가지를 혼합하고 있기 때문에 우리는 보았다 다른 언어 함께, 오른쪽? 다시 말하지만, 우리는 빨간색으로 여기에 HTML을 가지고, 파란색 여기에 몇 가지 SQL과 혼합, 녹색의 일부 PHP와 혼합. 그러나이 모든 재생 멋지게 함께, 그것은이다 개발의 문제 좋은 습관 당신이 얻을 수 있도록 그들에게 당신이 원하는 방식으로 함께 작동합니다. 그리고 유일한 방법은 정말해야 할 일 ,, 연습을 연습을 연습하는 것입니다. 내가 더그 로이드 해요,이 CS50입니다.