常用sql语法初级
博主在工作中,常常需要使用sql语句来进行查询,总结发现,灵活使用这几个要点,就可以应付大部分简单情况。
一.连接:根据两个或多个表中的列之间的关系,从这些表中查询数据。
- JOIN或INNER JOIN: 返回左表和右表中相互匹配的行
- LEFT JOIN: 返回左表和右表中相互匹配的行,及左表中不相匹配的行
- RIGHT JOIN: 返回左表和右表中相互匹配的行,及右表中不相匹配的行
- FULL JOIN或FULL OUTER JOIN: 返回左表和右表中相互匹配的行,及不相匹配的行
- 应用举例
- 在一些题目中没有明确的暗示情况下,使用哪一种连接方式都可以;
- 也有一些情况,只能使用特定的连接方式。
1.join/inner join
必须使用inner join的情况
--查询所有未讲课的教师的Tname和Depart.
select TNAME,DEPART
from TEACHER
where TNO not in(select TEACHER.TNO from COURSE inner join
TEACHER on COURSE.TNO=TEACHER.TNO)
--或者使用 Except
select TNAME,DEPART from TEACHER
except
select TNAME,DEPART from COURSE join TEACHER on COURSE.TNO=TEACHER.TNO
上面的sql语句中的“select TEACHER.TNO from COURSE inner join TEACHER on COURSE.TNO=TEACHER.TNO”中,只能使用inner join,使用left join、right join、full join都是错误的。
2.left join和right join
使用了left join 的情况,调换一下表的位置,就可以用right join替换;反之亦然。
--查询所有学生的Sname、Cname和Degree列。
select SNAME,CNAME,DEGREE
from STUDENT left join SCORE on STUDENT.SNO=SCORE.SNO
left join COURSE on SCORE.CNO=COURSE.CNO
也可以写成
select SNAME,CNAME,DEGREE
from score right join STUDENT on STUDENT.SNO=SCORE.SNO
right join COURSE on SCORE.CNO=COURSE.CNO
3.使用full join的情况较少,暂时还没有用到。
二、嵌套
在sql语言中,一个select-from-where语句成为一个查询块。
将一个查询块嵌套在另一个查询块的where子句或having短语的条件中的查询成为嵌套查询。
SQL语言允许多层嵌套查询,但要注意的是,子查询的select语句中不能使用order 不要子句,order by子句只能对最终查询结果排序。
当掌握了sql语句的执行顺序后,就会对这个限制的原因有更深刻的理解。
举例
子查询在where子句中
--查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录。
select * from SCORE where DEGREE>(select DEGREE from SCORE where SNO='' and CNO='3-105')
三、子查询
上层的查询块称为外层查询或者父查询,下层查询块称为内层查询或者子查询。
子查询的位置可以很灵活,掌握这一点,感觉sql学习就有了很大的进展。
1.子查询可以放到where子句或having短语的条件中,这就是我们上面所介绍的嵌套查询
2.子查询可以出现在from子句中,这时子查询生成的临时派生表,称为主查询的查询对象
--查询所有选修了1号课程的学生姓名 (当然也可以使用嵌套查询)
select Sname from Student,(select * from SC where cno='') SC1 where Student.sno=SC1.sno
3.子查询可以嵌套在INSERT语句中用以生成要插入的批量数据
--对每个系,求学生的平均年龄,再把结果插入Dept_age(Sdept,Avg_age)中
insert into Dept_age(Sdept,Avg_age)
select Sdept.AVG(Sage)
from Student
group by Sdept
要点总结
1.连接:inner join、right join、left join 、full join
2.嵌套:将一个查询块嵌套在另一个查询块的where子句或having短语的条件中
3.子查询的位置可以很灵活
常用sql语法初级的更多相关文章
- oracle 常用SQL语法手册
Select 用途: 从指定表中取出指定的列的数据 语法: SELECT column_name(s) FROM table_name 解释: 从数据库中选取资料列,并允许从一或多个资料表中,选取一或 ...
- 常用SQL语法
1.替換A表中B字段中第二个字符 ,), 2.根据 Score 字段 排序 并分页 * from (select row_number() over(order by Score DESC) as r ...
- mysql常用sql语法
一.创建主键的三种方式 1. CREATE TABLE user( uid INT PRIMARY KEY, uname VARCHAR(10), address VARCHAR(20) ) 2. C ...
- SQL语法之初级增删改查
SQL语法之初级增删改查 1.增 1.1插入单行 INSERT INTO [表名](列名) VALUES(列值) 语法如下: INSERT INTO bsp_Nproductclass(guid,pi ...
- 【知识库】-数据库_MySQL常用SQL语句语法大全示例
简书作者:seay 文章出处: 关系数据库常用SQL语句语法大全 Learn [已经过测试校验] 一.创建数据库 二.创建表 三.删除表 四.清空表 五.修改表 六.SQL查询语句 七.SQL插入语句 ...
- HIVE常用SQL语句及语法
HIVE建内部表语句 create table dll102.sougou (id string,pwd string,name string,count int,seqno int,address ...
- 值得注意的ibatis动态sql语法格式
一.Ibatis常用动态sql语法,简单粗暴用一例子 <select id="iBatisSelectList" parameterClass="java.util ...
- oracle(sql)基础篇系列(一)——基础select语句、常用sql函数、组函数、分组函数
花点时间整理下sql基础,温故而知新.文章的demo来自oracle自带的dept,emp,salgrade三张表.解锁scott用户,使用scott用户登录就可以看到自带的表. #使用ora ...
- 常用SQL[ORACLE]
1.常用系统函数 2.常用sql语句 3.一些定义和关键字 4.需要注意点 1.常用系统函数 ↑ --decode decode(column,if_value,value,elseif_ ...
随机推荐
- 在线客服 分享 qq 一键加好友 一键入群
1.在线客服 <a href="tencent://message/?uin=qqnum&Site=&menu=yes">qq客服</a> ...
- 算法笔记--java的BigInteger类及BigDecimal类
引包:import java.math.*; BigInteger类: 可以使用构造方法:public BigInteger(String val),或者valueOf(int)函数,如: BigIn ...
- Codeforces 834D - The Bakery(dp+线段树)
834D - The Bakery 思路:dp[i][j]表示到第j个数为止分成i段的最大总和值. dp[i][j]=max{dp[i-1][x]+c(x+1,j)(i-1≤x≤j-1)},c(x+1 ...
- angular惰性加载拓展剖析
最近把一个比较旧的业余项目重新升级了下,将主文件进行了剥离,增加了些惰性加载的配置,将过程中一些零散的知识点做个总结,同时尽量深入原理实现层面. 项目环境: 前端框架:angular2.0.0-bet ...
- 如何配置Smarty模板
<?php //首先包含Smarty类文件 include_once('Smarty/Smarty.class.php'); //实例化Smarty类文件 $smarty=new Smarty( ...
- How to implement connection pool in spark streaming
在spark streaming的文档里,有这么一段: def sendPartition(iter): # ConnectionPool is a static, lazily initialize ...
- OAF中下载附件之后页面失效,报过时的数据异常,浏览器后退异常
我在使用了下载功能之后,再往页面添加行或进行保存,页面老是报浏览器后退的异常. 猜测是因为我的下载按钮使用的submitButton,它隐式的包含了一个submit动作,且我在代码中有一个Commit ...
- Animation鱼眼效果
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head> < ...
- 浅析postgresql数据库事务及行锁特征
开源数据库领域,postgresql以其优越的性能.功能及良好的稳定性排名首位可谓当之无愧,尤其是对高并发的支持可谓匠心独具.而优越的性能和稳定性,究其根本无非是良好的基础架构,本文将对其性能和稳定性 ...
- 利用CNN进行流量识别 本质上就是将流量视作一个图像
from:https://netsec2018.files.wordpress.com/2017/12/e6b7b1e5baa6e5ada6e4b9a0e59ca8e7bd91e7bb9ce5ae89 ...