在上一节中我们们安装了mysql以及navicat,并掌握了如何创建库、创建表、修改表和插入、删除以及更新数据。这一节我们将继续学习SQL的简单查询语句。
一、基本的查询语句
1、select子句和from子句
select <列名1>,<列名2>...
from <表名>;
select *
from <表名>;(查看全部列)
![7112789ccd69dc60f17a484a733ab740.png](https://i-blog.csdnimg.cn/blog_migrate/3552e04b92d9739dd9bf404d81e21139.jpeg)
![446c05aeb3f3dabcdcf6fa718312c3c7.png](https://i-blog.csdnimg.cn/blog_migrate/c31a46b2244a338008b7162a0ec956c4.jpeg)
2、为列名设定别名
select
<列名1> as bieming,
<列名2> as '别名';
![f5e5b9c8f6fb411ee1e0e8d9240e4a77.png](https://i-blog.csdnimg.cn/blog_migrate/e66dc8fc7a7254d73e2f8e3b011b8df2.jpeg)
3、删除重复数据
删除单列重复数据:
select distinct <列名>
from student;
删除多列重复数据:
select distinct <列名1>, <列名2>
from student;
注意,删除多列重复数据是指删除列1和列2都重复的数据
![bcf96021d60ad56b8d2f64f11b6fd6a2.png](https://i-blog.csdnimg.cn/blog_migrate/1cfff9decafcb5778da8391849337652.jpeg)
![223bb407a930d8a219b9a2cb88b55b40.png](https://i-blog.csdnimg.cn/blog_migrate/2c88461eb876b3cbc1bb24770510512a.jpeg)
二、指定查询条件
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](https://i-blog.csdnimg.cn/blog_migrate/ec353599d0740e59a84e879c9d1e33e9.png)
![de441edf2427f28627f29f65800e7560.png](https://i-blog.csdnimg.cn/blog_migrate/b100cdbb88afe9577734d74208f05f03.jpeg)
注意,运用关系运算符比较字符串时,是按照字典顺序比较的,比如字符串'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](https://i-blog.csdnimg.cn/blog_migrate/2b781f6e4fef0d2a9566beb6a4fdc4d5.png)
运用算术运算符时,注意:
1、括号中表达式优先于括号外的
e.g. (1+2)*3
sql会先运行1+2,再运行*3
2、与空值进行运算结果仍为空值
5+null=null
null不能用于数值比较,null和null也不相等
注意!根据我们的常规逻辑,集合a和集合!a构成全集,但是在sql中却不然,如下所示
![795ee63ef8627c5a2b0e9eeddd18b14b.png](https://i-blog.csdnimg.cn/blog_migrate/1e4b4b8320f63ffa4ab5f1762ad821a4.jpeg)
这是一个成绩表,其中有一行数据的成绩为空值,现在我们想找出成绩小于60的数据
![c99d4b9b6de60590f1c441e429a18144.png](https://i-blog.csdnimg.cn/blog_migrate/a57cd0cd272192a9aef6fbff632b5ff3.jpeg)
再找出成绩大于等于60的数据
![6af7361632825670b419c5186d3cd353.png](https://i-blog.csdnimg.cn/blog_migrate/428fc3f2aef10aaf51130437af71a757.jpeg)
集合成绩<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](https://i-blog.csdnimg.cn/blog_migrate/5d90ecad339eab5557e456cd8eed87a1.png)
![631ad1df1932e96bdf2705b36a0a21d1.png](https://i-blog.csdnimg.cn/blog_migrate/044ec100d9f9b9f9a65653f767185ca6.jpeg)
——逻辑运算符
![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](https://i-blog.csdnimg.cn/blog_migrate/0229847bbb3054167ca60f0f93412153.png)
![bef89f758cd32b09681d664c4f52a499.png](https://i-blog.csdnimg.cn/blog_migrate/69b89523dbaca533d4f7600b7ed76551.jpeg)
![ec267d1e668f4dd278713fd29bace7b6.png](https://i-blog.csdnimg.cn/blog_migrate/d19c8d114de88b3919fea6eb3bd36f63.jpeg)
注意,and优先于or,例如,我想要找出性别为男,名字为猴子或马云的数据
![e0e02a672e6d574a7a31d196669dd7f9.png](https://i-blog.csdnimg.cn/blog_migrate/ce4cdff1b8015cc0247944e937e803c7.jpeg)
![1bb86f8d2ed7dcf7ad4b019184490a40.png](https://i-blog.csdnimg.cn/blog_migrate/a3133e961af2f5e603994213353fb9ff.jpeg)
![286de45b3dd2d03dc9c31dd447d75199.png](https://i-blog.csdnimg.cn/blog_migrate/ada4d533d3d60bea01e54ef7d981d9c0.jpeg)
![8a9400e5517bcd64458edf3204ff2878.png](https://i-blog.csdnimg.cn/blog_migrate/189fb1f0310810a85a59b41870c0c513.jpeg)
![5783c3b3543f373599ab7c365c36d70e.png](https://i-blog.csdnimg.cn/blog_migrate/1e6ce9a56e3280d6229f71ddbef9c271.jpeg)
![db070c7ff10e789d060a0f716423f10f.png](https://i-blog.csdnimg.cn/blog_migrate/cc1f27405238fe69c8e6e387bd91cffc.jpeg)
![fcb15b9288e02aa5a2ea1e57478a45c7.png](https://i-blog.csdnimg.cn/blog_migrate/31ec457db4190fdbd901406efff6d7a9.jpeg)
——模糊查询运算符
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](https://i-blog.csdnimg.cn/blog_migrate/e358ffdda376ec857f244df8e6c276ac.png)
![51d5531fdaa1f481f196fb81b14352a5.png](https://i-blog.csdnimg.cn/blog_migrate/3dce3ed3c5deb586ec1960c736e8a2b7.jpeg)
![9d02f54009fae840d7bf890e120e61fc.png](https://i-blog.csdnimg.cn/blog_migrate/3ed55a18a5579403fdba7b4a42bd5804.jpeg)
![d8391b355fe09c3e0cce043efd7a28bf.png](https://i-blog.csdnimg.cn/blog_migrate/84817fcc491c9f532ceb60b21660c421.jpeg)
![c65fb39ba3ae57e854a333cf69859295.png](https://i-blog.csdnimg.cn/blog_migrate/94215ade47510393a17425d421e76988.jpeg)
三、注释
单行注释:--空格
多行注释:/*
...*/
![e346a4a80917c708dbdc98501c58f99a.png](https://i-blog.csdnimg.cn/blog_migrate/5fe46028c36597473f8c1085d05bc819.jpeg)
四、本节出现的ERROR
1、Error : Field '教师号' doesn't have a default value
问题描述:
我在teacher表了,加了age列
![ed258b063994acd08224f0a8aa9b575f.png](https://i-blog.csdnimg.cn/blog_migrate/aea7e984228faea1539556fdb5e8a0ea.jpeg)
当我指定age列插入数据时,就开始报Error : Field '教师号' doesn't have a default value的错误,但我指定教师号列却可以插入数据
![14e237501b0c7ad3ecbe99350c2a8689.png](https://i-blog.csdnimg.cn/blog_migrate/69fb754672f89e5e7d3dc3b8396f3ccc.jpeg)
![97ae8ed1a778185120d1e4def86b233d.png](https://i-blog.csdnimg.cn/blog_migrate/607c9fbfbd363eedf2c8819e7bbe29cb.jpeg)
![4df5a4a0a06d93934b27e374856b8143.png](https://i-blog.csdnimg.cn/blog_migrate/e04fdf9ae2ef05775180e715e0159f4b.jpeg)
问题解决:插入数据时,主键字段不能为空。
2、Invalid use of NULL value
问题描述:想要修改age列的非空设置
问题解决:age列的数据为null,与not null的设置冲突。