sql找出2000-3000年中的闰年。_跟飞哥学编程:SQL入门-4-查询和条件
为了教学方便,我们先引入一个关键字:
SELECT
使用SELECT,可以查询得到表数据,比如:
SELECT
其中,星号(*)代表所有列。运行上述SQL语句,返回的就是Student表的所有行所有列的内容。我们也可以指定其中的某些列:
SELECT
SELECT除了通过查询表显示数据以外,也可以直接显示运算结果,比如:
SELECT
显示结果为:
我们可以利用这一点,配合变量的声明:
DECLARE
以及变量的赋值:
SET
补充:这里可以将变量简单理解为“一个存放数据的盒子”。
我们就可以开始
运算符
的学习了(上文中的加号(+)就是一个运算符)
SQL Server中常用的运算符有:
算术运算符:
加减乘除:+-*/。和数学运算一样,运算符之间是有优先级的,乘除的优先级就大于加减,所以3+2-5*0=5,而不是0。
取余:%,比如:8/5=1...3,3是8除以5的余数,所以8%5=3
圆括号:(),和数学运算一样,比加减乘除的优先级更高。另外,飞哥建议:总是使用()来确定优先级,以增加代码的可读性,所以,在编程开发中,3+2-(5*0)是更好的写法。
延伸阅读:KISS原则:Keep It Stupid Simple,要让代码像个傻瓜一样
赋值:=,把等号(=)右边的值赋值给左边的变量
组合运算符:+=、-=、*=、/=,实际上就是将:
UPDATE
在@Result的基础上再加(还可以减乘除)2,进行缩写:
UPDATE
文本运算符:
连接:+ ,可以将两个文本连接起来,比如:'源栈'+',欢迎您',结果就是'源栈,欢迎您'。注意TEXT和NTEXT不能使用加号(+)连接。
LIKE:
通配符:
- % :任意字符
- _:单个任意字符(包含空格' '?)
IF
转义符(ESCAPE): 如果要查文本里有没有%呢?我们需要:
- 使用ESCAPE指定一个转义字符
- 在%前加上这个转义字符,告诉SQL Server不要认为%代指任意字符
IF
除了%和_,还有[]^都是需要转义的。
注意UNICODE文本任然需要在单引号前面加N,如:N'源栈欢迎您!'
比较运算符:
比较运算符的结果是真假值,无法通过SELECT显示出来。为了演示,我们需要学习这个代码:
IF
意思就是:如果圆括号里面的运算结果为真(是),显示结果true;否则,显示结果false
好了,我们可以开始演示了。
比较运算符包括:
- 大于小于等于:>, <, =,等于是单等号=,不是双等号==。注意赋值和比较都适用的=,要根据它出现的位置和上下文,进行判断。
- 大于等于、小于等于:>=, <=,
- 不等于:<>或 !=。<> 仅出现在SQL中,而且是“标准”的,!=是T-SQL特有的,^_^
- 在...之间(包含边界值):BETWEEN...AND..,比如:6 BETWEEN 5 AND 7,结果为真;8 BETWEEN 5 AND 7,结果为假。
上述运算符可以比较数值和日期,以及文本。其中,文本的比较是按字符的编码……而且,文本的末尾空格会被忽略,即:'abc' = 'abc '的运算结果为真。
注意:NULL值的特殊性,总结起来,NULL值和任何值(包括NULL值)的任何比较,其结果总是为假
IF
那么,如何判断一个值是不是NULL呢?我们只能使用IS NULL:
IF
集合运算:
ANY或SOME:只要集合中有一个满足条件,结果就为真
IF
ALL:集合里所有的值都必须满足条件,结果才为真
IF
IN:包含在集合中
IF
还是要注意这个NULL值:NULL也不会IN任何结果集:
IF
EXISTS:检查集合(或者说结果集,SELECT Id FROM Student的结果就是一个集合或者程序集)是否有返回数据(或者说行数据)。如果结果集有值,比如SELECT Id FROM Student的结果为:1,2,3,返回真;否则,如果没有返回值,返回假。
IF
注意:EXISTS只检查结果集有无返回行,不检查返回行数据是否为NULL。意思是哪怕结果集只有一行,且这一行的值为NULL,EXISTS运算结果也为真。结果集为空和结果集值为NULL的区别见下图:
另外,在T-SQL中,EXISTS可以在删除表/数据库时配合使用,以免因为要删除的表不存在而报错,如下所示:
DROP
逻辑运算:
针对上面比较运算的结果再次进行运算,包括:
NOT:汉语通常说成“非”或者“取反”。放在比较运算之前,可以将比较运算的结果再“颠倒”过来:以前是真,颠倒为假;以前为假,颠倒为真。比如:
IF
AND:汉语读作“且”,可以连接多个比较运算。只有当所有比较运算的结果都为真时,最终结果为真:
IF
OR:汉语读作“或”,可以连接多个比较运算。只要有一个比较运算的结果都为真时,最终结果为真:
IF
NOT、AND和OR还可以混合运算,其优先级高到低为:NOT > AND > OR,比如:
IF
但为了提高可读性,建议使用()显式指明其优先级。上述代码可写成:
IF
学习了上述基础知识之后,我们就可以:
在SELECT、UPDATE和DELETE后面添加WHERE子句,以进行条件查询和精确更新/删除。
比如,我们要查询所有未录入年龄(Age)的同学:
SELECT
给所有入学时间(Enroll)在9月的同学成绩加上10分:
UPDATE
删除Id大于3的同学:
DELETE
WHERE子句,是SQL语句的重要组成部分!同学们需要通过作业来进行更多的练习。
作业:
在User表中:
- 查找没有录入密码的用户
- 删除用户名(UserName)中包含“管理员”或者“17bang”字样的用户
在Problem表中:
- 给所有悬赏(Reward)大于10的求助标题加前缀:【推荐】
- 给所有悬赏大于20且发布时间(Created)在2019年10月10日之后的求助标题加前缀:【加急】
- 删除所有标题以中括号【】开头(无论其中有什么内容)的求助
- 查找Title中第5个起,字符不为“数据库”且包含了百分号(%)的求助
在Keyword表中:
- 找出所有被使用次数(Used)大于10小于50的关键字名称(Name)
- 如果被使用次数(Used)小于等于0,或者是NULL值,或者大于100的,将其更新为1
- 删除所有使用次数为奇数的Keyword
注意,上述作业需要自己插入数据进行测试。
每日单词:
感谢童鞋们的阅读!^_^
我就是:黑律师/包工头/创业狗/老码农……现在还是教书匠的大飞哥。
再次重申这个系列的目标是:
1)通俗易懂。2)实战为主。3)面向就业。
系列内容的完善需要你的反馈!
欢迎点赞和评论,以及加入我们的QQ交流群:326801052。
sql找出2000-3000年中的闰年。_跟飞哥学编程:SQL入门-4-查询和条件相关推荐
- jpa 自定义sql if_跟飞哥学编程:SQL入门-:函数、存储过程和触发器
最后不要忘记:SQL是一种结构化(Structured)的语言(Language),所以它具有 编程语言的特性 声明变量和赋值 所谓变量,可以是看成一个存储数据的容器,所有它里面存储的值是可以变化的. ...
- mysql比较两张表中两个字段值_如何通过SQL找出2个表里值不同的列的方法
以下有两个表,他们的结构完全相同,请通过SQL找出值不同的列. Student_1 NAME AGE SCORE peter 26 100 jack 25 96 daniel 26 48 bark 2 ...
- python编写程序、输出公元2000年到3000年所有闰年_编写程序,输出从公元2000年至3000年所有闰年的年号,每输出10个年号换一行.判断公元年是否为闰年的条件...
题目: 编写程序,输出从公元2000年至3000年所有闰年的年号,每输出10个年号换一行.判断公元年是否为闰年的条件 解答: #include void Judge(int y) { while(1) ...
- 自学SQL | 找出每部电影和单部电影销售冠军之间的销售差,列出电影名,销售额差额
小菜鸡的第一篇笔记--自学SQL网 ------------------------------------------------------ 题目: 找出每部电影和单部电影销售冠军之间的销售差,列 ...
- SQL找出顺序列中的断号
先假设info表中有如下数据 select id from info id ----------- 1 2 3 5 6 7 8 10 11 12 15 select beginId,(select ...
- c# 找出目录下的所有子目录_第9期:Linux下文件系统满的处理
文件系统满(file system full),几乎是每个程序员都会遇到的问题.它会导致各种神奇的现象,比如程序突然无法启动.日志突然不刷新了等.测试环境,我们通常找出大文件并删除即可.常规的步骤是: ...
- 找出最具竞争力的子序列_力扣300——最长上升子序列
这道题主要涉及动态规划,优化时可以考虑贪心算法和二分查找. 原题 给定一个无序的整数数组,找到其中最长上升子序列的长度. 示例: 输入: [10,9,2,5,3,7,101,18]输出: 4 解释: ...
- 如何快速找出找出两个数组中的_看动画学算法之:排序-快速排序
简介:快速排序也采用的是分而制之的思想.那么快速排序和归并排序的区别在什么地方呢? 归并排序是将所有的元素拆分成一个个排好序的数组,然后将这些数组再进行合并. 而快速排序虽然也是拆分,但是拆分之后的操 ...
- 找出最具竞争力的子序列_每日算法系列【LeetCode 376】摆动序列
题目描述 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列.第一个差(如果存在的话)可能是正数或负数.少于两个元素的序列也是摆动序列. 例如, [1,7,4,9,2,5] 是一个 ...
最新文章
- 工作发狂:Mybatis 中$和#千万不要乱用!
- 使用Apache Archiva搭建Maven Repository Server
- day05 selenium库的基础使用
- linux中操作数据库的使用命令记录
- PostgreSQL备份还原
- 浅谈SDN中的OverLay与UnderLay技术
- Instruments性能优化-Core Animation
- 服务器操作系统修复补丁,最后的更新!微软Windows 7发布KB4534310修复补丁
- bin 转hex方法
- 反向题在测试问卷信效度_问卷一定要做信度效度检验吗?如果含有多选题怎样做信度分析,请各位高手帮帮忙。...
- 六一儿童节 python
- 如何成为一流的「匠人」?
- 解决U盘中文件全部变成快捷方式的问题
- java熔断器_一种熔断器的实现方法与流程
- 雨伞16骨好还是24骨好_伞骨质量好的雨伞推荐
- 碳纳米角、纳米囊泡等量子点复合纳米材料的定制合成方法
- 国产软件曝光美国51区真相 UFO?天坑?荒漠神秘圆圈?
- 窃取信息的新恶意软件通过假冒的破解网站感染使用者
- 人力资源招聘的黄金法则
- 便利店里的常用日语:“找”的日语不都是「探す」