当前位置:Gxlcms > 数据库问题 > Oracle 学习之SQL(一) 使用SELECT检索数据

Oracle 学习之SQL(一) 使用SELECT检索数据

时间:2021-07-01 10:21:17 帮助过:28人阅读

SELECT能干什么?

技术分享

Projection:查询表中指定列。

Selection:查询表中指定行。

Join:表与表之间做连接,要查看的数据放在多张表中,并且表与表之间的数据有关系。


SELECT 语句的基本语法:

技术分享

SELECT 关键字后指定需要显示的列。

FROM 关键字后面指定包含这些列的表。

技术分享

为了演示SELECT命令,我们需要使用sqlplus登录到数据库。

切换到Oracle用户,用如下命令解锁scott用户并将密码设置成tiger

[root@11gdg1 ~]# su - oracle 
11gdg1-> sqlplus / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Tue Jul 14 09:59:36 2015

Copyright (c) 1982, 2011, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> alter user scott account unlock identified by tiger;

User altered.

以下所有演示都是使用scott用户,登录scott用户。

SQL> conn scott/tiger
Connected.


示例一、选择所有列

SQL> select * from dept;

    DEPTNO DNAME				      LOC
---------- ------------------------------------------ ---------------------------------------
	10 ACCOUNTING				      NEW YORK
	20 RESEARCH				      DALLAS
	30 SALES				      CHICAGO
	40 OPERATIONS				      BOSTON


示例二、选择指定列

SQL> select deptno,dname from dept;

    DEPTNO DNAME
---------- ------------------------------------------
	10 ACCOUNTING
	20 RESEARCH
	30 SALES
	40 OPERATIONS

列与列之间用逗号隔开,结果显示的顺序与SELECT后字段的顺序一致。


SQL语句编写规则

  • 大小写不敏感。

  • 语句可以占用一行或者多行。

  • 关键字不能被省略,或者拆分成多行。

  • 通常情况子句独占一行。

  • 使用缩进增加语句的可读性。

  • 在sqlplus或者其他工具中,每个语句结束需要加上一个分号。告诉客户端,你的语句结束了。


SELECT 可以在整形或者日期类型的字段上做算术运算

技术分享

示例三、显示员工的姓名、工资及工资+300

SQL> select ename,sal,sal+300 from emp;

运算符的优先级

跟数学中的概念一样,乘除优先于加减,可以使用括号改变优先级

示例四、

SQL> select ename,sal,sal*12+300 from emp;

ENAME				      SAL SAL*12+300
------------------------------ ---------- ----------
SMITH				      800	9900
ALLEN				     1600      19500
WARD				     1250      15300
JONES				     2975      36000
SQL> select ename,sal,sal*(12+300) from emp;

ENAME				      SAL SAL*(12+300)
------------------------------ ---------- ------------
SMITH				      800	249600
ALLEN				     1600	499200
WARD				     1250	390000
JONES				     2975	928200
MARTIN				     1250	390000

NULL值

SQL> select ename,sal,comm from emp;

ENAME				      SAL	COMM
------------------------------ ---------- ----------
SMITH				      800
ALLEN				     1600	 300
WARD				     1250	 500
JONES				     2975
MARTIN				     1250	1400
BLAKE				     2850
CLARK				     2450
SCOTT				     3000
KING				     5000
TURNER				     1500	   0
ADAMS				     1100
JAMES				      950
FORD				     3000
MILLER				     1300

我们看到COMM列下的数据有些是空着的。这个是一个特殊的值,我们称之为NULL。

null可以理解成一个不确定的、不可得的、未知的数。这个数不等于任何数,包含null自身。

null并不是0或者空格。

示例五、null作用于任何算术运算符后,其结果都是null

SQL> select ename,sal,sal+comm,sal-comm,sal*comm from emp;

ENAME				      SAL   SAL+COMM   SAL-COMM   SAL*COMM
------------------------------ ---------- ---------- ---------- ----------
SMITH				      800
ALLEN				     1600	1900	   1300     480000
WARD				     1250	1750	    750     625000
JONES				     2975
MARTIN				     1250	2650	   -150    1750000


列别名

SQL> select ename xingming,sal as gongzi,sal*12 "Annual salary" from emp;

XINGMING			   GONGZI Annual salary
------------------------------ ---------- -------------
SMITH				      800	   9600
ALLEN				     1600	  19200
WARD				     1250	  15000

列连接

使用||将两个字符串连接起来。

SQL> select ename||job  from emp;

ENAME||JOB
---------------------------------------------------------
SMITHCLERK
ALLENSALESMAN

文字字符串,使用‘‘括起来

SQL> select ename||‘ is a ‘||job as "Employee Detail" from emp;

Employee Detail
---------------------------------------------------------------------------
SMITH is a CLERK
ALLEN is a SALESMAN
WARD is a SALESMAN



本文出自 “叮咚” 博客,请务必保留此出处http://lqding.blog.51cto.com/9123978/1686704

Oracle 学习之SQL(一) 使用SELECT检索数据

标签:select sql

人气教程排行