[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。