1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [SQL] 2 00:00:02,000 --> 00:00:04,000 [CHRISTOPHER Bartholomew] [ĐẠI HỌC HARVARD] 3 00:00:04,000 --> 00:00:06,000 [Đây là CS50] [CS50 TV] 4 00:00:07,950 --> 00:00:11,620 Vì vậy, các lập trình viên sử dụng cơ sở dữ liệu như một công cụ để lưu trữ và tổ chức 5 00:00:11,620 --> 00:00:13,620 dữ liệu liên tục của chúng tôi trong vòng bảng. 6 00:00:13,620 --> 00:00:18,960 Điều này có nghĩa là dữ liệu của bạn được lưu trữ trên trung vị chẳng hạn như một ổ đĩa cứng không dễ bay hơi, 7 00:00:18,960 --> 00:00:22,940 và ngay cả khi máy tính tắt, dữ liệu vẫn còn nguyên vẹn. 8 00:00:22,940 --> 00:00:29,530 Và, như lập trình, các chương trình của chúng tôi sử dụng cơ sở dữ liệu cho các kịch bản như là lưu trữ 9 00:00:29,530 --> 00:00:32,890 người sử dụng thông tin từ các hình thức web, tìm kiếm hàng tồn kho, 10 00:00:32,890 --> 00:00:36,210 hoặc cập nhật thông tin về những gì các trang web hiển thị. 11 00:00:37,150 --> 00:00:40,070 Nhưng làm thế nào để chúng ta thực sự tương tác với cơ sở dữ liệu của chúng tôi, 12 00:00:40,070 --> 00:00:43,150 hoặc những gì chúng ta sử dụng để đọc, lưu trữ, xóa, 13 00:00:43,150 --> 00:00:46,070 và cập nhật dữ liệu của chúng tôi trong các bảng cơ sở dữ liệu? 14 00:00:47,280 --> 00:00:49,700 Vâng, câu trả lời là chúng ta sử dụng một loại đặc biệt của ngôn ngữ cơ sở dữ liệu 15 00:00:49,700 --> 00:00:53,400 mà tương tác trực tiếp với các bảng cơ sở dữ liệu của chúng tôi. 16 00:00:53,400 --> 00:00:56,740 Tên của nó được cấu trúc Query Language, 17 00:00:56,740 --> 00:00:58,740 [Structured Query Language] 18 00:00:58,740 --> 00:01:00,740 hoặc những gì tôi đề cập đến như SQL. 19 00:01:00,740 --> 00:01:05,100 >> Bây giờ, [Se-QueL], hoặc SQL, không phải là một ngôn ngữ lập trình, 20 00:01:05,100 --> 00:01:08,580 nhưng thay vào đó, nó là một ngôn ngữ mà cung cấp một bộ tiêu chuẩn của lệnh 21 00:01:08,580 --> 00:01:13,520 để truy xuất và thao tác dữ liệu từ nhiều hệ thống quản lý cơ sở dữ liệu. 22 00:01:13,520 --> 00:01:17,630 Đối với mục đích của CS50, chúng ta sẽ đi qua bốn lệnh cơ bản: 23 00:01:17,630 --> 00:01:21,210 lựa chọn, chèn, cập nhật, và xóa. 24 00:01:21,210 --> 00:01:26,230 Hơn nữa, chúng tôi sẽ sử dụng một giao diện web cơ sở dữ liệu phpMyAdmin, 25 00:01:26,230 --> 00:01:29,890 cài đặt trên thiết bị để viết câu lệnh SQL của chúng tôi. 26 00:01:30,830 --> 00:01:33,050 Vì vậy, để giúp bạn nhớ các lệnh này, 27 00:01:33,050 --> 00:01:37,080 Tôi đã mang một số cupcakes trong tủ để hỗ trợ với các kịch bản của chúng tôi. 28 00:01:39,650 --> 00:01:42,210 Giả sử bạn có một cơ sở dữ liệu của cupcake, 29 00:01:42,210 --> 00:01:44,490 nơi bạn lưu trữ tất cả các thông tin về cupcakes của bạn. 30 00:01:44,490 --> 00:01:48,220 Bây giờ, cơ sở dữ liệu có thể chứa nhiều bảng 31 00:01:48,220 --> 00:01:50,950 và bản thân các bảng có thể chứa nhiều cột. 32 00:01:50,950 --> 00:01:57,020 Bên trong cơ sở dữ liệu của chúng tôi cupcake, chúng tôi có một bảng gọi là cupcake_cupboard. 33 00:01:57,020 --> 00:02:00,500 Bảng này sẽ được sử dụng để lưu trữ tất cả thông tin về cupcakes 34 00:02:00,500 --> 00:02:02,990 đó là, tốt, trong tủ của bạn. 35 00:02:02,990 --> 00:02:07,770 Các cột có trong bảng của bạn đại diện cho các thuộc tính của một cupcake. 36 00:02:07,770 --> 00:02:14,560 Ví dụ, cột của cupcake_cupboard 37 00:02:14,560 --> 00:02:15,920 Bánh ID, CakeType, CakeColor, và CakeIsNice. 38 00:02:15,920 --> 00:02:23,040 Cột boolean, đánh máy này được sử dụng để xác định xem bánh là đẹp hay không đẹp. 39 00:02:23,040 --> 00:02:26,560 Chúng ta sẽ bắt đầu với viết một tuyên bố chọn. 40 00:02:26,560 --> 00:02:32,160 Báo cáo lựa chọn được sử dụng để lấy dữ liệu của một bảng cơ sở dữ liệu cụ thể. 41 00:02:32,160 --> 00:02:34,890 Trong kịch bản này, chúng tôi muốn biết tất cả mọi thứ 42 00:02:34,890 --> 00:02:39,080 về tất cả các cupcakes mà tồn tại trong tủ của chúng tôi. 43 00:02:39,080 --> 00:02:48,670 Cú pháp để làm điều này là "không gian" Chọn sao, hoặc *, không gian từ không gian bảng của chúng tôi, 44 00:02:48,670 --> 00:02:52,050 là cupcake_cupboard. 45 00:02:52,050 --> 00:02:54,640 Hãy cho đi trước và thực hiện mà. 46 00:02:56,670 --> 00:03:00,140 >> Như chúng ta có thể thấy, đây là tất cả các cupcakes trong tủ của chúng tôi. 47 00:03:00,140 --> 00:03:05,110 Điều quan trọng cần lưu ý là *, hoặc dấu hoa thị, là một nhân vật thẻ hoang dã 48 00:03:05,110 --> 00:03:08,830 biểu thị tập hợp của tất cả các cột của bảng một số. 49 00:03:08,830 --> 00:03:13,650 Thông thường, chúng ta có thể truy cập vào một cột cụ thể hoặc cột 50 00:03:13,650 --> 00:03:16,950 bằng cách thay thế * với tên cột thực tế. 51 00:03:16,950 --> 00:03:21,220 Nếu chúng ta muốn nhiều cột, nhưng không phải tất cả, chúng ta có thể đạt được điều này 52 00:03:21,220 --> 00:03:25,620 bằng cách viết các tên cột phân chia ranh giới mỗi cột bằng dấu phẩy. 53 00:03:25,620 --> 00:03:28,620 Ví dụ, chúng ta hãy chỉ lấy CakeId và CakeType trong bảng cupcake_cupboard. 54 00:03:28,620 --> 00:03:38,370 Cú pháp để làm điều này là: SELECT không gian CakeID dấu phẩy 55 00:03:38,370 --> 00:03:44,370 Không gian CakeType từ cupcake_cupboard, bàn của chúng tôi. 56 00:03:44,370 --> 00:03:46,370 Hãy cho đi trước và thực hiện điều này. 57 00:03:49,340 --> 00:03:52,670 Và ở đây, bây giờ chúng ta chỉ có hai cột chúng tôi quy định 58 00:03:52,670 --> 00:03:54,670 cho mỗi cupcake trong tủ của chúng tôi. 59 00:03:54,670 --> 00:03:57,710 Chúng tôi cũng có thể tinh chỉnh các kết quả truy vấn của chúng tôi bằng cách xác định 60 00:03:57,710 --> 00:04:00,910 "Where" điều khoản ngay sau khi tên bảng. 61 00:04:02,000 --> 00:04:05,410 Ví dụ, dường như có một cupcake trong tủ của chúng tôi 62 00:04:05,410 --> 00:04:08,660 tốt, có nghĩa là, không đẹp. 63 00:04:08,660 --> 00:04:13,950 Hãy tìm ra tất cả các cupcakes trong tủ của chúng tôi được tốt, không tốt đẹp tim 64 00:04:13,950 --> 00:04:16,110 bằng cách sử dụng "ở đâu" khoản. 65 00:04:16,110 --> 00:04:26,390 Cú pháp để làm điều này là không gian không gian: SELECT * FROM cupcake_cupboard không gian 66 00:04:26,390 --> 00:04:34,080 không gian WHERE không gian cột có điều kiện của chúng tôi, trong trường hợp này CakeIsNice =, 67 00:04:34,080 --> 00:04:36,900 và giá trị boolean False. 68 00:04:36,900 --> 00:04:42,750 Điều quan trọng là cần lưu ý rằng nếu bạn đang sử dụng dây, bạn phải đặt nó bên trong dấu ngoặc đơn. 69 00:04:42,750 --> 00:04:49,620 Điều này đúng cho tất cả các chuỗi trong SQL, hoặc về cơ sở dữ liệu SQL ký tự biến thể, 70 00:04:49,620 --> 00:04:51,620 được gọi là Varchar kiểu dữ liệu. 71 00:04:51,620 --> 00:04:57,660 Trong trường hợp này, chúng tôi đang sử dụng đúng hay sai, đó là một giá trị boolean và không phải là một chuỗi. 72 00:04:59,120 --> 00:05:00,660 Hãy cho đi trước và thực hiện lệnh này. 73 00:05:00,660 --> 00:05:05,340 >> Thật lạ kỳ, đó là trường hợp đó, chúng tôi có 1 sô-cô-la 74 00:05:05,340 --> 00:05:07,920 không phải như vậy tốt đẹp cupcake trong tủ của chúng tôi. 75 00:05:09,620 --> 00:05:11,460 Tiếp theo, chúng ta sẽ viết một báo cáo chèn. 76 00:05:11,460 --> 00:05:15,560 Báo cáo chèn được sử dụng để chèn hoặc thêm 77 00:05:15,560 --> 00:05:17,770 thêm các hàng dữ liệu vào bảng cơ sở dữ liệu của bạn. 78 00:05:17,770 --> 00:05:23,160 Xem xét lại trường hợp của chúng ta, chúng ta hãy giả định mà chúng tôi đã chỉ cần thực hiện một thương hiệu mới cupcake. 79 00:05:25,910 --> 00:05:30,080 Vì chúng tôi là rất có tổ chức ăn cupcake, chúng tôi sẽ phải để chèn cupcake mới 80 00:05:30,080 --> 00:05:32,330 trong bảng cupcake_cupboard của chúng tôi. 81 00:05:32,330 --> 00:05:40,690 Cú pháp để làm điều này là: Chèn vào không gian vào không gian bảng của chúng tôi, 82 00:05:40,690 --> 00:05:46,830 cupcake_cupboard, không gian ( 83 00:05:46,830 --> 00:05:51,060 và ở đây chúng tôi chỉ định tên cột, định giới bằng dấu phẩy, 84 00:05:51,060 --> 00:05:59,790 CakeType dấu phẩy CakeColor dấu phẩy CakeIsNice) không gian. 85 00:05:59,790 --> 00:06:06,540 Sau này, chúng tôi viết từ GIÁ TRỊ không gian (và ở đây 86 00:06:06,540 --> 00:06:12,170 chúng tôi nhập giá trị cho mỗi cột tương ứng, cũng được phân định bằng dấu phẩy. 87 00:06:12,170 --> 00:06:17,830 Nháy đơn, bởi vì họ là tất cả các giá trị Varchar chúng tôi sẽ bao quanh chúng trong dấu ngoặc đơn, 88 00:06:17,830 --> 00:06:26,780 Bơ đậu phộng 'dấu phẩy' dấu phẩy màu nâu nhạt True. 89 00:06:26,780 --> 00:06:30,480 Bây giờ, điều quan trọng để cung cấp cho mỗi hàng một số duy nhất để xác định chính nó. 90 00:06:30,480 --> 00:06:33,660 Autoincrementing một cột cung cấp này như là 91 00:06:33,660 --> 00:06:37,410  "Không có hai cùng một ID bao giờ có thể tồn tại trong bảng này." 92 00:06:37,410 --> 00:06:39,480 Chúng ta hãy đi trước và thực hiện. 93 00:06:39,480 --> 00:06:45,380 Hiện chúng tôi đi, tất cả các tổ chức. 94 00:06:49,720 --> 00:06:52,100 >> SQL tuyên bố rằng chúng tôi sẽ viết một báo cáo cập nhật. 95 00:06:52,100 --> 00:06:55,650 Báo cáo cập nhật có thể được sử dụng để sửa đổi dữ liệu trong một cột 96 00:06:55,650 --> 00:06:58,440 cho bất kỳ hàng hiện có trong bảng cơ sở dữ liệu của bạn. 97 00:06:59,670 --> 00:07:03,420 Trước đó trong kịch bản của chúng tôi, bằng cách sử dụng một tuyên bố chọn, chúng tôi đã xác định được một cupcake 98 00:07:03,420 --> 00:07:08,300 trong bảng của chúng tôi cupcake_cupboard giá trị CakeIsNice mà là False. 99 00:07:08,300 --> 00:07:12,050 Giả sử rằng trong khi cupcake bơ đậu phộng của chúng tôi là trong lò, 100 00:07:12,050 --> 00:07:15,790 chúng tôi đã thực hiện cupcake không-để-tốt đẹp của chúng tôi rất tốt đẹp. 101 00:07:18,020 --> 00:07:22,240 Được như vậy đặc biệt tổ chức, chúng tôi muốn cupcake của chúng tôi để phản ánh giá trị này 102 00:07:22,240 --> 00:07:24,240 trong bảng cupcake_cupboard của chúng tôi. 103 00:07:24,240 --> 00:07:28,710 Vì vậy, chúng ta hãy cập nhật cupcake sô-cô-la của chúng tôi trong cơ sở dữ liệu để phản ánh điều này. 104 00:07:28,710 --> 00:07:39,720 Cú pháp là: UPDATE không gian bảng của chúng tôi, không gian, cupcake_cupboard SET không gian 105 00:07:39,720 --> 00:07:44,240 cột mà chúng ta muốn thay đổi, CakeIsNice =. 106 00:07:44,240 --> 00:07:49,210 Sau đó, ở đây chúng tôi đặt không gian giá trị mới của chúng tôi thật. 107 00:07:49,210 --> 00:07:54,290 Bây giờ, bởi vì chúng tôi không muốn để cập nhật tất cả các hàng với giá trị này, 108 00:07:54,290 --> 00:07:57,400 chúng tôi muốn cung cấp một "ở đâu" điều khoản là sẽ xác định chúng tôi 109 00:07:57,400 --> 00:07:59,830 hàng chính xác mà chúng tôi muốn thay đổi. 110 00:07:59,830 --> 00:08:03,690 Trong trường hợp này, chúng ta biết rằng chỉ có một cupcake 111 00:08:03,690 --> 00:08:06,670 có một giá trị CakeIsNice là False. 112 00:08:06,670 --> 00:08:11,030 Hơn nữa, chúng tôi cũng sẽ đảm bảo rằng chúng tôi đang cập nhật hàng chính xác 113 00:08:11,030 --> 00:08:13,030 bằng cách sử dụng "" điều khoản. 114 00:08:14,340 --> 00:08:17,270 Chúng tôi sử dụng "" điều khoản để tinh chỉnh truy vấn của chúng tôi hơn nữa. 115 00:08:17,270 --> 00:08:20,380 Trong trường hợp này, bởi vì chúng ta biết rằng cupcake là sô cô la, 116 00:08:20,380 --> 00:08:23,160 chúng tôi sẽ sử dụng cột này CakeType. 117 00:08:23,160 --> 00:08:31,500 Trong trường hợp không gian có điều kiện cột không gian của chúng tôi CakeIsNice không gian = False, 118 00:08:31,500 --> 00:08:38,330 và không gian CakeType = 'CHOCOLATE. 119 00:08:38,330 --> 00:08:41,880 Vì vậy, đặt nó tất cả cùng nhau, báo cáo cập nhật này nói 120 00:08:41,880 --> 00:08:44,670 tìm thấy tất cả các cupcakes trong tủ cupcake của chúng tôi, 121 00:08:44,670 --> 00:08:50,520 và nếu có một cupcake có cột CakeIsNice chứa các giá trị False 122 00:08:50,520 --> 00:08:54,130 và CakeType chứa CHOCOLATE giá trị, 123 00:08:54,130 --> 00:08:58,240 chúng tôi muốn cập nhật giá trị hàng CakeIsNice cụ thể là True. 124 00:08:58,240 --> 00:09:01,140 Vì vậy, chúng ta hãy đi trước và thực hiện báo cáo. 125 00:09:03,860 --> 00:09:05,860 Và bây giờ, chúng tôi đang tổ chức. 126 00:09:06,650 --> 00:09:09,220 >> Tất cả điều này nói chuyện của cupcakes đã làm cho tôi một chút đói. 127 00:09:09,220 --> 00:09:11,360 Tôi nghĩ rằng tôi nên giúp đỡ bản thân mình một. 128 00:09:11,360 --> 00:09:17,670 Nhưng nếu tôi thực sự ăn này cupcake, tôi nên ít nhất cũng loại bỏ sự tồn tại của nó 129 00:09:17,670 --> 00:09:19,670  từ bảng cupcake_cupboard của chúng tôi. 130 00:09:20,650 --> 00:09:22,590 Để làm điều này, chúng tôi sẽ sử dụng "Delete" tuyên bố. 131 00:09:22,590 --> 00:09:27,400 "Delete" tuyên bố có thể được sử dụng để loại bỏ tất cả hoặc một số hàng từ bảng. 132 00:09:27,400 --> 00:09:29,920 Nếu bạn muốn loại bỏ một số hàng cụ thể từ bảng, 133 00:09:29,920 --> 00:09:34,360 sau đó bạn phải cung cấp một "ở đâu" khoản, do đó xác định một cột 134 00:09:34,360 --> 00:09:37,660 phải là duy nhất để hàng mà bạn muốn loại bỏ. 135 00:09:37,660 --> 00:09:47,370 Đây là cú pháp: DELETE không gian từ không gian bảng cupcake_cupboard của chúng tôi, không gian. 136 00:09:47,370 --> 00:09:51,760 Bây giờ, vào thời điểm này, bất cứ khi nào bạn đang điều này trong một tuyên bố xóa của bạn 137 00:09:51,760 --> 00:09:54,240 bạn phải rất cẩn thận. 138 00:09:54,240 --> 00:09:59,970 Ví dụ, nếu tôi muốn chạy truy vấn này như là không có cung cấp một số "ở đâu" khoản 139 00:09:59,970 --> 00:10:04,500 Tôi sẽ mất tất cả các dữ liệu trong bảng này cupcake_cupboard, 140 00:10:04,500 --> 00:10:09,590 nhưng vì tôi đã biết rằng ID bánh của tôi là duy nhất, tôi sẽ sử dụng 141 00:10:09,590 --> 00:10:12,410 ID bánh Red Velvet cho khoản của tôi "ở đâu". 142 00:10:14,550 --> 00:10:20,670 Đâu không gian cột của chúng tôi, CakeID = 1. 143 00:10:20,670 --> 00:10:25,010 Bởi vì đây là một giá trị số nguyên không có nhu cầu để bao quanh nó trong dấu ngoặc đơn. 144 00:10:25,010 --> 00:10:27,020 Vì vậy, chúng ta hãy thực hiện báo cáo. 145 00:10:33,560 --> 00:10:35,990 Vâng, bây giờ chúng tôi đã xóa sổ sự tồn tại của cupcake này 146 00:10:35,990 --> 00:10:40,360 từ bảng cupcake_cupboard của chúng tôi, chúng tôi chỉ có một điều trái: 147 00:10:41,680 --> 00:10:43,680 Làm cho nó biến mất. 148 00:10:43,680 --> 00:10:46,990 Tôi là Christopher Bartholomew. Đây là CS50.