今天学习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 可以写在一行或者多行
关键字不能被缩写也不能分行
各子句一般要分行写。
使用缩进提高语句的可读性。