大连理工大学软件学院数据库复习——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,即在[AB]区间

字符串模式匹配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 in10,20

in后面是一个集合,此时查找的是deptno为集合中的元素的行数

 

聚集函数:以值得一个集合(集或多重集)为输入、返回单个值的函数。例如avgminmaxsumcount

where的输出力度小于group bygroup 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加上重复

 

连接(joinSQL为把常规连接和外连接区分开,因此常把常规连接称作内连接(包括相等连接和自然连接)。(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子句,则仅对满足的行进行更新。

 

 

阅读全文
0 0
原创粉丝点击