MySQL笔记

本文深入解析SQL查询语句的高级应用,涵盖列重命名、数值转换、字符串连接、模式匹配、排序、子查询、去除重复项及分组筛选等核心功能。同时,探讨了NULL值处理、约束与触发器设置,以及如何在复杂场景下优化查询效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查询语句:

列重命名:SELECT title AS name。将查询出的titile列重命名为name列

SELECT字句使用表达式取代属性:SELECT title AS name, length*0.016667 AS lengthInHours。这个SELECT将查询出的电影时间,由以分钟做单位变成以小时做单位

SELECT语句中将常量作为表达式:SELECT title AS name, length*0.016667 AS lengthInHours, 'hrs' AS inHours。这个语句相比上一个,在最后增加了一列inHours,值都为字符串'hrs',表示第二列的单位。

WHERE语句中对字符串连接运算:'foo' || 'bar'。结果为'foobar'

SQL使用普通的计数法表示实数:-12.34, 1.23E45

模式匹配:暂时跳过,因为作业里面还没用到

NULL:和任何值进行算术运算结果仍为NULL,和任何值进行比较运算,结果为UNKNOWN值。NULL不是一个常量,不能直接将其作为操作数,但是可以将其放在表达式中

排序输出:ORDER BU<list of attributes>,默认为升序,通过给某一属性增加DESC关键字变为降序。ORDER子句放在WHERE和其他语句(包括GROUP BY 和 HAVING)后面,而且可以使用SELECT语句中没有包含的属性进行排序。

FROM子句中的子查询:FROM子句中可以将子查询当作关系使用,用()括起来,在右括号外给这个子查询起一个名字

DISTINCT:SELECT语句默认保留重复的元组,消除重复需要在SELECT后面加DISTINCT,但是消除重复代价极高。

需要注意的是,UNION,INTERSECT和EXCEPT中默认消除重复,若要保留重复,应当在这些关键字后面加ALL。

HAVING子句:是配合GROUP BY的,如果一个分组中,没有满足HAVING条件的元组,那么这个分组会被整个去掉。

约束和触发器:

外键约束声明:在CREATE TABLE时,在属性声明后加REFERENCES <表名>(<属性名>)。也可以单独一行声明FOREIGN KEY(<属性名>) REFERENCES <表名>(<属性名>).

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值