循序渐进学Oracle之简单查询

简介:

   SQL(Structued Query Language,结构查询语言)是一个功能强大的数据库语言。SQL通常用于与数据库通讯。ANSI(美国国家标准学会)声称,SQL是关系数据库管理系统的标准语言。

Oracle数据库之所以发展的很好,主要也是因为Oracle是全世界最早采用SQL语句的数据库产品。

DML(Data Manipulation Language,数据操作语言)—-用于检索或者修改数据

DDL(Data Definition Language,数据定义语言)—-用于定义数据的结构,如:创建、修改或者删除数据库对象;

DCL(Data Control Language,数据控制语言)—-用于定义数据库用户的权限

简单查询指的是一张表中的所有的数据,简单查询的语法如下:

1
SELECT  [DISTINCT] *| 字段 [别名] [字段 [别名]]FROM  表名称 [别名]

范例1 查询dept表的全部记录    

1
SELECT * FROM dept ;

SQL> SELECT * FROM dept ;

DEPTNO DNAME LOC

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

10 ACCOUNTING NEW YORK

20 RESEARCH DALLAS

30 SALES CHICAGO

40 OPERATIONS BOSTON

SQL>

范例2查询出第个雇员的编号、姓名、基本工资    

1
SELECT empno,ename,sal FROM  emp ;

SQL> SELECT empno,ename,sal FROM emp ;

EMPNO ENAME SAL

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

7369 SMITH 800

7499 ALLEN 1600

7521 WARD 1250

7566 JONES 2975

7654 MARTIN 1250

7698 BLAKE 2850

7782 CLARK 2450

7788 SCOTT 3000

7839 KING 5000

7844 TURNER 1500

7876 ADAMS 1100

7900 JAMES 950

7902 FORD 3000

7934 MILLER 1300

已选择14行。

SQL>

范例3查询出每个雇员的编号、姓名、职位    

1
SELECT empno,ename,job FROM emp ;

SQL> SELECT empno,ename,job FROM emp ;

EMPNO ENAME JOB

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

7369 SMITH CLERK

7499 ALLEN SALESMAN

7521 WARD SALESMAN

7566 JONES MANAGER

7654 MARTIN SALESMAN

7698 BLAKE MANAGER

7782 CLARK MANAGER

7788 SCOTT ANALYST

7839 KING PRESIDENT

7844 TURNER SALESMAN

7876 ADAMS CLERK

7900 JAMES CLERK

7902 FORD ANALYST

7934 MILLER CLERK

已选择14行。

SQL>

范例4查询出每个雇员的职位    

1
SELECT job FROM emp ;

SQL> SELECT job FROM emp ;

JOB

---------

CLERK

SALESMAN

SALESMAN

MANAGER

SALESMAN

MANAGER

MANAGER

ANALYST

PRESIDENT

SALESMAN

CLERK

CLERK

ANALYST

CLERK

已选择14行。

SQL>

由上可知,查询出的job内容出现了重复的数据,而之所以数据会有重复,主要的原因是现在没有消除掉重复记录,可以使用DISTINCT消除掉所有的重复内容:

范例5查询出每个职位的不重复的记录    

1
SELECT DISTINCT job FROM emp ;

SQL> SELECT DISTINCT job FROM emp ;

JOB

---------

ANALYST

CLERK

MANAGER

PRESIDENT

SALESMAN

SQL>

但是,对于重复数据,指的是一行中的每个列的记录重复,才叫重复数据。

范例6查询出每个雇员的姓名、职位    

1
SELECT ename,job FROM emp ;

SQL> SELECT ename,job FROM emp ;

ENAME JOB

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

SMITH CLERK

ALLEN SALESMAN

WARD SALESMAN

JONES MANAGER

MARTIN SALESMAN

BLAKE MANAGER

CLARK MANAGER

SCOTT ANALYST

KING PRESIDENT

TURNER SALESMAN

ADAMS CLERK

JAMES CLERK

FORD ANALYST

MILLER CLERK

已选择14行。

SQL>

在进行简单查询的操作之中,也可以使用各个数学的四则运算符

范例7要求显示每个雇员的姓名、职位、基本年薪(incom)    

1
SELECT ename,job,(sal* 12 as  income FROM emp ;

SQL> SELECT ename,job,(sal*12) as income FROM emp ;

ENAME JOB INCOME

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

SMITH CLERK 9600

ALLEN SALESMAN 19200

WARD SALESMAN 15000

JONES MANAGER 35700

MARTIN SALESMAN 15000

BLAKE MANAGER 34200

CLARK MANAGER 29400

SCOTT ANALYST 36000

KING PRESIDENT 60000

TURNER SALESMAN 18000

ADAMS CLERK 13200

JAMES CLERK 11400

FORD ANALYST 36000

MILLER CLERK 15600

已选择14行。

SQL> SELECT ename,job,(sal*12)income FROM emp ; //as可省略

重点:但是对于别名,建议不要使用中文,只要是程序的开发,都要回避中文,这不是中国的“易语言”。

范例8公司福利好,每个月都有200元的饭食补贴及100元车费补助,这个时候的年薪    

1
SELECT ename,job, 12 *(sal+ 200 + 100 ) income FROM emp ;

SQL> SELECT ename,job,12*(sal+200+100) income FROM emp ;

ENAME JOB INCOME

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

SMITH CLERK 13200

ALLEN SALESMAN 22800

WARD SALESMAN 18600

JONES MANAGER 39300

MARTIN SALESMAN 18600

BLAKE MANAGER 37800

CLARK MANAGER 33000

SCOTT ANALYST 39600

KING PRESIDENT 63600

TURNER SALESMAN 21600

ADAMS CLERK 16800

JAMES CLERK 15000

FORD ANALYST 39600

MILLER CLERK 19200

已选择14行。

SQL>

范例9公司每年的年底都会多发一个月的基本工资    

1
SELECT ename,job, 12 *(sal+ 200 + 100 )+sal income FROM emp ;

SQL> SELECT ename,job,12*(sal+200+100)+sal income FROM emp ;

ENAME JOB INCOME

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

SMITH CLERK 14000

ALLEN SALESMAN 24400

WARD SALESMAN 19850

JONES MANAGER 42275

MARTIN SALESMAN 19850

BLAKE MANAGER 40650

CLARK MANAGER 35450

SCOTT ANALYST 42600

KING PRESIDENT 68600

TURNER SALESMAN 23100

ADAMS CLERK 17900

JAMES CLERK 15950

FORD ANALYST 42600

MILLER CLERK 20500

已选择14行。

SQL>

在简单查询之中也可以使用||”连接查询的字段

范例10观察“||”的使用    

clip_image002clip_image004clip_image006

由于“,”(逗号)属于原样输出的字符串,所以必须使用“”(单引号)括起来,即:在SQL语句之中,“’”(单引号)表示的是字符串

范例11要求现在的数据按照如下的格式显示:

“雇员编号是:7369 雇员姓名是:SMITH 基本工资是:800职位是:CLERK ”

现在相当于查找:empno ename sal job字段,且使用||来连接,  

1
SELECT  '雇员编号是:' ||empno|| '的雇员姓名是:' ||ename|| ',基本工资是:' ||sal|| ',职位是:' ||job FROM emp ;

clip_image008

1
SELECT  '雇员编号是:' ||empno|| '的雇员姓名是:' ||ename|| ',基本工资是:' ||sal|| ',职位是:' ||job|| '|'  FROM emp ;

clip_image010

1
SELECT  '雇员编号是:' ||empno|| '的雇员姓名是:' ||ename|| ',基本工资是:' ||sal|| ',职位是:' ||job|| '|' 雇员信息 FROM  emp ;

clip_image012

重点:

     一定要记住,别名上的内容不要使用“”(单引号)括起来,而只有在SELECT子句之中出现的内容才使用“”(单引号)。

什么叫子句?一般习惯而言,SELECT后面的叫SELECT 子句,FROM后面的叫FROM子句。

范例12

用户(sys)连接到Oracle数据库,去查询用户scott下的一张表emp(雇员表)的方法:  

1
SELECT  '雇员部门编号是:' ||empno|| '的雇员姓名是:' ||ename|| ',基本工资' ||sal|| ',领导编号' ||mgr|| ',雇员职位是:' ||job|| ',奖金是:' ||comm || '|'  as  雇员信息 FROM scott.emp ;

clip_image014



本文转自 beyondhedefang 51CTO博客,原文链接:http://blog.51cto.com/beyondhdf/1282295 ,如需转载请自行联系原作者

相关文章
|
2月前
|
SQL Oracle 关系型数据库
Oracle查询优化-查询只包含数字或字母的数据
【2月更文挑战第4天】【2月更文挑战第10篇】查询只包含数字或字母的数据
86 1
|
5月前
|
存储 Oracle 关系型数据库
Oracle 代码异常查询(五)
Oracle 代码异常查询
134 0
|
3月前
|
SQL Oracle 关系型数据库
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
66 0
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
|
1月前
|
SQL Oracle 关系型数据库
Oracle系列之八:SQL查询
Oracle系列之八:SQL查询
|
5月前
|
SQL Oracle 关系型数据库
Oracle 代码异常查询(九)
Oracle 代码异常查询
139 0
|
5月前
|
SQL 存储 Oracle
Oracle 代码异常查询(三)
Oracle 代码异常查询
130 0
|
2月前
|
Oracle 关系型数据库
Oracle 递归查询
Oracle 递归查询
10 0
|
3月前
|
SQL Oracle 关系型数据库
oracle查询数据库参数sql语句
oracle查询数据库参数sql语句
|
3月前
|
SQL Oracle 关系型数据库
oracle查询数据库状态sql语句
oracle查询数据库状态sql语句
|
3月前
|
SQL Oracle 关系型数据库
Linux环境下oracle切换用户并查询数据库命令
Linux环境下oracle切换用户并查询数据库命令