===SQLPLUS======================
1、什么是sql plus?
是用来和Oracle进行交互的工具
可电脑端使用,也可以在服务器上使用

2、启动SQLPLUS

 

3、设置界面风格

 

4、常用命令
show 显示SQL Plus中的信息

connect 先无条件断开当前数据库用户的连接,再建立连接;缩写(conn)

disconnect 断开当前连接。

set 设置SQL Plus中的相关信息

describe 返回存储对象的描述。缩写(desc)

help 获取SQL Plus命令的帮助。

clear screen清屏

exit或quit 退出


5、创建用户
a.创建一个普通用户:
语法:create user 用户名 identified by 密码;

b.授权给一个用户:
角色:oracle中内置了3个角色
DBA:系统管理权限
connect:创建会话连接权限
resource:操作数据库对象的权限

语法:grant 权限,权限..to 用户名;

创建用户名为ABC的用户,密码自拟


修改密码:alter user 用户名 identified by 新密码;
删除用户:drop user 用户名;
账户解锁:alter user 用户名 account unlock;
============================================
导入SQL脚本:
1.脚本文件内容,复制粘贴到SQLPLUS中;
2.@ 文件路径 文件名.后缀名;

 

SQL简单查询
1、什么是SQL?什么是表格?怎么查询?

SQL(Structured query language)结构化查询语言
用来和数据库进行交互的语言

表:行与列组成的二维空间,他是数据库存储的基本单位。


2、select语法

select 列名,列名2,列名3…… from 表名;

 

 

3、练习
--1从s_emp表中查询员工姓名

--2从s_emp表中查询员工编号、姓名


--3从s_emp表中查询员工编号、姓名、薪资

--4从s_emp表中查询所有员工信息


--5从s_emp表中查询公司中所有职位

--6从s_emp表中查询所有员工姓名、职位、入职日期

--7找出所有部门的部门编号、名称和地址


--8找出公司不同级别的最高工资和最低工资

=========================


5、sql在数据库中是用运算能力:
--从员工表中查询每个员工姓名和年薪


6、sql具有字符串拼接能力,并且可以取别名:
--字符串拼接(****是**入职的,工资是**,职位***)


7、空值置换函数nvl()
--查询所有员工的名字,年薪(不考虑提成)


--查询所有员工的名字,年薪(考虑提成)

 

注意:nvl()中的两个值要为同一数据类型

 

 

 

使用scott/tiger用户下的emp表完成下列练习,表结构说明如下

emp员工表 字段如下:
empno 员工号
ename 员工姓名
job 职位
mgr 上级编号
hiredate入职日期
sal 薪资
comm 提成
deptno 部门编号

--1、选择部门30中的员工;
select * from emp where deptno =30;

--2、查询所有办事员(CLERK)的姓名、编号和部门;
select ename,empno,deptno from emp where job = 'CLERK';

--3、找出提成高于工资的员工;
select * from emp where comm>sal;

--4、找出提成高于薪资60%的员工
select * from emp where comm>(sal*0.6);

--5、找出部门10中所有经理和部门20中所有办事员的详细资料
select * from emp where (deptno = 10 and job = 'MANAGER')or(deptno = 20 and job = 'CLERK');

=============================

--6、找出部门10中所有经理、部门20中所有办事员以及既不是经理又不是办事员但薪资大于或等于2000的所有雇员的详细资料
select * from emp
where (deptno = 10 and job = 'MANAGER') or (deptno = 20 and job= 'CLERK') or (job != 'MANAGER' and job != 'CLERK' and sal>=2000);

--7、找出收取提成的员工的不同职位;
select distinct job from emp where comm is not null;

--8、找出不收取提成 或收取提成低于100的员工;
select * from emp where comm is null or comm <100;

-*-9、找出各月最后一天入职的所有员工

-*-10、找出30年之前入职的员工

===================================
-*-11、显示只有首字母大写的所有员工的姓名

-*-12、显示正好为4个字符的员工姓名

--13、显示不带有R字母的员工姓名
select ename
from emp
where ename not like '%R%';

-*-14、显示所有员工姓名的前三个字符

-*-15、显示所有员工的姓名,用a代替所有的A
=========================================================
-*-16、显示所有员工的姓名以及工作满30年的入职日期

--17、显示雇员的详细资料,按姓名排序
select * from emp order by ename;

--18、显示员工姓名,根据工作年限将最老的员工排在最前面
select ename
from emp
where ename
order by hiredate asc;

--19、显示所有员工的姓名、部门编号和薪资,部门编号降序排列,同部门员工以薪资升序排列
select ename, deptno,sal from emp order by deptno desc,sal ;

-*-20、显示所有员工的姓名和入职日期,按照员工入职的月份降序排序,并将最前年份排在最前
============================================================
-*-21、显示在一个月为30 天的情况下,所有员工的日工资,忽略余数

-*-22、找出2月份入职的员工

-*-23、显示出所有员工姓名,和其在公司所在天数

--24、显示姓名字段的任何位置都包含A的所有员工姓名
select ename
from emp
where ename like '%A%';

-*-25、以年、月、日分别显示所有员工的工作时长;

 

posted on 2017-11-01 17:10  Heng23  阅读(243)  评论(0编辑  收藏  举报