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。