结构化查询语言是一种标准的数据库语言,用于创建、维护和检索关系数据库。下面是一些关于SQL的有趣事实。
- SQL不区分大小写。但建议使用大写字母的关键字(如SELECT、UPDATE、CREATE等)和小写字母的用户定义内容(如表名、列名等)。
- 我们可以在任何一行的开头使用“-”(双连字符)在SQL中编写注释。
- SQL是关系数据库(如下所述)的编程语言,如MySQL、Oracle、Sybase、SQL Server、Postgre等。其他非关系数据库(也称为NoSQL)如MongoDB、DynamoDB等不使用SQL
- 尽管SQL有ISO标准,但大多数实现在语法上略有不同。因此,我们可能会遇到在SQL Server中工作但在MySQL中不工作的查询。
.
什么是关系数据库?
关系数据库意味着数据以关系(表)的形式存储和检索。表1显示了只有一个关系名为 大学生 哪个商店 滚不 , 名称 , 住址 , 电话 和 年龄 学生人数。
大学生
滚不 名称 住址 电话 年龄 1. 内存 德里 9455123451 18 2. 拉梅什 古尔冈 9652431543 18 3. 苏吉特 罗塔克 9156253131 20 4. 苏雷什 德里 9156768971 18 表1
这些是在关系方面使用的一些重要术语。
属性: 属性是定义关系的属性。例如。; 滚不 , 名称 等
元组: 关系中的每一行称为元组。上述关系包含4个元组,其中一个元组如下所示:
1. 内存 德里 9455123451 18 学位: 关系中属性的数量称为关系度。这个 大学生 上面定义的关系有5级。
基数: 关系中元组的数量称为基数。这个 大学生 上面定义的关系具有基数4。
专栏: 列表示特定属性的值集。专栏 滚不 是从学生关系中提取的。
滚不 1. 2. 3. 4. 处理关系数据库的查询可以分为以下几类:
数据定义语言: 它用于定义数据库的结构。例如;创建表、添加列、删除列等等。
数据操作语言: 它用于处理关系中的数据。例如。;插入、删除、更新等等。
数据查询语言: 它用于从关系中提取数据。例如。;选择
首先,我们将考虑数据查询语言。要从关系数据库中检索的一般查询是:
- 选择 [ 不同的 ]属性列表 从…起 R1,R2…。RM
- [ 哪里 条件]
- [ 分组 (属性)[ 有 条件]]
- [ 订购人 (属性)[ 描述 ]];
如果要从关系数据库中检索,语句1表示的部分查询是必需的。[]中的语句是可选的。我们将查看表1所示的关系上可能的查询组合。
案例1: 如果我们想检索属性 滚不 和 名称 在所有学生中,查询将是:
SELECT ROLL_NO, NAME FROM STUDENT;
滚不 名称 1. 内存 2. 拉梅什 3. 苏吉特 4. 苏雷什 案例2: 如果我们想找回 滚不 和 名称 那些 滚不 大于2时,查询将为:
SELECT ROLL_NO, NAME FROM STUDENT WHERE ROLL_NO>2;
滚不 名称 3. 苏吉特 4. 苏雷什 案例3: 如果我们想检索学生的所有属性,我们可以用*代替所有属性:
SELECT * FROM STUDENT WHERE ROLL_NO>2;
滚不 名称 住址 电话 年龄 3. 苏吉特 罗塔克 9156253131 20 4. 苏雷什 德里 9156768971 18 案例4: 如果我们想用 年龄 ,我们可以使用ORDER BY子句:
SELECT * FROM STUDENT ORDER BY AGE;
滚不 名称 住址 电话 年龄 1. 内存 德里 9455123451 18 2. 拉梅什 古尔冈 9652431543 18 4. 苏雷什 德里 9156768971 18 3. 苏吉特 罗塔克 9156253131 20 注: 订购人 年龄 相当于订购 年龄 ASC。如果我们想按 年龄 ,我们可以按订单 年龄 描述。
案例5: 如果我们想要检索一个属性或一组属性的不同值,则使用distinct,如下所示:
SELECT DISTINCT ADDRESS FROM STUDENT;
住址 德里 古尔冈 罗塔克 如果不使用DISTINCT,德里将在结果集中重复两次。在理解GROUP BY和HAVE之前,我们需要了解SQL中的聚合函数。
加积函数: 聚合函数用于对关系的数据值执行数学运算。SQL中使用的一些常见聚合函数包括:
- 计数: Count函数用于计算关系中的行数。例如;
SELECT COUNT (PHONE) FROM STUDENT;
计数(电话) 4. - 总数: 求和函数用于在关系中添加属性值。例如;
选择 总和 (年龄) 从…起 大学生
总数(年龄) 74 同样,可以使用最小值、最大值和平均值。如上所述,所有聚合函数只返回一行。
AVERAGE:它给出了元组的平均值。它也被定义为总和除以计数值。 语法:AVG(attributename) 或 语法:SUM(attributename)/COUNT(attributename) 上述语法还检索元组的平均值。
最大值:它从一组元组中提取最大值。 语法:MAX(attributename)
最小值:它从所有元组集合中提取最小值。 语法:MIN(attributename)
分组人: Group by用于根据属性或属性组对关系的元组进行分组。它总是与按组计算的聚合函数相结合。例如。;
SELECT ADDRESS, SUM(AGE) FROM STUDENT GROUP BY (ADDRESS);
在这个查询中,SUM( 年龄 )将计算,但不是针对整个表,而是针对每个地址。即。;德里地址的年龄总和(18+18=36)以及其他地址的年龄总和。输出为:
住址 总数(年龄) 德里 36 古尔冈 18 罗塔克 20 如果我们试图执行下面给出的查询,它将导致错误,因为尽管我们已经计算了每个地址的总和(年龄),但我们分组的每个地址都有超过1个ROLL_NO。所以它不能显示在结果集中。每当我们使用GROUP BY时,我们需要在SELECT语句之后的列上使用聚合函数来理解结果集。
SELECT ROLL_NO, ADDRESS, SUM(AGE) FROM STUDENT GROUP BY (ADDRESS);
注: 不属于GROUP BY子句的属性不能用于选择。属于GROUP BY子句的任何属性都可以用于选择,但不是强制性的。但是我们可以在aggregate函数中使用不属于GROUP BY子句的属性。 SQL测试
文章由Sonal Tuteja提供。如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。