您的位置:首页 > 其它

crcale 的入门简介和基础查询语句

2012-03-12 22:24 441 查看
今天学习orcale的开始,配置orac环境部分在百度文库可以找到,以下是今天学习了oracle数据库的基本操作语句。

Select 标识 选择那些列

From 标识从哪个表中选择

SELECT *|{[DISTINCT] column|expression [alias],...}

FROM table;

选择全部列:

Select *

From departments;

选择特定列

Select departement_id,location_id

From departements;

注意:

Sql语句大小写不敏感。

Sql语句卸载一行或多行。

各子句一般不要分行写。

使用缩进提高语句的可读性。

使用数学运算符:

Select last_name,salary,salary+300

From employees;

操作符优先级

乘除的优先级高于加减。

同一优先级运算符从左向右执行。

括号内的运算先执行。

定义空值:

空置是无效的,未指定的,未知的不可预知的值

空置不是空格或者();

列的别名:

重命名一个列。

便于计算。

紧跟列名,也可以在列名和别名之间加入官架子'as',别名使用双引号,一边在别名中包含空格或者特殊的字符并区分大小写。

Select last_name as name,commission_pct comm

From employee;

1、安装成功后进入DOS界面操作

在进行以下操作时,需启动oracle服务。

A、进入sql界面:开始--运行--cmd:输入sqlplus 回车

提示输入正确的用户名和密码

B、开始—>所有程序-àoracle的-à运行sql命令—>直接采用conn 用户名/密码 进入

用户名 默认的是 sys,system.

密码是你安装的密码

输入正确的用户名及密码即可进入界面。

2、密码修改

当忘记密码时,可以采用

sqlplus sys/aaa as sysdba;--以数据库管理员的身份登录. 如果在本机登录

密码可以随意输入。

修改密码:

//修改system用户的密码是system

alter user system identified by system;

alter user identified by 都是关键字。

3、切换用户操作

A、先退出 再登陆

exit;退出。

1、登录命令 sqlplus system/system 直接登录

2、sqlplus

--提示输入用户名

--提示输入密码

B、也可以不退出直接在sql>操作中采用 conn scott/tiger conn/用户名/密码切换用户

注意:登录的时候没有分号结束。

4、oracle 中的表是按照用户进行分类的。

sys 超级用户(权限最高)

system 数据库管理员(执行大部分管理操作)

但是本机用的win7系统中sys不能使用,必须使用system才能访问超级用户。

5、简单入门命令

select * from tabs;---查询当前用户下有哪些表(多查询出系统表);

select table_name from user_tables; ---查询当前用户下的所有表的名称。

desc 表名 ---查看表有哪些列(表的结构)

练习题:

01. 查询员工表所有数据, 并说明使用*的缺点

Select * from emp;

或者select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp;

02. 查询职位(JOB)为'PRESIDENT'的员工的工资

Select sal from emp where job='PRESIDENT';

03. 查询佣金(COMM)为0 或为NULL 的员工信息

select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where comm*1=0;

select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where comm is null;

04. 查询入职日期在1981-5-1 到1981-12-31 之间的所有员工信息

Select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where hiredate '1-5月-81' and‘31-12月-81’;

05. 查询所有名字长度为4 的员工的员工编号,姓名

Select empno,ename fro emp where ename like '____';

或者select empno,ename from emp where length(ename)=4;

06. 显示10 号部门的所有经理('MANAGER')和20 号部门的所有职员('CLERK')的详细信息

select * from emp where job='MANAGER' and deptno=10 or (job='CLERK' and deptno=20);

07. 显示姓名中没有'L'字的员工的详细信息或含有'SM'字的员工信息

select * from emp where ename not like '%L%' or ename like '%SM%';

08. 显示各个部门经理('MANAGER')的工资

select sal from emp where deptno in (10,20

09. 显示佣金(COMM)收入比工资(SAL)高的员工的详细信息

select * from emp where comm>sal;

sql语句内容:

SQL是structured Query Language(结构化查询语言)的缩写。可以使用sql语句建立或删除数据库的对象,插入,修改和更新数据库中的数据,并且可以对数据库执行各种日常管理的操作。它是所有关系数据库管理系统的标准语言.换句话说使用sql可以对所有的关系数据库进行操作。

SQL按照功能分类:

1、 数据库定义语句

DDL(Data Definition Language):用于创建、修改、删除数据库对象。

2、 数据库操作语句

DML(Data Manipulation Language)用于:查询,添加修改或删除存在数据库对象中的数据。

3、 数据库控制语句DCL

DCL(Data Control Language)用于控制访问数据库中特定对象的用户、grant revoke

Oracle系统中经过对Sql语言扩展被称为PL/SQL语言。

基本的sql语句

SELECT *|{[DISTINCT] column|expression [alias],...}

FROM table;

SQL> select * from emp;//查询所有的字段信息

SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp;//查询所有

以上两种查寻的现实效果相同

SQL> select empno from emp;//查询部分字段

SQL> select empno "员工编号" from emp;//采用别名查询

SQL> select empno as "员工编号" from emp;//采用别名查询 等效于上面的效果

SQL> select distinct(hiredate) from emp;//查询所有员工的入职日期并且去掉重复的日期

SQL> select sal+comm from emp;//注意:包含空值的数学表达式求出的结果为空值

SQL> select empno||ename from emp;//||连接符 把empno与ename作为一个字段显示

SQL> select empno||ename as "员工编号和员工姓名" from emp;//效果同上

SQL> select '员工的编号是'||empno from emp;//字符的链接

SQL> select '姓名为'||ename||'员工,所在的部门是:'||deptno as "新列" from emp;//字段的链接包号字符连接

SQL> select distinct(deptno) from emp;//查询去掉重复行的员工部门编号

条件查询

SELECT *|{[DISTINCT] column|expression [alias],...}

FROM table

[WHERE condition(s)];

Condition(s)要使用到比较运算符常用的比较运算符如下:

操作符

含义

=

等于

>

大于

>=

大于等于

<

小于

<=

小于等于

<>

不等于 等效于!=

其它操作

And 逻辑运算 逻辑与

Or 逻辑运算 逻辑或

Not 逻辑运算 逻辑否

Between 起始值 and 结束值:使用 BETWEEN 运算来显示在一个区间内的值 包含(起始结束值)

In: 使用 IN运算显示列表中的值。 In(,,,)相当于一个集合,只要出现集合中匹配的就显示

Like:

l 使用 LIKE 运算选择类似的值

l 选择条件可以包含字符或数字:

• % 代表零个或多个字符(任意个字符)。

• _ 代表一个字符。

Escape:

回避特殊符号的:使用转义符。例如:将[%]转为[\%]、[_]转为[\_],然后再加上[ESCAPE ‘\’] 即可

Null:

使用 IS (NOT) NULL 判断空值。

//查询部门号为10的员工信息 部门为整数类型

SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where deptno=10;

//查询职位号为MANAGER的员工信息 岗位的类型为字符类型

SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where job='MANAGER';

//查询部门号为10并且员工的职位为MANAGER的员工信息

SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where job='MANAGER' and deptno=10;

注意:

l 字符和日期要包含在单引号中。

l 字符大小写敏感,日期格式敏感。

l 默认的日期格式是 DD-MON-RR。

//查询部门号大于10的员工信息

SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where deptno>10;

//查询薪水大于等于3000的员工信息

SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where sal>=3000;

//查询薪水不等于3000的员工信息

SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where sal<>3000;

SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where sal !=3000;

//查询薪水大于2000并且小于3000的员工信息

SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where sal>2000 and sal<3000;

//查询薪水大于等于2000并且小于等于3000的员工信息

SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where sal between 1600 and 3000;

//等效于

SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where sal>=1600 and sal<=3000;

//查询部门号位10,20的员工信息

SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where deptno in(10,20);

//注意:相当于如下操作:

SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where deptno =10 or deptno=20;

//查询员工名称以S开头的员工信息

SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where ename like 'S%';

//查询员工名称以S结尾的员工信息

SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where ename like '%S';

//查询员工名称第三个字符为N的员工信息

SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where ename like '__N%';

//查询员工名称中含有N的员工信息

SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where ename like '%N%';

//查询员工名称中倒数第二个字符为%的员工信息

SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where ename like '%\%_'escape'\';

//查询员工名称总含有%的员工信息

SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where ename like '%\%%'escape'\';

//查询奖金为null的员工信息

SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where comm is null;

//查询奖金非null的员工信息

SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where comm is not null;

优先级表格:

优先级

1

算术运算

2

连接符

3

比较符

4

Is not null like not in

5

Not between

6

not

7

and

8

Or

备注:可以采用括号改变优先级

关系数据库-à层次关系---》网状的关系-à关系数据库-à对象关系。

Order by 子句:

l 使用 ORDER BY 子句排序

• ASC(ascend): 升序

• DESC(descend): 降序

l ORDER BY 子句在SELECT语句的结尾。

//查询员工信息按照部门的编号进行升序排列 默认的是 asc

SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp order by deptno;

//查询员工信息按照部门的编号进行降序排列 使用desc

SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp order by deptno desc;

//查询部门为20的员工信息并按照员工的编号进行升序排列

SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where deptno=20 order by empno asc;

备注:可以与条件语句结合使用但order by子句放在最后

//查询员工信息并按照员工的部门编号升序并且编号进行降序排列

SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp order by deptno asc,empno desc;

备注:理解思路:首先查询员工信息按照部门的编号进行升序,然后每个部门中的员工按照员工的编号进行降序排列

总结:

整体语法如下:

SELECT *|{[DISTINCT] column|expression [alias],...}

FROM table

[WHERE condition(s)]

[ORDER BY {column, expr, alias} [ASC|DESC]];

通过学习可以完成 使用where子句、between、like、in、null、not 、or、and等来过滤数据,也可以使用order by子句进行对查询结果排序数据。

orcale入门命令

一 基本命令:

1. spool命令用于在sqlplus中录屏

spool c:\1.txt 自动创建1.txt,录屏

spool c:\1.txt append

追加到1.txt中

2. conn system/orcl 切换用户的连接

3. -- 注释的意思

4. exit退出

5. 清屏:host cls;

6. 修改密码:

//修改system用户的密码是system

alter user system identified by system;

alter user identified by 都是关键字。

当忘记密码时,可以采用

sqlplus sys/aaa as sysdba;--以数据库管理员的身份登录. 如果在本机登录

密码可以随意输入。

7. 修改sql语句:

(1)通过c命令

c/alert/alter (错语句/对语句)

>/ ----/运行上一个命令

用户已修改

(2)修改通过ed修改---专业的修改方式

>ed

弹出记事本来修改

8. 解锁: hr是用户名

alter user hr account unlock;

9. show all 显示所有的命令

10. distinct是重复行取一个---重要

11. set timing on; 设置执行的时间

12. set timing off;取消执行的时间

13. set feedback off;取消当执行的时候显示已选择多少行。

14. set feedback on; 显示当执行的时候显示已选择多少行。

15. set heading off;取消字段的头信息

16. set heading on;显示字段的头信息

17. set trimout on;

18. set trimout off;

二 查询表:

1. select * from tabs;查询系统表

2. select table_name from user_tables; 当前用户下面的表名

3. desc 表名 查询表的结构

4. set linesize 120 设置行的高度

5. col 名称 for 9999字符 ---设置栈位的长度

--- col sal for 9999(栈位的长度)

6.set pagesize 长度 默认的是14

7.set pagesize 0 代表当前显示没有限制,禁止分页

8. show all 查看oracle的一些默认的配置

9. select * from tab 查询所有的表

10. select ename,job from emp;选择指定的行

11. select sal*12 from emp; 运算符的运算

12. select sal*12+nvl(comm,0) from emp;把null用0替代

13. 过滤条件

-where子句的使用,加上过滤的条件, 紧跟着from 表名之后

SQL> --where语法 select* |{distinct|express|clomn} from 表名 where 过滤条件

select * from emp where deptno=20;

select empno from emp where depton=20

select * from emp where job='CLERK';

select * from emp where hiredate='17-12月-80'

14.比较运算符 > < ==

select * from emp where sal >1000;

select * from emp where sal >=3000;

select * from emp where sal<=3000;

select * from emp where sal <>3000;

select * from emp where sal !=3000;

select * from emp where sal between 1600 and 300;//注意必须是小的在前,大的在后

select * from emp where job in('SALESMAN','MMANAGER');

select * from emp where sal in(1600,3000);

select * from emp where sal=1600 or sal=3000;

15.模糊查询

select * from emp where ename like '%SN%';

select * from emp where ename like 'SM%';

select * from emp where ename like '%SM';

SQL> --在orcal中 % _是有多个含义的 % 0-多个字符 - 一个字符

SQL> --字段内容 % _ 没有任何含义 结合\ escape来实现

select * from jobs where job_id like 'IT\_%' escape '\' ;

select * from emp where comm is not null;

select * from emp where sal>1600 and job='MANAGER';

select * from emp where sal>1600 or job='MANAGER';

select * from emp where job in('MANAGER','SALESMAN')

select * from emp where job not in('MANAGER','SALESMAN')

16.排序

select * from emp order by sal;

select * from emp order by sal desc;

select * from emp order by comm;

select * from emp order by comm desc;

select * from emp order by nvl(comm,0) desc;

select * from emp order by hiredate;

select * from emp order by sal,deptno;查询的顺序,先按第一个字段排序,如果相同,再按第二个排序

SQL> --按别名排序

SQL> select sal*12+nvl(comm,0) from emp order by sal*12+nvl(comm,0);

select sal*12+nvl(comm,0) as salary from emp order by salary;

SQL> --多个列排序

SQL> select * from emp order by deptno,sal;

17.有时候在查出来的格式不好看的话,可以调整一下,有时候col value for 9999改变不了,所以要用以下的sql语句:

SQL> set linesize 120

SQL> col value for a20

SQL> col parameter for a40

注意:SQL 语言大小写不敏感。

SQL 可以写在一行或者多行

关键字不能被缩写也不能分行

各子句一般要分行写。

使用缩进提高语句的可读性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: