中国唯一一家专业只做ARACLE认证和BDA实训的甲骨文金牌合作企业

网络授课

技术沙龙

OCP培训课程:SQL之使用SELECT语句检索数据

OCP培训课程:SQL之使用SELECT语句检索数据 

select语句有三个功能:投影、选择和多表联合,投影指选择表的某些列,选择指选择表的某些行,多表联合指从多张表获取数据。这一章主要讲投影的功能。

1、基本SELECT语句语法

包含select子句和from子句:

select子句列出要选择的列,其中*表示选择表中的所有列,distinct关键字表示去掉重复的列,多列之间使用逗号隔开,也可以使用表达式,可以为列或者表达式指定一个别名

from子句指明这些列来自于哪张表

例子:使用*选择所有表中列

SQL> select * from departments;

例子:使用列名字选择指定的列

SQL> select department_id,location_id from departments;

2、SQL语句的一些书写规范

SQL语句不区分大小写

SQL语句可以写在一行,也可以跨行

关键字不能缩写及跨行

子句一般单独一行

可以使用缩进提高可读性

在SQL*PLUS中使用分号作为语句的结束

3、列的默认显示

在SQL Developer中:

列的对齐方式:居中

列头显示方式:大写

在SQL*PLUS和PL/SQL Developer中:

字符和日期列左对齐

数字列右对齐

列头显示方式:大写

4、算术表达式

使用算术运算符创建表达式。

例子:使用+

SQL> SELECT last_name,salary,salary+300 from employees;

例子:使用*和+

SQL> SELECT last_name,salary,12*salary+100 from employees;

例子:使用括号改变运算优先级

SQL> SELECT last_name,salary,12*(salary+100) from employees;

5、null

null表示一个未知的值,既不是零也不是空格。

例子:查看人员表中的提成,其中有的人的提成为null

SQL> SELECT last_name,job_id,salary,commission_pct from employees;

null具有传染性,也就是说null和任何值进行运算都为null。

例子:使用包含null的提成字段进行算术运算,结果也是null

SQL> select last_name,12*salary*commission_pct from employees;

6、定义列别名

前面的SQL语句一个列的名字为12*SALARY*COMMISSION_PCT,很长,我们可以使用一个有意义的简短别名来替代他,更易读。

可以直接在列名字后面加上别名,也可以使用as关键字。

例子:使用as关键字加列别名以及直接加上列别名

SQL> select last_name as name,commission_pct comm from employees;

NAME COMM

------------------------- ----------

OConnell

别名和列名一样,默认都是以大写显示,如果别名包含空格,特殊字符或者不想使用大写显示,就需要加上双引号。

例子:加上双引号的别名

SQL> select last_name "Name",salary*12 "Annual Salary" from employees;

Name Annual Salary

------------------------- -------------

OConnell 31200

7、连接操作符||

Oracle中的连接操作符使用两个竖杠表示,可以将列或者字符串与其他列连接起来,可以把多个字段连接成一个字段来显示。

例子:2个字段连接成1个字段显示

SQL> select last_name||job_id as "Employees" from employees;

Employees

-----------------------------------

AbelSA_REP

AndeSA_REP

AtkinsonST_CLERK

8、字变量

字变量是select语句中个一个字符,一个数字或者一个日期

日期和字符字变量的值必须使用单引号括起来

输出的每一行都会显示一次字变量字符

例子:使用单引号将字符字变量括起来,每一行都会显示一次这个字变量

SQL> select last_name||' is a '||job_id as "Employee Details" from employees;

Employee Details

-----------------------------------------

Abel is a SA_REP

Ande is a SA_REP

Atkinson is a ST_CLERK

例子:把人员表某些数据转换成insert语句,拷贝到其他数据库去执行,满足临时少量数据迁移的需求

SQL> select 'insert into employee(employee_id,last_name) values(' || employee_id || ',''' || last_name || ''');' as ttt from employees;

TTT

--------------------------------------------------------------------------------

insert into employee(employee_id,last_name) values(174,'Abel');

insert into employee(employee_id,last_name) values(166,'Ande');

这里如果要显示字变量里面的单引号,那就使用两个单引号,也可以使用q操作符,同时还需要加上分割符号,可以是方框,问号,小括号,但是必须要配对。

例子:使用q操作符显示字变量里面的单引号

SQL> select department_name||q'[,it's assigned Manager Id: ]'||manager_id AS "Department and Manager" from departments;

Department and Manager

--------------------------------------------------------------------------------

Administration,it's assigned Manager Id: 200

Marketing,it's assigned Manager Id: 201

这种方式平常用得少一些

9、使用distinct去掉重复的结果

使用select语句查询的结果默认显示所有的行,包括重复的行,可以使用distinct关键字去重。

例子:对比不使用与使用distinct的结果

SQL> select department_id from employees;

DEPARTMENT_ID

-------------

50

不使用distinct,结果有107行

SQL> select distinct department_id from employees;

DEPARTMENT_ID

-------------

100

使用distinct,结果只有12行

例子:distinct后面跟多个字段,表示多个字段联合起来唯一

SQL> select distinct department_id,manager_id from employees;

DEPARTMENT_ID MANAGER_ID

------------- ----------

40 101

10、SQL开发环境

我们平常用得更多的SQL开发环境是PL/SQL Developer,这里介绍了Oracle自己的SQL Developer,我们简单看一下。

首先启动SQL Developer。

[root@Oracletest1 ~]# su - Oracle

[Oracle@Oracletest1 ~]$ export DISPLAY=192.168.230.1:0.0

[Oracle@Oracletest1 ~]$ cd /u01/app/oracle/product/11.2.0/dbhome_1/sqldeveloper/

[Oracle@Oracletest1 sqldeveloper]$ ./sqldeveloper.sh

新建连接。

输入连接名称、用户名、密码、服务器地址、端口及SID,点击“Test”,测试成功,点击“Connect”,进行连接。

就可以看到相关对象了。

这个SQL Developer功能和PL/SQL Developer差不多,平时用得也比较少,就不多讲了。

CUUG 优技培训

中国Oracle培训领航专家

CUUG -CHINA UNIX USER GROUP,是国际UNIX组织UNIFORUM的中国代表,是国内悠久的专业UNIX培训机构,被誉为中国UNIX 的摇篮。

金牌讲师

行业资深实战专家 让学习就像在就业
展开

实操环境

让每一个DBA课程学员有真正的实操练习

让每一个DBA课程学员有真正的实操练习

让每一个DBA课程学员有真正的实操练习

让每一个DBA课程学员有真正的实操练习

院校合作

学校新闻

行业新闻

在线预约 抢先报名 获取课程排期

请输入您的手机号

申请试听
版权所有:北京神脑资讯科技有限公司
地址:北京市海淀区紫竹花园4号楼D座703
全国免费咨询电话:400-0909-964
电话:010-59426307 ,邮政编码:100089
E-mail:cuug_bj@cuug.com
拨打电话
在线咨询
首页