北京优技教育科技有限公司

Oracle认证 OCP认证 OCM认证

当前位置: 优技教育 >> ocp教程 >

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

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

来源:优技教育    更新时间:2016/6/21 16:42:42    阅读次数:2320

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差不多,平时用得也比较少,就不多讲了。

OCA认证
OCP费用
OCP教程
OCP考试
OCM费用
OCM教程
OCM考试
ORACLE授权认证机构CUUG
CUUG与ORACLE合作15年,是ORACLE金牌合作伙伴,连续多年处于行业领先;
CUUG与工信部人才交流中心合作,是工信人才指定的PostgreSQL数据库培训合作伙伴;
CUUG与阿里云、腾讯云、人大金仓、奥星贝斯等众多数据库厂商合作,开设数据库认证与培训课程;
CUUG与企业合作提供人才输送、定制化培训、技术支持服务;

报名入口 点击进入

北京优技教育科技有限公司

联系电话:010-59426307

课程咨询:010-59426319

联系地址:海淀区紫竹院路88号