sql 查询重复数据大于2条以上的_SQL的简单查询

在上一节中我们们安装了mysql以及navicat,并掌握了如何创建库、创建表、修改表和插入、删除以及更新数据。这一节我们将继续学习SQL的简单查询语句。

一、基本的查询语句

1、select子句和from子句

select <列名1>,<列名2>...
from <表名>;

select *
from <表名>;(查看全部列)

7112789ccd69dc60f17a484a733ab740.png

446c05aeb3f3dabcdcf6fa718312c3c7.png
查询语句的运行过程如图

2、为列名设定别名

select 
<列名1> as bieming,
<列名2> as '别名';

f5e5b9c8f6fb411ee1e0e8d9240e4a77.png

3、删除重复数据

删除单列重复数据:
select distinct <列名>
from student;

删除多列重复数据:
select distinct <列名1>, <列名2>
from student;

注意,删除多列重复数据是指删除列1和列2都重复的数据

bcf96021d60ad56b8d2f64f11b6fd6a2.png

223bb407a930d8a219b9a2cb88b55b40.png

二、指定查询条件

1、where子句

select <列名1>,<列名2>...                                3
from <表名>                                              1
where (运算符);                                           2

注意SQL语句的运行顺序,select子句最后运行,其他子句按书写顺序运行

2、运算符——关系运算符

equation?tex=%5Cbegin%7Barray%7D%5Bb%5D+%7B%7Cc%7Cc%7C%7D++%5Chline+%E5%85%B3%E7%B3%BB%E8%BF%90%E7%AE%97%E7%AC%A6+%26+%E5%90%AB%E4%B9%89+%5C%5C++%5Chline+%3D++%26+%E7%AD%89%E4%BA%8E++%5C%5C++%5Chline+%3C++%26+%E5%B0%8F%E4%BA%8E+%5C%5C++%5Chline+%3E++%26+%E5%A4%A7%E4%BA%8E+%5C%5C++%5Chline+%3C%3D++%26+%E5%B0%8F%E4%BA%8E%E7%AD%89%E4%BA%8E++%5C%5C+%5Chline+%3E%3D++%26+%E5%A4%A7%E4%BA%8E%E7%AD%89%E4%BA%8E++%5C%5C+%5Chline+%3C%3E%2F%21%3D++%26+%E4%B8%8D%E7%AD%89%E4%BA%8E+%5C%5C+%5Chline++%5Cend%7Barray%7D%5C%5C

de441edf2427f28627f29f65800e7560.png

注意,运用关系运算符比较字符串时,是按照字典顺序比较的,比如字符串'10'<'2',因为字符串10是以1开头的,1比2小。在处理数据时,当发现“大的数据”反而排在“小的数据”的前面,这时就要注意该列数据的类型是以字符串形式存储的。

——算术运算符

equation?tex=%5Cbegin%7Barray%7D%5Bb%5D+%7B%7Cc%7Cc%7C%7D++%5Chline+%E7%AE%97%E6%9C%AF%E8%BF%90%E7%AE%97%E7%AC%A6+%26+%E5%90%AB%E4%B9%89+%5C%5C++%5Chline+%2B++%26+%E5%8A%A0++%5C%5C++%5Chline+-++%26+%E5%87%8F+%5C%5C++%5Chline+%2A++%26+%E4%B9%98+%5C%5C++%5Chline+%2F+%26+%E9%99%A4++%5C%5C+++%5Chline++%5Cend%7Barray%7D%5C%5C

运用算术运算符时,注意:

1、括号中表达式优先于括号外的

e.g. (1+2)*3 
sql会先运行1+2,再运行*3

2、与空值进行运算结果仍为空值

5+null=null
null不能用于数值比较,null和null也不相等

注意!根据我们的常规逻辑,集合a和集合!a构成全集,但是在sql中却不然,如下所示

795ee63ef8627c5a2b0e9eeddd18b14b.png
共8条数据

这是一个成绩表,其中有一行数据的成绩为空值,现在我们想找出成绩小于60的数据

c99d4b9b6de60590f1c441e429a18144.png
没有输出结果

再找出成绩大于等于60的数据

6af7361632825670b419c5186d3cd353.png
只输出了7条数据

集合成绩<60和集合>=60是构成全集的,但在两个结果中,都没有出现成绩为null的数据,这是因为null并不能和数值60进行比较!

既然不能用=null来找出空值的话,那么如何查找出空值值呢?这时候空判断运算符就可以上场了。

——空判断运算符

equation?tex=%5Cbegin%7Barray%7D%5Bb%5D+%7B%7Cc%7Cc%7C%7D++%5Chline+%E7%A9%BA%E5%88%A4%E6%96%AD%E8%BF%90%E7%AE%97%E7%AC%A6+%26+%E5%90%AB%E4%B9%89+%5C%5C++%5Chline+is+%5C+null+%26+%E7%A9%BA+%5C%5C++%5Chline+is+%5C+not+%5C+null+%26+%E9%9D%9E%E7%A9%BA+%5C%5C++++%5Chline++%5Cend%7Barray%7D%5C%5C

631ad1df1932e96bdf2705b36a0a21d1.png

——逻辑运算符

equation?tex=%5Cbegin%7Barray%7D%5Bb%5D+%7B%7Cc%7Cc%7C%7D++%5Chline+%E9%80%BB%E8%BE%91%E8%BF%90%E7%AE%97%E7%AC%A6+%26+%E5%90%AB%E4%B9%89+%5C%5C++%5Chline+not%26+%E5%90%A6%E5%AE%9A%E6%9F%90%E4%B8%80%E6%9D%A1%E4%BB%B6++%5C%5C++%5Chline+and++%26+%E5%B9%B6%E4%B8%94+%5C%5C++%5Chline+between%26+%E8%8C%83%E5%9B%B4%E6%9F%A5%E6%89%BE+%5C%5C++%5Chline+or++%26+%E6%88%96%E8%80%85++%5C%5C+%5Chline+in++%26+or%E7%9A%84%E7%AE%80%E5%8D%95%E7%94%A8%E6%B3%95++%5C%5C++%5Chline++%5Cend%7Barray%7D%5C%5C

bef89f758cd32b09681d664c4f52a499.png
not

ec267d1e668f4dd278713fd29bace7b6.png
与上面结果相同

注意,and优先于or,例如,我想要找出性别为男,名字为猴子或马云的数据

e0e02a672e6d574a7a31d196669dd7f9.png

1bb86f8d2ed7dcf7ad4b019184490a40.png
输出了一条性别是女的数据

286de45b3dd2d03dc9c31dd447d75199.png
结果正确

8a9400e5517bcd64458edf3204ff2878.png
between

5783c3b3543f373599ab7c365c36d70e.png
or

db070c7ff10e789d060a0f716423f10f.png
in

fcb15b9288e02aa5a2ea1e57478a45c7.png
not in

——模糊查询运算符

like+

equation?tex=%5Cbegin%7Barray%7D%5Bb%5D+%7B%7Cc%7Cc%7C%7D++%5Chline+%E9%80%9A%E9%85%8D%E7%AC%A6+%26+%E5%90%AB%E4%B9%89+%5C%5C++%5Chline++%5C%25%26+%E4%BB%BB%E6%84%8F%E5%AD%97%E7%AC%A6%E4%B8%B2%EF%BC%880-n%E4%BD%8D%EF%BC%89+%5C%5C++%5Chline+%5C_+%26+%E4%B8%80%E4%B8%AA%E4%B8%8B%E5%88%92%E7%BA%BF%E8%A1%A8%E7%A4%BA%E4%B8%80%E4%B8%AA%E5%AD%97%E7%AC%A6%5C%5C+++%5Chline++%5Cend%7Barray%7D%5C%5C%5C

51d5531fdaa1f481f196fb81b14352a5.png
找出姓猴的人

9d02f54009fae840d7bf890e120e61fc.png
找出名字最后一个字是猴的人

d8391b355fe09c3e0cce043efd7a28bf.png
找出名字包含猴的人

c65fb39ba3ae57e854a333cf69859295.png
两个下划线,找出叫王**的人

三、注释

单行注释:--空格
多行注释:/*
               ...*/

e346a4a80917c708dbdc98501c58f99a.png

四、本节出现的ERROR

1、Error : Field '教师号' doesn't have a default value

问题描述:

我在teacher表了,加了age列

ed258b063994acd08224f0a8aa9b575f.png

当我指定age列插入数据时,就开始报Error : Field '教师号' doesn't have a default value的错误,但我指定教师号列却可以插入数据

14e237501b0c7ad3ecbe99350c2a8689.png

97ae8ed1a778185120d1e4def86b233d.png

4df5a4a0a06d93934b27e374856b8143.png

问题解决:插入数据时,主键字段不能为空。

2、Invalid use of NULL value

问题描述:想要修改age列的非空设置

问题解决:age列的数据为null,与not null的设置冲突。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值