在上一节中我们们安装了mysql以及navicat,并掌握了如何创建库、创建表、修改表和插入、删除以及更新数据。这一节我们将继续学习SQL的简单查询语句。
一、基本的查询语句
1、select子句和from子句
select <列名1>,<列名2>...
from <表名>;
select *
from <表名>;(查看全部列)
![7112789ccd69dc60f17a484a733ab740.png](https://img-blog.csdnimg.cn/img_convert/7112789ccd69dc60f17a484a733ab740.png)
![446c05aeb3f3dabcdcf6fa718312c3c7.png](https://img-blog.csdnimg.cn/img_convert/446c05aeb3f3dabcdcf6fa718312c3c7.png)
2、为列名设定别名
select
<列名1> as bieming,
<列名2> as '别名';
![f5e5b9c8f6fb411ee1e0e8d9240e4a77.png](https://img-blog.csdnimg.cn/img_convert/f5e5b9c8f6fb411ee1e0e8d9240e4a77.png)
3、删除重复数据
删除单列重复数据:
select distinct <列名>
from student;
删除多列重复数据:
select distinct <列名1>, <列名2>
from student;
注意,删除多列重复数据是指删除列1和列2都重复的数据
![bcf96021d60ad56b8d2f64f11b6fd6a2.png](https://img-blog.csdnimg.cn/img_convert/bcf96021d60ad56b8d2f64f11b6fd6a2.png)
![223bb407a930d8a219b9a2cb88b55b40.png](https://img-blog.csdnimg.cn/img_convert/223bb407a930d8a219b9a2cb88b55b40.png)
二、指定查询条件
1、where子句
select <列名1>,<列名2>... 3
from <表名> 1
where (运算符); 2
注意SQL语句的运行顺序,select子句最后运行,其他子句按书写顺序运行
2、运算符——关系运算符
![de441edf2427f28627f29f65800e7560.png](https://img-blog.csdnimg.cn/img_convert/de441edf2427f28627f29f65800e7560.png)
注意,运用关系运算符比较字符串时,是按照字典顺序比较的,比如字符串'10'<'2',因为字符串10是以1开头的,1比2小。在处理数据时,当发现“大的数据”反而排在“小的数据”的前面,这时就要注意该列数据的类型是以字符串形式存储的。
——算术运算符
运用算术运算符时,注意:
1、括号中表达式优先于括号外的
e.g. (1+2)*3
sql会先运行1+2,再运行*3
2、与空值进行运算结果仍为空值
5+null=null
null不能用于数值比较,null和null也不相等
注意!根据我们的常规逻辑,集合a和集合!a构成全集,但是在sql中却不然,如下所示
![795ee63ef8627c5a2b0e9eeddd18b14b.png](https://img-blog.csdnimg.cn/img_convert/795ee63ef8627c5a2b0e9eeddd18b14b.png)
这是一个成绩表,其中有一行数据的成绩为空值,现在我们想找出成绩小于60的数据
![c99d4b9b6de60590f1c441e429a18144.png](https://img-blog.csdnimg.cn/img_convert/c99d4b9b6de60590f1c441e429a18144.png)
再找出成绩大于等于60的数据
![6af7361632825670b419c5186d3cd353.png](https://img-blog.csdnimg.cn/img_convert/6af7361632825670b419c5186d3cd353.png)
集合成绩<60和集合>=60是构成全集的,但在两个结果中,都没有出现成绩为null的数据,这是因为null并不能和数值60进行比较!
既然不能用=null来找出空值的话,那么如何查找出空值值呢?这时候空判断运算符就可以上场了。
——空判断运算符
![631ad1df1932e96bdf2705b36a0a21d1.png](https://img-blog.csdnimg.cn/img_convert/631ad1df1932e96bdf2705b36a0a21d1.png)
——逻辑运算符
![bef89f758cd32b09681d664c4f52a499.png](https://img-blog.csdnimg.cn/img_convert/bef89f758cd32b09681d664c4f52a499.png)
![ec267d1e668f4dd278713fd29bace7b6.png](https://img-blog.csdnimg.cn/img_convert/ec267d1e668f4dd278713fd29bace7b6.png)
注意,and优先于or,例如,我想要找出性别为男,名字为猴子或马云的数据
![e0e02a672e6d574a7a31d196669dd7f9.png](https://img-blog.csdnimg.cn/img_convert/e0e02a672e6d574a7a31d196669dd7f9.png)
![1bb86f8d2ed7dcf7ad4b019184490a40.png](https://img-blog.csdnimg.cn/img_convert/1bb86f8d2ed7dcf7ad4b019184490a40.png)
![286de45b3dd2d03dc9c31dd447d75199.png](https://img-blog.csdnimg.cn/img_convert/286de45b3dd2d03dc9c31dd447d75199.png)
![8a9400e5517bcd64458edf3204ff2878.png](https://img-blog.csdnimg.cn/img_convert/8a9400e5517bcd64458edf3204ff2878.png)
![5783c3b3543f373599ab7c365c36d70e.png](https://img-blog.csdnimg.cn/img_convert/5783c3b3543f373599ab7c365c36d70e.png)
![db070c7ff10e789d060a0f716423f10f.png](https://img-blog.csdnimg.cn/img_convert/db070c7ff10e789d060a0f716423f10f.png)
![fcb15b9288e02aa5a2ea1e57478a45c7.png](https://img-blog.csdnimg.cn/img_convert/fcb15b9288e02aa5a2ea1e57478a45c7.png)
——模糊查询运算符
like+
![51d5531fdaa1f481f196fb81b14352a5.png](https://img-blog.csdnimg.cn/img_convert/51d5531fdaa1f481f196fb81b14352a5.png)
![9d02f54009fae840d7bf890e120e61fc.png](https://img-blog.csdnimg.cn/img_convert/9d02f54009fae840d7bf890e120e61fc.png)
![d8391b355fe09c3e0cce043efd7a28bf.png](https://img-blog.csdnimg.cn/img_convert/d8391b355fe09c3e0cce043efd7a28bf.png)
![c65fb39ba3ae57e854a333cf69859295.png](https://img-blog.csdnimg.cn/img_convert/c65fb39ba3ae57e854a333cf69859295.png)
三、注释
单行注释:--空格
多行注释:/*
...*/
![e346a4a80917c708dbdc98501c58f99a.png](https://img-blog.csdnimg.cn/img_convert/e346a4a80917c708dbdc98501c58f99a.png)
四、本节出现的ERROR
1、Error : Field '教师号' doesn't have a default value
问题描述:
我在teacher表了,加了age列
![ed258b063994acd08224f0a8aa9b575f.png](https://img-blog.csdnimg.cn/img_convert/ed258b063994acd08224f0a8aa9b575f.png)
当我指定age列插入数据时,就开始报Error : Field '教师号' doesn't have a default value的错误,但我指定教师号列却可以插入数据
![14e237501b0c7ad3ecbe99350c2a8689.png](https://img-blog.csdnimg.cn/img_convert/14e237501b0c7ad3ecbe99350c2a8689.png)
![97ae8ed1a778185120d1e4def86b233d.png](https://img-blog.csdnimg.cn/img_convert/97ae8ed1a778185120d1e4def86b233d.png)
![4df5a4a0a06d93934b27e374856b8143.png](https://img-blog.csdnimg.cn/img_convert/4df5a4a0a06d93934b27e374856b8143.png)
问题解决:插入数据时,主键字段不能为空。
2、Invalid use of NULL value
问题描述:想要修改age列的非空设置
问题解决:age列的数据为null,与not null的设置冲突。