视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
oracle之Select语句
2025-09-24 06:33:44 责编:小OO
文档
Oracle学习----select语句

oracle的Select语句 

select 查询的一般格式是

select {[distinct|all] columns | *}    //1 选择列

from {tables | views | other select}   //2 数据来源

where conditions        //3 选择条件

group by columns        //4 分组

having conditions        //5 选择

order by columns        //6 排序

一、选择列

1. select后面出现的内容可以是from后面的数据来源中的列,也可以是*,也可以是常量或者T-SQL函数。

2. 如果列名很长,或者多个表的列名有冲突,可以使用as来定义别名。

二、数据来源

1. 数据来源可以是表,视图,还可以是其他的select语句(即,行集)。

2. from子句中可以包含连接说明,即inner join, outer join这样的内容。这个内容参见下面的内容。

3. 可以在from子句中为表,视图,或者其他select语句的结果指定别名,但是不要用as。

三、where子句

1. 多个条件之间可以用and 或者or连接。

2. null值查询要使用is null,或者is not null,而不是=null或者<>null

3. like是进行模式匹配的一种方式,列的数据类型可以是任何字符或者日期数据。它的否定形式是not like。%和_是通配符,一个表示0或多个任意字符,一个表示一个任意字符。但是这两个字符如果不出现在like后面的模式中,就是两个普通字符。

4. text列的where条件只能是like,is null,patindex。

5. 如果要在like中匹配普通字符%和_,可以使用escape定义一个转义字符,这个转义字符可以随意指定。然后将这个转义字符放在一个通配符或者单引号之前,就表示这个通配符或者单引号是一个普通的字符。

6. in ,not in, between and, not between and.“between a and b”将会包括a和b在内。in可以转换为一个连接,但是not in不能。

7. where exists R.当且仅当R非空时,条件exists R为真。 其否定形式是 where not exists R.

8. where s <| >| = | <>| >=|<= all/any R.否定形式是在s前对整个表达式加not.

四、连接查询

两张表的连接可以用from子句的ansi连接语法或者where子句中的sql连接语法实现。ansi连接语法格式为From table1 join_type table2 on(conditions) join_type table3 on(conditions)。

连接有等值连接,笛卡尔积(交叉连接),自然连接,theta连接,外部链接五种。

1 等值连接

select students.* , stu_course.* 

from students inner join stu_course

on(students.id = stu_course.studentid)--31条记录,stu_course的记录数目

2 交叉连接(笛卡尔积)

select students.* , stu_course.*

from students cross join stu_course --186条记录,是6*31的结果。就是两个表的行一一进行组合。

3 自然连接(等值连接的简化)

select students.*, stu_course.courseid, stu_course.credit

from students inner join stu_course

on(students.id = stu_course.studentid)--等值连接中重复列只保留一列,但不仅限于去掉重复列

4 theta连接

select students.*, stu_course.courseid, stu_course.credit

from students inner join stu_course

on(students.id = stu_course.studentid)

and students.sex = 'F'

5 多表连接,同时也是自然连接

select students.name as stuname, course.name as coursename , stu_course.credit

from students 

inner inner join stu_course on (students.id = stu_course.studentid)

inner join course on(stu_course.courseid = course.id)--仍然只有31行。

6 外连接

select students.*, stu_course.courseid, stu_course.credit

from students left outer join stu_course

on(students.id = stu_course.studentid)

left outer是除了符合条件的行,还要从左侧表里选出不匹配的行。

7 连接和子查询的比较

如果需要频繁计算聚集数据并将其用再外查询中进行比较,一般用子查询。如果select中的列,来自多个不同的表,一般用连接。

五、group by和having

select语句中出现的列,都必须出现在group by子句中,除非那一列使用了聚集函数。

having子句是从分组后的结果中筛选行,having的搜索条件在进行分组操作之后应用,所以它必须在group by之后使用。它和where子句的另一个区别在于,它可以出现聚合函数。

where和having中都可以出现比较运算符,between,in,like,all,any。

六、order by

order by columns用来对结果集进行排序,按照列顺序,嵌套排序。默认是asc升序,desc是降序。下载本文

显示全文
专题