博客新开,闲来无事,总结一下常用sql语句,做数据仓储的别喷.
-Oracle
基本管理语句
conn scott/scott;
show user; --查看用户
set linesize 300; --设置每行显示字数
set pagesize 100; --设置每页显示行数
set timing on;--还有set timing off 显示完成命令需要的时间
select sysdate from dual; --显示系统时间oracle时间的格式为 23-7月 -10
select * from tab; --显示所有的表
desc emp; --显示表的结构
disc;--退出窗口exit
-Oracle
基本sql
和函数
select distinct job from emp; --用于返回唯一不同的值"distinct"
select distinct job,deptno from emp; -- 有两列以上只需在第一个字段后跟","第二个字段就ok了
select * from emp where (sal>800 and sal<2000) and (job='CLERK' or deptno=20);
--"where","<",">","and","or"地球人都知道
select * from emp order by job ; --order by 语句用于根据指定的列对结果集进行排序
select * from emp order by job asc,sal desc; --默认的是升序"asc",如果要倒序用关键字"desc"
select * from emp order by sal,job; --上下两个不一样
select * from (select rownum rn,emp.* from emp where rownum < 10) where rn>5
--oracle中的rownum时能用"<"来定义用子查询分页,sqlserver用top,mysql用limit
select * from emp where job like 'A%'; --like的用法,注意通配符'%,_'的区别和用法
select * from emp where sal in (3000,800,1500); --in的用法,多说一句in后的()中看以跟一个字段的子查询
select * from emp where sal between 800 and 2500; --between的用法,800-2500之间是带上800和2500的
select * from emp where sal not between 800 and 2500; --not between的用法;
select * from emp,dept where emp.deptno = dept.deptno; -- 多表连接 等价于 iner join;
select * from emp inner join dept on emp.deptno = dept.deptno; --inner join 如果表中有至少一个匹配,则返回行
select * from emp left join dept on emp.deptno = dept.deptno; --left join: 即使右表中没有匹配,也从左表返回所有的行
select * from emp ,dept where emp.deptno = dept.deptno(+); --(+)是Oracle特有的符号,(+)定义在那个表中,另一张表为基表.
select * from emp right join dept on emp.deptno = dept.deptno; --right join: 即使左表中没有匹配,也从右表返回所有的行
select * from emp ,dept where emp.deptno(+) = dept.deptno; --不用多少和上面的效果一样.
select * from emp full join dept on emp.deptno = dept.deptno; --full join: 只要其中一个表中存在匹配,就返回行
select * from emp union select * from emp; --union操作符用于合并两个或多个select语句的结果集
select * from emp union all select * from emp; -- union all 不合并重复项;
select empno,ename,(sal+nvl(comm,0))*13 年薪 from emp; --nvl()如果为空,就设为0,此函数每一个数据库不一样.
select avg(sal) ,min(sal) ,max(sal) ,sum(sal) ,count(*) from emp;--avg平均,min最小,max最大,sum求和,count统计
select avg(sal) ,min(sal) themin,max(sal) ,sum(sal), count(*) ct from emp group by job having count(*)>2;
--group by having 不能使用别名,因为sql从左向右执行,编译器并不知道ct是什么.
select length(job) from emp; --字符长度.
select upper(lower(job)) from emp; --lower转小写,upper转大写
select initcap(lower(job)) from emp; --initcap首字母大写
-
用户的管理(1)
conn sys/sys as sysdba; --连接数据库
create user xiaoming identified by xiaoming; --创建用户(需要权限)
passw xiaoming; --修改用户密码()
grant connect to xiaoming;
--把"connect"的角色授予xiaoming(其他角色例如:dba(系统管理员),resource(可以在表空间建立表))
grant resource to xiaoming; --授权建立表的权利
grant resource to xiaoming with admin option;-- 授权权限的传递(系统权限加with admin option)
grant all on scott.emp to xiaoming ; --对表进行授权(有多种种权限select insert update delete all)
grant all on scott.emp to xiaoming with grant option; --授权对象的传递(对象权限加with grant option)
-
表数据管理
conn xiaoming; --连接到xiaoming
create table test (id varchar(30), name varchar(30)); --创建一个test表
insert into test values('1002','xiaoming'); --向表中插一个数据
create table emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) as (select * from scott.emp);
--拷贝一个表,或者就是create table emp as (select * from scott.emp);
insert into test (select empno,ename from emp); --向表中插入一个查询结果,没有values
insert into emp (empno,ename) values (1001,'xiaoming'); --增加一条数据
delete from emp where sal>2500; --删除满足某个条件的表中的数据
update emp set empno=1009, deptno=90 where empno =1001; --通用sql语句
update emp set (job,mgr,sal)=(select job,mgr,sal from emp where empno=7934) where empno=1009;
--Oracle特有的语句
drop table test; --删除一个test表;
-
用户管理(2)
conn sys/sys as sysdba; --登录
create profile lock_one limit failed_login_attempts 3 password_lock_time 2; --创建一个profile "lock_one"
alter user xiaoming profile lock_one; --更改用户,将lock_on 概要文件加载到xiaoming上。
alter user xiaoming account unlock; --解锁用户
alter user xiaoming account lock; --锁定用户
drop profile lock_one cascade; --删除一个profile,如果profile已经被分配到用户上注意加上cascade
revoke resource from xiaoming; --回收系统权限,系统权限不会被回收.(对象权限级联,系统权限不级联)
revoke connect from xiaoming; --回收系统权限,系统权限不会被回收.(对象权限级联,系统权限不级联)
revoke all on emp from xiaoming;
--收回xiaoming对emp的对象权限(回收xiaoming的权利,xiaoming授权出去的对象权限都会被收回)
drop user xiaoming cascade; --删除一个对象
exit; --关闭窗口
分享到:
相关推荐
自己受益最大的语句集合。在每次面试前看看,数据库的问题不在话下了!!!!!!!!!!!!!!!!
Oracle数据库维护常用SQL语句集合(3)-PLSQL
"oracle常用监控SQL语句集合"提供了这样的工具集,旨在帮助用户解决在编写Oracle SQL语句时遇到的问题。 1. **V$视图**: Oracle提供了大量的动态性能视图(如V$SESSION, V$INSTANCE, V$PROCESS等),它们提供了...
13. **存储过程和函数**:存储过程是预编译的SQL语句集合,可封装复杂的业务逻辑。函数则返回一个值,常用于查询中。 14. **权限管理**:Oracle提供GRANT和REVOKE语句来控制用户对数据库对象的访问权限。 15. **...
根据提供的文件信息,我们可以整理出一系列Oracle数据库中的常用语句及其功能说明。下面将详细介绍这些语句,并解释其用途及应用场景。 ### 1. 查询Oracle参数设置 - **语句**: - `select value from v$parameter...
本资料集包含了Oracle性能监控的一些常用语句,旨在帮助用户更好地理解和优化数据库性能。以下是这些语句的主要类别及其详解: 1. **V$视图查询**: Oracle提供了大量的动态性能视图(V$视图),通过查询它们可以...
本篇文章将基于"oracle常用查询语句示例"这一主题,深入探讨在Oracle中执行多表查询和单表中复杂查询的方法。 首先,我们来看单表查询。在Oracle中,基础的SELECT语句用于从单个表中检索数据。例如: ```sql ...
- 存储过程是预编译的SQL语句集合,可封装复杂业务逻辑。 12. **触发器(TRIGGER)** - 触发器自动执行特定事件(如INSERT、UPDATE、DELETE)时的代码。 13. **分区表(PARTITIONING)** - 大表可以通过分区...
- 存储过程是预编译的SQL语句集合,可以封装复杂的业务逻辑。`CREATE PROCEDURE proc_name (...) AS ... BEGIN ... END;` - 函数是返回值的存储过程,如`CREATE FUNCTION func_name (...) RETURN datatype AS ... ...
根据提供的文档信息,本文将详细解析Oracle数据库中的关键SQL语句分类、常用SQL语句以及Oracle函数的应用场景。此外,还将简要介绍Oracle数据库的一些基本管理命令,如启动与关闭服务、用户管理等。 ### 一、Oracle...
2. 存储过程和函数:预编译的SQL语句集合,可包含流程控制逻辑,提高代码复用和性能。 3. 触发器:在特定数据库事件发生时自动执行的代码。 4. 分区表和物化视图:用于大数据管理和快速查询。 5. 面向对象的特性...
Oracle数据库是全球广泛使用的大型关系型数据库管理系统之一,对于DBA和开发人员来说,了解并掌握一些常用的监控SQL语句是十分必要的。这些语句可以帮助我们实时了解数据库的运行状态,及时发现并解决性能问题。以下...
### 常用Oracle SQL语句详解 在Oracle数据库管理中,熟练掌握SQL语句是进行数据查询、分析和管理的基础。以下是从标题、描述、标签以及部分内容中提炼出的关键SQL知识点,涵盖了一系列用于Oracle数据库的基本操作...
这份资料是关于Oracle数据库常用语句的实例和经典面试题的总结,旨在帮助学习者巩固基础,提升技能。 一、数据查询 在Oracle中,基本的数据查询语句是SELECT,它用于从表中获取数据。例如: ```sql SELECT column1...
本资料集主要涵盖了Oracle中的常用SQL语句以及在实际应用中可能遇到的常见问题及其解决策略。 1. **SQL基本操作**: - **SELECT语句**:用于从表中选择数据。例如,`SELECT * FROM table_name;` 将获取表中的所有...
提供oracle 对emp表的查询,多表连接查询,复杂查询。
以下是对"Oracle常用函数集合"的详细解析: 1. **数值函数**:Oracle提供了多种处理数字的函数,如`ROUND()`用于四舍五入,`TRUNC()`用于截断小数,`MOD()`计算余数,`DECODE()`用于条件判断,以及`POWER()`和`SQRT...
### Oracle 10g常用查询语句 #### 1. 查询当前用户 `select user from dual;` 此查询语句用于获取当前连接数据库的用户名。`dual`表是一个特殊表,每个Oracle数据库都包含它,主要用于执行简单的计算或返回单行...