大连理工大学软件学院数据库复习——SQL语句(《数据库系统概念第6版》)
来源:互联网 发布:局部搜索算法历史 编辑:程序博客网 时间:2024/05/16 14:47
相关子查询和非相关子查询
1.相关子查询:在主查询中,每查询一条记录,需要重新做一次子查询
2.非相关子查询:在主查询中,子查询只需要执行一次,子查询结果不再变化,供主查询使用
CSDN博客:http://blog.csdn.net/mascf/article/details/50288199
对于SQL语句任何输入输出都是一个关系(表),也就是说任何一个SQL语句的输出都可以作为灵另一个SQL语句的输入
查询的关键词的运算顺序:from > where > group by> having > select > order by
NULL表示不存在的值,因此一个值加上NULL还会是NULL,但是有些实际的情况希望能够把NULL当做0处理,因此会使用isnull函数,查询列名为NULL直接置为0
某一项不为空的写法:is not null
表示区间是可以写为between A and B,即在[A,B]区间
字符串模式匹配like 'J%',查询以J开头的结果
查询第几个字母是什么的,得使用下划线,一个为一个字母
当想要查询有下划线或者百分号的行时,需要使用转义字符,用escape指定哪个(不可以是下划线和百分号)为转义字符
例:select empno,ename,sal,comm,sal+100,sal+isnull(comm,0)astotalincome
from emp
where ename like '_L%' escape 'M';
where是一个类似筛选的
where deptno in(10,20)
in后面是一个集合,此时查找的是deptno为集合中的元素的行数
聚集函数:以值得一个集合(集或多重集)为输入、返回单个值的函数。例如avg,min,max,sum,count
where的输出力度小于group by,group by是对where的同类行的分组
having是在分组之后再挑选指定的行,如果在select对该列重命名,having里用该列名会提示列名无效,因为运算的顺序having>select
select中如果想查询什么,此东西必须原封不动的写在group by中
order by按照某种顺序进行排列,默认是升序排列,加上DESC是降序排列
distinct去掉重复行,比如查找有员工的部门编号可以用distinct去除重复的部门的编号
集合运算:并(union),交(intersect),差(except)
并(union):自动去处重复,可使用union all加上重复
交(intersect):自动去处重复,可使用intersect all加上重复
差(except):自动去处重复,可使用except all加上重复
连接(join):SQL为把常规连接和外连接区分开,因此常把常规连接称作内连接(包括相等连接和自然连接)。(natural join = natural inner join)
自然连接(natural join):运算作用于两个关系,并产生一个关系作为结果。其将第一个关系的每个元组与第二个关系的所有元组都进行连接,自然连接只考虑那些在两个关系模式中都出现的属性上
取值相同的元组对。
外连接:
左外连接:左向外联接的结果集包括 LEFT OUTER子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列
表列均为空值;
右外连接:右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值;
全外连接:完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。
子查询:
with语句用于在查询执行过程中临时生成一个表,后面可以直接使用。若想形成多个,不能使用多个with,可以直接用逗号加上另外的名字即可。
用with定义的临时视图必须要在后面用到,如果未使用有些数据库会报错。
case某一列,对其分类处理用when(类似于switch),最后加上end结束。
用case表达式找不到要返回的数值时,需要返回NULL。
selectempno,ename,deptno,case
when deptno=10 then'好'
when deptno=20 then'一般'
when deptno=30 then'穷'
else'穷'
end as level
fromemp;
数据库修改语句:
1.删除(delete):删除操作只能删除整个元组而不能只删除,而不能只删除某些属性上的值。语句如下:delete from r where P;
2.插入(insert):a.向表中插入一个行(可指定列),格式为insert into r(列名,列名…)values('…','…',…)
b.insert语句允许吧一个或多个表中的多个行复制到另一个表,格式为insert into r(列名,列名…)select…其中select子句可以是任何有效的语句,插入给定表中的行就是来自于子查
询所生成的查询结果表。
3.更新(update):update语句允许改变给定表中已存在的行的内容,格式为update r set columnName1=dataValue1…where … r是基表或可更新视图的名字。set子句指定需要更新的一个或多个列的名字,同时set可更新多个列。where子句是可选择的,如果省略则对给定列的所有行进行更新。如果给出了where子句,则仅对满足的行进行更新。
- 大连理工大学软件学院数据库复习——SQL语句(《数据库系统概念第6版》)
- 大连理工大学软件学院数据库复习——前几章一些概念(课本《数据库系统概念第6版》)
- 《数据库系统概念(第6版)》读书笔记——第5章:中级SQL
- 数据库系统概念(机械工业出版社,第六版)复习——第三章:SQL
- 《数据库系统概念(第六版)》读书笔记——第6章:高级SQL
- 数据库系统概念(机械工业出版社,第六版)复习——第八章:关系数据库设计
- 数据库系统概念 sql 查询语句 读书笔记
- 数据库系统概念(机械工业出版社,第六版)复习——第一章:引言
- 数据库系统概念(机械工业出版社,第六版)复习——第二章:关系模型简介
- 数据库系统概念(机械工业出版社,第六版)复习——第十二章:事务管理
- 数据库系统概念(机械工业出版社,第七版)复习——第六章:数据库设计和E-R模型
- 数据库系统概念(中文版)(第6版)pdf
- 数据库系统概念(机械工业出版社,第六版)复习——第十章:数据存储和数据存取
- 数据库系统概念(机械工业出版社,第六版)复习——第十一章:查询处理和查询优化
- 数据库复习——SQL
- 复习Oracle数据库知识(一)——基本概念和sql简单语句
- 【数据库系统概念】第4章 中级SQL 知识总结
- 【数据库系统概念】第5章 高级SQL 知识总结
- 蓝桥杯 算法训练 Torry的困惑(基本型)
- c++的cout输出控制符
- 可变参数列表
- idea的toString()之json-Templates
- vi /vim自动缩进或者显示行号
- 大连理工大学软件学院数据库复习——SQL语句(《数据库系统概念第6版》)
- Apriori算法进行关联分析(1)
- spring cloud 前人踩过的坑
- java.util.regex.PatternSyntaxException: Unexpected internal error near index 1 \
- 开启Mysql慢查询日志
- 上机练习题——异常处理1
- 函数的重载,
- 时间和日期
- 鼠标右键菜单