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] [哈佛大學] 3 00:00:04,000 --> 00:00:06,000 [這是CS50] [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 這意味著您的數據存儲在非易失性的中位數,如硬盤驅動器, 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 >> 現在,硒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 此外,我們將利用一個的數據庫Web界面稱為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 寫每列由逗號分隔的列名。 53 00:03:25,620 --> 00:03:28,620 例如,讓我們的唯一的檢索的CakeId的,並CakeType在cupcake_cupboard表。 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 做到這一點的語法是:SELECT空間*空間空間cupcake_cupboard 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 在這種情況下,我們使用的是真或假,這是一個布爾值,而不是一個字符串。 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 接下來,我們要編寫一個插入語句。 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 花生醬'逗號'淺棕色的逗號真。 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  “沒有兩個相同的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語句,我們寫的是一個更新語句。 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 在我們的cupcake_cupboard的表的CakeIsNice值是假的。 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,空間設置空間 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 我們希望提供一個“where”子句,我們將針對 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 值為False,有一個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 所以,把他們放在一起,這條update語句說 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包含該值巧克力, 123 00:08:54,130 --> 00:08:58,240 我們要更新特定行CakeIsNice,值設置為True。 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 然後你必須提供一個“where”子句,從而指定列 134 00:09:34,360 --> 00:09:37,660 應該是唯一你要刪除的行。 135 00:09:37,660 --> 00:09:47,370 這是語法:DELETE我們的的表,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 紅絲絨蛋糕ID為我的“Where”子句。 142 00:10:14,550 --> 00:10:20,670 我們的專欄,CakeID = 1 WHERE空間。 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 我克里斯托弗BARTHOLOMEW。這是CS50。