1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [SQL]는 2 00:00:02,000 --> 00:00:04,000 [크리스토퍼 바돌로매] [하버드 대학] 3 00:00:04,000 --> 00:00:06,000 [이는 CS50 IS] [CS50 TV] 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 이것은 데이터가 같은 하드 드라이브와 같은 비 휘발성 medians에 저장됩니다 것을 의미합니다 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 인벤토리를 찾는 웹 양식에서 사용자 정보,, 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 [구조적 쿼리 언어] 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의 목적을 위해, 우리는 네 가지 기본 명령을 갈거야 : 23 00:01:17,630 --> 00:01:21,210 선택 삽입, 업데이트 및 삭제합니다. 24 00:01:21,210 --> 00:01:26,230 또한, 우리는 phpMyAdmin라는 데이터베이스 웹 인터페이스를 사용합니다 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 쉼표로 각 열을 delimiting 열 이름을 쓰기로. 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 우리 테이블, cupcake_cupboard에서 CakeType 공간. 56 00:03:44,370 --> 00:03:46,370 가 가서이를 실행 봅시다. 57 00:03:49,340 --> 00:03:52,670 여기, 우리는 이제 우리가 지정한 두 개의 열이 있습니다 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 그냥 테이블 이름 뒤에 '어디'조항. 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 "어디"절을 사용합니다. 65 00:04:16,110 --> 00:04:26,390 이 작업을 수행하는 구문은 다음과 같습니다 공간 cupcake_cupboard FROM SELECT 공간 * 공간 66 00:04:26,390 --> 00:04:34,080 공간 WHERE이 경우 공간의 조건 열을 CakeIsNice = 67 00:04:34,080 --> 00:04:36,900 거짓과 부울 값입니다. 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 이 경우, 우리는 부울 값이 아닌 문자열입니다, 맞음 또는 틀림 사용하고 있습니다. 72 00:04:59,120 --> 00:05:00,660 가 가서이 명령을 실행 봅시다. 73 00:05:00,660 --> 00:05:05,340 >> ro와 보라, 우리가 한 초콜릿을 가지고있는 경우가 있습니다 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 삽입 문은 삽입하거나 추가하는 데 사용됩니다 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 그 후, 우리는 단어 VALUES 공간을 (쓰기, 여기 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 땅콩 버터 '쉼표'밝은 갈색 '쉼표 맞아요. 89 00:06:26,780 --> 00:06:30,480 이제 각 행 자체를 식별 할 수있는 고유 번호를 제공하는 것이 중요합니다. 90 00:06:30,480 --> 00:06:33,660 열을 Autoincrementing하면로 제공 91 00:06:33,660 --> 00:06:37,410  "아니 둘은 동일한 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 업데이트 문은 열에서 데이터를 수정하는 데 사용할 수 있습니다 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 우리 cupcake_cupboard의 표에서 가진 CakeIsNice 값은 False를했습니다. 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 그럼 여기서 우리는 새로운 가치 진정한 공간을 배치합니다. 107 00:07:49,210 --> 00:07:54,290 이제 우리는이 값이있는 모든 행을 업데이트하지 않기 때문에 것은 108 00:07:54,290 --> 00:07:57,400 우리는 문제를 정확히 파악할 것 "어디"절을 제공 할 109 00:07:57,400 --> 00:07:59,830 우리가 수정하고자하는 정확한 행합니다. 110 00:07:59,830 --> 00:08:03,690 이 경우, 우리는 하나의 컵케익이 있다는 것은 분명히 알고 있습니다 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 공간이 = 거짓, 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이 거짓 값을 포함하는 좋은 친구가있는 경우 122 00:08:50,520 --> 00:08:54,130 그리고 CakeType는 값 초콜렛을 포함 123 00:08:54,130 --> 00:08:58,240 우리는 참으로 특정 행의 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 나는 하나에 몸을 도움이 될 것 같아요. 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 이 작업을 수행하려면 우리는 "삭제"문을 사용합니다. 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 다음 따라서 열을 지정, "어디"절을 제공해야합니다 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 내가이 쿼리를 실행하려는 경우 예를 들어, 일부 "어디"절을 제공없이 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 내 '어디'조항에 대한 레드 벨벳 케이크 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 테이블에서, 우리는 왼쪽으로 한 가지 있습니다 : 147 00:10:41,680 --> 00:10:43,680 가 사라지게합니다. 148 00:10:43,680 --> 00:10:46,990 나는 크리스토퍼 바돌로매입니다. 이 CS50입니다.