您当前的位置:首页 > 其他技术 > 系统技术

Oracle9i学习心得之一 基本SQL语句

本文出处:网游动力作者:本站发布时间:2008-12-22阅读次数:
1.SQL语句包括: 

1) 数据查询:select 
2) DML(data manipulation language):insert、update、delete、merge 
3) DDL(data definition language):create、alter、drop、rename、truncate 
4) 事务控制:commit、rollback、savepoint 
5) DCL(数据控制语言):grant、revoke 

2.基本SELECT语句 

SELECT * | {[DISTINCT] column [alias],...} 
FROM table; 

例:SELECT deptno,loc 
FROM dept; 

3.显示表的结构 

DESC[RIBE] tablename 

4.表说明 

1)雇员信息表(emp) 

名称 是否为空? 类型 
EMPNO NOT NULL NUMBER(4) 
ENAME VARCHAR2(10) 
JOB VARCHAR2(9) 
MGR NUMBER(4) 
HIREDATE DATE 
SAL NUMBER(7,2) 
COMM NUMBER(7,2) 
DEPTNO NUMBER(2) 

2)部门表(dept) 

名称 是否为空? 类型 
DEPTNO NOT NULL NUMBER(2) 
DNAME VARCHAR2(14) 
LOC VARCHAR2(13) 



3) 薪水等级表(salgrade) 
名称 是否为空? 类型 
GRADE NUMBER 
LOSAL NUMBER 
HISAL NUMBER 



5.SELECT语句练习 

例1: 
SELECT * FROM dept; 


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

... 

例2: 
SELECT deptno,loc 
FROM dept; 


结果: 
DEPTNO LOC 
10 NEW YORK 
20 DALLAS 
30 CHICAGO 
40 BOSTON 

... 



6.执行SQL语句的工具: 


1)SQL*Plus工具 
2)iSQL*Plus工具 
3)PL/SQL Developer工具 



7.算术表达式 


使用+,-,*,/可创建一个数据型或日期型数据的表达式 


例1: 

SELECT ename,sal,sal+300 
FROM emp; 
结果: 
ENAME SAL SAL+300 
SMITH 2000 2300 
ALLEN 1600 1900 
WARD 1250 1550 
JONES 2975 3275 
... 
例2: 
SELECT ename,sal,12*sal+100 
FROM emp; 
结果: 
ENAME SAL 12*SAL+100 
SMITH 2000 24100 
ALLEN 1600 19300 
WARD 1250 15100 
JONES 2975 35800 
... 
例3: 
SELECT ename,sal,12*(sal+100) 
FROM emp; 
结果: 
ENAME SAL 12*(SAL+100) 
SMITH 2000 25200 
ALLEN 1600 20400 
WARD 1250 16200 
JONES 2975 36900 
... 

8.空值NULL 


-不同于零或者空格 
-是在一种无效的、未赋值、未知的或不可用的值 


例: 
SELECT ename,job,sal,comm 
FROM emp; 
结果: 
ENAME JOB SAL COMM 
MARTIN SALESMAN 1250 1400 
BLAKE MANAGER 2850 
CLARK MANAGER 2450 
TURNER SALESMAN 1500 0 
ADAMS CLERK 1100 

... 

注:任何包含空值的算术表达式运算后的结果都为空值NULL 
例: 
SELECT ename,12*sal,12*sal+comm 
FROM emp 
WHERE ename='BLAKE'; 
结果: 
ENAME 12*SAL 12*SAL+COMM 
BLAKE 34200 

9.列的别名: 


1)紧跟列名或在列名和别名之间加入可选关键字AS 
2)如果别名包含空格或特殊关键字符或区分大小写则需要使用双引号 


例1: 
SELECT ename AS name,sal salary 
FROM emp; 
结果: 
NAME SALARY 
SMITH 2000 
... 

例2: 
SELECT ename "Name",sal*12 "Annual Salary" 
FROM emp; 
结果: 
Name Annual Salary 
SMITH 24000 
ALLEN 19200 




10.连接操作符 


1)用于列与列、列和字符之间的连接 
2)形式上是连个竖杠:|| 
3)用于创建字符表达式的结果列 

例: 
SELECT ename||job AS "Employees" 
FROM emp; 
结果: 
Employees 
SMITHCLERK 
ALLENSALESMAN 
WARDSALESMAN 
JONESMANAGER 
... 

4)原义字符串: 
-是包含在SELECT列表中的字符、数字或日期 
-日期和字符字面值必须
用单引号引起来 
-每个字符串都会在每个数据行输出中出现 



例: 
SELECT ename||' is a '||job AS "Employees" 
FROM emp; 
结果: 
Employees 
SMITH is a CLERK 
ALLEN is a SALESMAN 
WARD is a SALESMAN 
JONES is a MANAGER 
... 


11. 消除重复行 


在SELECT子句中使用关键字DISTINCT可消除重复行 

例: 

SELECT DISTINCT deptno 
FROM emp; 







练习题 


1.显示emp表结构 



DESC emp 



2.显示emp表中所有列的数据 



SELECT * FROM emp; 



3.显示emp表雇员编号、雇员名、薪水信息 



SEELCT empno,ename,sal 
FROM emp; 



4.显示emp表中不重复的工作类别 



SELECT DISTINCT job 
FROM emp; 

5.显示emp表中empno、sal*12、job,它们对应的别名为编号、年薪、工作类别 

SELECT empno "编号",sal*12 "年薪",job "工作类别" 
FROM emp; 



6.显示emp表的ename和sal列,要求显示的格式为:XXXX雇员的薪水为XXX。 



SELECT ename ||'雇员的薪水为 '||sal 
FROM emp;