![eb3263f142d7eafdd3a8048802ba3f5a.png](https://i-blog.csdnimg.cn/blog_migrate/78fff6001a0157b3ce94c70093fb430c.jpeg)
SQL简单查询学习大纲
![3009c9fac0ef9cecea5f9e090ff84d7f.png](https://i-blog.csdnimg.cn/blog_migrate/b9035c39a1db8a9cf5346d00bc3d4b4b.jpeg)
一、基本的查询语句
select语句是SQL中使用最多的语句。子句是SQL语句的组成要素,是以某个关键字作为开始的语句,最基本的select语句包含了select和from两个子句,select子句后接希望从表中查询出列的名称,from子句通过表名指定从哪个表中查找数据。
![3d7f7e26d218f03d88014a897a612f0a.png](https://i-blog.csdnimg.cn/blog_migrate/0e362211e8821371aaa0f633b33def22.jpeg)
SQL查询语句在数据库里的运行原理:通过向数据库发送SQL查询语句,数据库里会运行SQL语句,最后将查询结果数据返回,如:
![7d4baef956133d9dbde5aa7f985d6283.png](https://i-blog.csdnimg.cn/blog_migrate/54e6113c3582591023dc19f143fa6b3e.jpeg)
所有涉及SQL语句的“,”都必须是英文状态下输入的,否则会报错
查询全部列(*)
如果想查询出表里所有列,可用星号"*"代表
![ac0e5d32adc7ea58ce16751533051067.png](https://i-blog.csdnimg.cn/blog_migrate/0766760878a8e5b281d81f3982db2287.jpeg)
为列设定别名(as)
SQL查询语句使用as为列设定别名,别名可以让select语句的执行结果更易理解和操作。如果列名是英文,为了更易理解可以使用as给列名起个中文名称。如果别名是中文,需要加上英文单引号。
![cda14499451d41253f0a1e88a24f46a0.png](https://i-blog.csdnimg.cn/blog_migrate/d2203a9617b82b80764b62011b30b83b.jpeg)
删除重复数据(distinct)
distinct用在一列前——select 后加distinct代表从查询结果中去除重复的行,并对重复值只保留一个。
![6dc8a1ab52dc4e52cf9c1a23905e4176.png](https://i-blog.csdnimg.cn/blog_migrate/07c04e3057b6af3653eeb7fb9d1858eb.jpeg)
distinct用在多列前——将多列数据进行组合,即数据在多列都相同时才算做重复数据。distinct只能放在第一个列名前,不能放在其他位置。
![9a2cda1989ae452f313fef98f0c3cc9c.png](https://i-blog.csdnimg.cn/blog_migrate/07fe61f6b5e0696a90d5dc44792e9a8f.jpeg)
SQL书写规则
![1db8f4d0303bf6314bce824bc4cfe30e.png](https://i-blog.csdnimg.cn/blog_migrate/0a5b8c41dc01b9dec32943aef6b9ce51.jpeg)
1. SQL语句逐条执行,一条SQL语句以分号";"结尾。
2. SQL语句不区分关键字的大小写。关键字是数据库事先定义好的、有特别含义的单词,在客户端里输入的关键字以蓝色高亮显示。表名和列名也不区分大小写,但是须注意,插入表中的数据需要区分大小写,如插入表中的“A”和“a”是两个不同的数据。
3. 列名不能加单引号,因为列名是有特殊含义的,不是字符串,所以不能加单引号;同时,在列名命名时不能有空格,如把列名“姓名”命名为“姓 名”,SQL无法区分。
4. 输入的符号只能使用英文符号,二者区别肉眼可见,中文符号比英文符号占用的空间更大。若出现报错首先可以检查符号是否为英文符号。
运行按钮
运行——把所有查询界面里所有的SQL语句都运行;
运行已选择的——先选中某一部分需要运行的SQL语句,再点击“运行已选择的”按钮,就只会只运行已选中的SQL语句
![6fd6b514214860dad59ba6b430a4ddb6.png](https://i-blog.csdnimg.cn/blog_migrate/6ebce97bc07f05bc7ec815c4fe90b264.png)
二、指定查询条件
查询条件
查询语句通过where子句来指定查询条件,where子句就是查询条件的表达式。如想从下表中查询名字为“猴子”的同学的学号,可以用where子句指定条件,提取出“姓名”列中值为“猴子”的行。
![6909870cfde807c04e2484ecb0d47ba3.png](https://i-blog.csdnimg.cn/blog_migrate/915e6cec249778a0469cbe5ab9394fd8.jpeg)
SQL运行顺序
SQL子句的书写顺序与SQL的运行顺序不同(因为SQL子句的书写顺序已经固定不能随意更改):select子句最后运行,其他子句按书写顺序运行
第一步首先运行from子句,表示从哪张表中查找数据
第二步运行where子句,表示查询数据的条件是什么,然后查找符合条件的行
第三步运行select子句,表示从查询出的行中选取select子句指定的列
![98f6e84bc29fe74b0698556f6136e5c5.png](https://i-blog.csdnimg.cn/blog_migrate/07df8a688ab75711f812219da0a880b3.jpeg)
三、注释和SQL语句注意事项
注释
-
-
- 有助于读者更好的理解SQL语句,特别是在书写复杂SQL语句时。
- 单行注释:英文状态下的两个短杠+空格
- 多行注释:英文状态下的斜杠星号+星号斜杠
-
![e06b5eb1428a40374362c25a04797eae.png](https://i-blog.csdnimg.cn/blog_migrate/73e7e299073bd8e80182659714b2747d.jpeg)
SQL语句注意事项
1. SQL语句用换行符或半角空格分隔关键词,但不能空一行(如下图中2)
2. 标点符号必须用英文符号(如下图中3)
![3d877f86771459824a0a372c90376b76.png](https://i-blog.csdnimg.cn/blog_migrate/91a219101e9f22e4cfb8930cf718f371.jpeg)
四、运算符
三种运算符:算术运算符、比较运算符、逻辑运算符
算术运算符
即加减乘除。值得注意的是,所有含有空值的运算得到的结果依然是空值。
![0593c49e85e476e699a413f4ba57761d.png](https://i-blog.csdnimg.cn/blog_migrate/b356837516cb6f0e4829222bd33d5b86.jpeg)
-
-
-
- 案例如下图
-
-
![4ef22c66efbe692578a15cbf3a925234.png](https://i-blog.csdnimg.cn/blog_migrate/df064433a60b3000349c2150b49545d5.jpeg)
比较运算符
通过比较运算符可以得到筛选数据的条件表达式。符号的书写顺序和读符号的顺序一致。
![4c98b3d1aa532f7c906a1d0f26b91215.png](https://i-blog.csdnimg.cn/blog_migrate/4af8f1bfd2d0c1cff8b18c87d38d285d.jpeg)
-
-
-
- 案例如下图
-
-
![397575b81b913a009d7bb1cc26f8776b.png](https://i-blog.csdnimg.cn/blog_migrate/1b839f318e1592d3a5ffe6d3f25396d3.jpeg)
![595e512f6f4612dfde4e69b39febd390.png](https://i-blog.csdnimg.cn/blog_migrate/c3f0baee90525095c3673e06b58e3fee.jpeg)
字符串比较规则——字符串类型是按字典顺序进行排序,因此字符串类型的比较也是按字典顺序进行比较。如下图,虽然数字10大于数字2,但加了单引号属于字符串类型,按字典顺序'10'<'2'(因为字符串'10'是以1开头)。
![8bc5c1cb3de6a6f34c42612f5bbfce3f.png](https://i-blog.csdnimg.cn/blog_migrate/e62b84a474136ff0c142e5165447568c.jpeg)
查询null值——用is null进行查找。反之,查询非null值可以用is not null。
![337278396796a88e3256f2d627bb3233.png](https://i-blog.csdnimg.cn/blog_migrate/ae9198f02bf9e04682c9ecac63cd3c5f.jpeg)
逻辑运算符
运用逻辑运算符可以将多个查询条件进行组合。
![b0cb2066cfb2e9ac2d4373aa6e555217.png](https://i-blog.csdnimg.cn/blog_migrate/bfd274d39a4ddae52533170ca66014d7.jpeg)
not——否定某一条件
![a291a75c99aab6341e43e58208e29585.png](https://i-blog.csdnimg.cn/blog_migrate/13bb6a3e16399fa33834f5cc2c9d0a8c.jpeg)
and——并且(文氏图是将事物关系通过更易理解的图形进行可视化)
![4fdd0d959d9e3f325e34a0f6a035a9de.png](https://i-blog.csdnimg.cn/blog_migrate/d02dc16d704000c367256c0e296ab541.png)
![edf4133b80fab6280a33bfa4cf218e85.png](https://i-blog.csdnimg.cn/blog_migrate/cd1b744e384afb8854333b92a3030084.jpeg)
![0c1465c7ceffafcda5781a3154f7b4bb.png](https://i-blog.csdnimg.cn/blog_migrate/548b68f54c18e498932f587c869d6ab0.jpeg)
-
-
-
-
- 案例如下图
-
-
-
![af1f0e82c5982535fc8a4e3dcfb1b60c.png](https://i-blog.csdnimg.cn/blog_migrate/90bcdb4a6418c0b56e0b372ef998bcda.jpeg)
括号里的or逻辑运算符优先于括号外的and逻辑运算符运行
![9e2d42c387e0b632cfe1070a41bf42e6.png](https://i-blog.csdnimg.cn/blog_migrate/666382a739501a0e3df62062bf6720a6.jpeg)
between——查询范围。需要注意的是,between逻辑运算符会查找包括边界的两个阈值,即大于等于和小于等于。
![a0cdb62c2896f71f00f330723b247abd.png](https://i-blog.csdnimg.cn/blog_migrate/6099a33339e8c74e2181eabbb1497a71.jpeg)
or——或者。只要or两边的条件有其中一个成立,则全部成立
![613f574bae3d738a625e72a33349c4cd.png](https://i-blog.csdnimg.cn/blog_migrate/b7b685e57863d2ee3bf9b61ad882b916.png)
-
-
-
-
- 案例如下图
-
-
-
![4668a18dd654d2eea0b9ea3182232af9.png](https://i-blog.csdnimg.cn/blog_migrate/385cbfad6226e9586e60f66b277b43ec.jpeg)
in——or的简单写法
where 姓名 in(''猴子,'马云') 代表筛选出in后面括号里值,即筛选出表student里姓名是猴子或者马云的记录
![7bf5918d7d85d3a1d9b70a6eb1767e47.png](https://i-blog.csdnimg.cn/blog_migrate/b76b41d85b2b182641f6b0329eb261e8.jpeg)
not in——表示不在in后面括号里的值,即查找姓名既不是猴子也不是马云的记录
![bc84d706ddb83f4768a35f3769958178.png](https://i-blog.csdnimg.cn/blog_migrate/a6e2a785b7a0c3e1275151f3927f51dd.jpeg)
五、字符串模糊查询
搜索引擎里通过输入关键词把相关的内容都查找出来,这就是模糊查询
SQL里使用关键词like表示字符串模糊查询
![15bc83dd50b8ff5ea5d26159acd62fcb.png](https://i-blog.csdnimg.cn/blog_migrate/a087a4812327cd41902495535905f963.png)
%表示查找任意字符串
![72109ea4de532b6312f70f012a1f02d0.png](https://i-blog.csdnimg.cn/blog_migrate/f6a622ff69a87f599ccf4db2376b25b4.jpeg)
_表示任意一个字符
![ea33e03e289f51c823b771398f795f2a.png](https://i-blog.csdnimg.cn/blog_migrate/d093f1ae81f6f0bec924618783e91ad7.jpeg)
六、总结
![9de2d8194bc7f87e25a24b23eb4405ca.png](https://i-blog.csdnimg.cn/blog_migrate/d2011b4c3431e58dfd3fc32041ecc949.jpeg)
七、练习
Chestnut-J:SQL简单查询—练习(二)zhuanlan.zhihu.com![e85fe64fdc0e64b1c3c383d675819bf2.png](https://i-blog.csdnimg.cn/blog_migrate/3bca3880195444cd49cda37060d0eea4.jpeg)