[Powered by Google Translate] [SQL] [CHRISTOPHER BARTHOLOMEW] [哈佛大学] [这是CS50] [CS50 TV] 因此,程序员作为一种工具来使用数据库存储和组织 我们的持久性数据的表格内。 这意味着您的数据存储在非易失性的中位数,如硬盘驱动器, 甚至当计算机处于关闭状态,数据依然完好无损。 而且,作为程序员,我们计划利用数据库​​的情况下,如存储 从网页表格的用户信息,寻找库存, 或更新了什么网站显示的信息。 但是我们如何与我们的数据库交互, 或者我们用什么来读取,存储,删除, 在这些数据库表,并更新我们的数据? 那么,答案是,我们使用一种特殊类型的数据库语言 直接与我们的数据库表进行交互。 它的名字是结构化查询语言, [结构化查询语言] 我指的是作为SQL。 现在,硒QUEL,或SQL,是不是一种编程语言, 但相反,它是一种语言,它提供了一套标准的命令 检索和操作各种数据库管理系统的数据。 CS50的目的,我们就去了四种基本的命令: 选择,插入,更新和删除。 此外,我们将利用一个的数据库Web界面称为phpMyAdmin的, 安装在设备上写SQL语句。 因此,为了帮助你记住这些命令, 我在一个柜子,以协助我们的案例带来了一些蛋糕。 假设你有一个蛋糕的数据库, 您存储的所有信息你的蛋糕。 现在,数据库可以包含多个表 表本身可以包含很多列。 内部我们蛋糕的数据库中,我们有一个称为cupcake_cupboard的表。 该表将用于存储的所有信息蛋糕 是,好了,在你的橱柜。 你的表内的列代表一个蛋糕的属性。 例如,cupcake_cupboard的列 蛋糕ID,CakeType,CakeColor,并CakeIsNice的。 如果蛋糕是好的或不好,这个布尔类型的列用于确定。 我们要开始写select语句。 Select语句中使用一个特定的数据库表中检索数据。 在这种情况下,我们想知道的一切 我们的橱柜中存在的所有蛋糕。 的的语法做,这是“选择”的空间,星,或*,从空间的表空间, 这是cupcake_cupboard。 让我们继续前进并执行该。 正如我们所看到的,这些都是在我们的橱柜的蛋糕。 重要的是要注意,*,或星号是一个通配符 表示收集的一些表中的所有列。 通常情况下,我们可以访问特定的列或列 通过更换*与实际的列名。 如果我们想多列,但不是全部,我们可以做到这一点 写每列由逗号分隔的列名。 例如,让我们的唯一的检索的CakeId的,并CakeType在cupcake_cupboard表。 做到这一点的语法​​是:SELECT的空间CakeID逗号 从我们的餐桌,cupcake_cupboard CakeType空间。 让我们继续前进并执行此。 在这里,我们现在只有我们指定的两列 在我们的橱柜每个蛋糕的。 我们还可以改进我们的查询结果通过指定 “去哪儿”条款,只是在表名之后。 举例来说,似乎是一个蛋糕在我们的橱柜 ,以及不那么好看。 让我们找出所有的蛋糕在我们的橱柜,以及,而不是太好找 使用“去哪儿”的条款。 做到这一点的语法​​是:SELECT空间*空间空间cupcake_cupboard 空间WHERE空间,在这种情况下,我们的条件列CakeIsNice = 和布尔值false。 重要的是要注意,如果你使用的是字符串,你必须将其括在单引号。 这才是真正的SQL中的所有字符串,或在SQL数据库术语,异体字 为VARCHAR数据类型。 在这种情况下,我们使用的是真或假,这是一个布尔值,而不是一个字符串。 让我们继续前进并执行此命令。 你瞧,是这样的情况,我们有1个巧克力 不是很好但是在我们的橱柜蛋糕的。 接下来,我们要编写一个插入语句。 使用INSERT语句插入或添加 额外的行到你的数据库表中的数据。 重新审视我们的场景,让我们假设我们刚刚作出了一个全新的纸托蛋糕。 由于我们是非常有组织的杯形蛋糕吃,我们要插入这个新蛋糕的 在我们的cupcake_cupboard表。 做到这一点的语法​​是这样的:将进入太空的表空间, cupcake_cupboard,空格(, 在这里,我们指定列名,用逗号分隔, CakeType的逗号CakeColor逗号CakeIsNice)的空间。 在此之后,我们写的字,值空间(这里 我们分别输入每个列的值,也用逗号分隔。 单引号,因为他们都是varchar值,我们将围绕着他们在单引号, 花生酱'逗号'浅棕色的逗号真。 现在,重要的是给每行一个唯一的编号来标识自己。 自动增量的列提供此  “没有两个相同的ID可以永远存在此表中。” 让我们继续前进,并执行。 在那里,我们走了,一切井然有序。 下一个SQL语句,我们写的是一个更新语句。 可以使用update语句修改数据在列 在数据库表中的任何现有的行。 在我们的方案中,使用SELECT语句中,我们发现一个蛋糕 在我们的cupcake_cupboard的表的CakeIsNice值是假的。 让我们假设,而我们的花生酱杯形蛋糕在烤箱, 我们做了我们不那么漂亮的纸托蛋糕很不错的。 所以非常有组织的,我们希望我们的杯子蛋糕,以反映该值 在我们的cupcake_cupboard表。 因此,让我们更新我们的数据库中的巧克力蛋糕的,以反映这一点。 它的语法是:UPDATE空间的表,cupcake_cupboard,空间设置空间 我们要修改的列,CakeIsNice =。 那么在这里我们将我们的新的真值空间。 现在,因为我们不想更新这个值的所有行, 我们希望提供一个“where”子句,我们将针对 我们要修改的确切行。 在这种情况下,我们知道,只有一个杯形蛋糕 值为False,有一个CakeIsNice的。 此外,我们也将确保我们正在更新正确的行 通过使用“和”条款。 我们使用“和”条款,进一步完善我们的查询。 在这种情况下,因为我们知道,这块蛋糕是巧克力, 我们将使用此CakeType的列。 WHERE条件列的空间CakeIsNice空间=假的空间, 空间CakeType =“巧克力”。 所以,把他们放在一起,这条update语句说 在我们的蛋糕的橱柜,发现所有的蛋糕, 并且如果存在其的列CakeIsNice包含值False一个蛋糕 和CakeType包含该值巧克力, 我们要更新特定行CakeIsNice,值设置为True。 所以,让我们继续前进,并执行该语句。 而现在,我们正在举办的。 这次谈话的蛋糕已经让我有点饿了。 我觉得我应该帮我一个。 但是,如果我真的吃这个蛋糕的,我应该至少​​还可以删除它的存在  从我们的cupcake_cupboard表。 要做到这一点,我们将使用“删除”的说法。 “删除”语句可用于全部或部分删除表中的行。 如果你想删除一些具体的行从表中, 然后你必须提供一个“where”子句,从而指定列 应该是唯一你要删除的行。 这是语法:DELETE我们的的表,cupcake_cupboard,空间空间空间。 现在,在这一点上,只要你是在您的delete语句 你要非常小心。 例如,如果我想运行此查询是不提供一些“Where”子句 我会失去所有的数据在此cupcake_cupboard表, 但因为我已经知道了我的蛋糕ID是唯一的,我将使用 红丝绒蛋糕ID为我的“Where”子句。 我们的专栏,CakeID = 1 WHERE空间。 因为这是一个整数值,就没有必要将其包围在单引号。 因此,让我们执行该语句。 好了,现在我们已经消灭的存在,这个纸杯蛋糕 从我们的cupcake_cupboard表,我们只有一件事情: 使其消失。 我克里斯托弗BARTHOLOMEW。这是CS50。