SQL语句基础知识

1、关于SQL语句中exists与not exists的问题

course表如下:
课程代号 课程名称
K01 奥运会主题曲
K02 喜爱的专辑
K03 VB技术大全
K04 经典歌曲
K05 个人单曲
K06 数据结构
K07 最受欢迎的歌曲
grade表如下:
学号 课程代号
B003 k03
B005 K02
B003 K05
B004 K04
B002 K02
B001 K01
B001 K06
现用SQL语句(1)查询:
select * from course where not exists(select * from grade where grade.课程代号=course.课程代号)
得到结果为:
K07 最受欢迎的歌曲

EXISTS或者NOT EXISTS是把主查询的字段传到后边的查询中作为条件,返回值是TRUE或者FALSE。EXISTS TRUE,那么就是查询条件成立,结果会显示出来。
NOT EXISTS TRUE,则为FALSE,查询连接条件不成立。
select * from course where not exists(select * from grade where grade.课程代号=course.课程代号)
这个语句,是查询course表中课程代号在grade中没有出现的数据。
看看grade表,课程编号有K01到K06,而COURSE表,有K01到K07,那么K07在GRADE表是不存在的,那么,是符合条件的。
同样select * from course where exists(select * from grade where grade.课程代号=course.课程代号)
则是查询COURSE的记录条件为编号在GRADE中存在。那么很明显,结果是K01到K06的数据。
另外,EXISTS和NOT EXISTS的作用可以用IN或NOT IN实现,但是,效率要高。

2、关于SQL语句中select 1 from table

  select 1 from 中的1是一常量(可以为任意数值),查到的所有行的值都是它,每行的列值是写在select后的数,这条sql语句中是1

3、关于SQL语句中as的作用

as的作用是取别名,如:

SELECT * FROM Employee AS emp 这句意思是查找所有Employee 表里面的数据,并把Employee表格命名为 emp。 当你命名一个表之后,你可以在下面用 emp 代替 Employee.

4、关于SQL语句中nvl函数

   select  sum(nvl(APS.PayPrincipalAmt,0) from ACCT_PAYMENT_SCHEDULE APS

   nvl(APS.PayPrincipalAmt,0)这个函数表示当APS.PayPrincipalAmt为空时默认值显示为0

5、关于SQL语句中distinct的用法

在表中,可能会包含重复值,关键词 distinct用于返回唯一不同的值,distinct必须放在开头

a表如下:
id     name
1     a
2     b
3     c
4     d
5     a
6     e
7     c
b表如下:
xing          ming
sta           man
stam         an

 1)作用于单列

select distinct name from a;

查出的结果是

a
b
c
d
e

2)作用于双列

select distinct xing, ming from b;

sta           man
stam         an

6、关于SQL语句中concat的用法

concat() 的语法:

concat(字串1, 字串2, 字串3, ...): 将字串1、字串2、字串3,等字串连在一起

Oracle的concat()只允许两个参数,在Oracle中,我们可以用'||'来一次串连多个字串

 b表如下:
   xing          ming
    sta           man
   east          _esf

select concat (xing,ming) from b where xing='east';

结果:

east_esf

Oracle数据库中:

select xing || '' || ming from b where xing='east';

结果:

east_esf

 

 




原文地址:https://www.cnblogs.com/xijin-wu/p/5592068.html