Oracle语句大全
Oracle SQL语句大全
1.desc(描述) emp 描述emp这张表
2.desc dept 部门表
3.desc salgrade 薪水等级
4.select *from table 查找表中的元素
5.dual 是系统中的一张空表
如果我们不需要从具体的表来取得表中数据,而是单纯地为了得到一些我们想得到的信息,并要通过select 完成时,就要借助一个对象,这个对象,就是dual;
concat:返回参数的串联,如果参数不是字符串类型,将先使用 string() 函数转换为字符串,然后计算该转换的结果,此函数区分大小写。
||:字符串的串联
6.select *from dual
7.select sysdate from dual 取出系统时间
8.select ename,sal*12 "annul sal"(取的别名) from emp; 查找用户姓名和用户的年薪
9.任何含有空值的数学表达式的值都是空值
select ename,sal*12+comm from emp;
10.select ename||sal from emp 其中的||相当于将sal全部转化为字符串
11.表示字符串的方法
select ename ||'ajjf' from emp;
12.如果其中有一个单引号就用2个单引号来代替他
select ename||'sakj' 'lds'from emp;
13.select distinct deptno from emp (去除部门字段中重复的部分,关键字distinct)
14.select distinct deptno,job from emp;(去除这2个字段中重复的组合)
15.select *from dept where deptno=10; 取出条件(取出部门编号为10的记录)
16.select * from emp where ename='CLIRK'; 取出部门中姓名为clirk的记录(注意取出过程中ename用单引号隔开)
17.select ename,sal from emp where sal>1500; 取出部门中薪水大于1500的人的姓名
18.select ename,sal,deptno from emp where deptno<> 10 取出部门中的部门号不等于10的
19.select ename,sal,deptno from emp where ename>'CBA' 取出部门中员工名字大于CBA的员工(实际比较的是ACIIS码)
20.select ename,sal from emp where sal between 800 and 1500
select ename,sal from emp where sal>=800 and sal<=1500; (取出800和1500之间的数)
21.select ename,sal,comm from emp where comm is null (选出其中的空值)
select enmae,sal,comm from emp where comm is not null(选出其中的非空值)
22.select ename,sal,comm from emp where sal in (800,1500,2000);取出这3者之中的
select ename,sal,comm from emp where ename in('simth');
23.select ename,sal,hiredate from emp where hiredata>'3-04月-81';宣传符合条件的日期
24.select ename,sal,from emp where sal>1000 or deptno=10; 找出工资薪水大于1000或者部门号等于10的员工
25.select ename,sal from emp where sal not in(500,1000); 查找薪水不在500到1000的员工姓名和月薪
26.select ename,sal from emp where ename like '%ALL%';
select ename,sal from emp where ename like '_%A%'; 查找姓名中含有ALL的客户信息,一个横线代表一个通配符
27.select ename,sal from emp where ename like '_%$%%' escape '$'; 自己指定转易字符
select ename,sal from emp where ename like '_%\%%'; 查找中间含有%相匹配的客户信息,运用转易字符
28.select * from dept order by deptno 对表中元素按部门号排序
select *from dept order by deptno desc 默认为升序,可以用desc按降序
29.select ename,sal from emp where sal <>1000 order by sal desc 按照查询条件来查询,并排序(asc升序排列)
30.select ename,sal*12 from emp where ename not like '_%A%' and sal>800 order by sal desc
31.select lower(ename) from emp 将ename都转化为小写 lower是函数能将字母转化为小写
32.select ename from emp where lower(ename) like '_%a%'; 找出ename 中所有的含有a的字符
33.select substr(ename,2,3) form emp 从第2个字符开始截取3个字符
34.select chr(65) from dual; 将65转化为字符
35.select ascii('A') from dual 将ACSII码转化为字符串
36.select round(23.565)from dual 四舍五入
36.select round(23,4565,2)from dual 四舍五入到第二位
37.select to_char(sal,'$99.999.9999') from emp 按指定格式输出
select to_char(sal,'L99,999,9999') form emp L代表本地字符
38.select hiredate from emp
select to_char(hiredate,'YYYY-MM-DD HH:MI:SS) from emp; 时间格式的显示
select to_char(sysdate,'YYYY-MM-DD HH:MI:ss) from dual; 十二小时制显示系统时间
select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS) from dual 二四小时制显示系统时间
39.select ename,hiredate from emp where hiredate > to_date('2005-2-3 12:32:23','YYYY-MM-DD
HH:MI:SS');
40 select sal from emp where sal>to_number('$1,250.00','$9,999.99'); 取出比它大的一切字符串(把特定格式的数字转化成字符)
41 select ename,sal+nvl(comm,0) from emp; 讲comm值为空的用0来替换,单行函数(以一条记录为条件)一条对一条
如果是空值就替换成另一个值
如nvl(字段,‘x’)字段值等于null就这个函数得到的结果就是'x',一般用于存在空值比较的情况下,比如字段a与字段b都是int型,其中一个等于null另一个为非空值,你使用a<>b是不成立的,使用此条件查询你将丢失这条本来不相等的数据,可以如此用法nvl(字段,-1)<>nvl(字段,-1),这样就可以得到想要查询的数据,当然查询数据的前提是此字段值不能有-1值才能用这种写法
42.select Max(sal) from emp;最大值
select Min(sal) from emp;最小值
select avg(sal) from emp;平均值
select sum(sal) from emp;总和
select count(*) from emp; 查看表中一共有多少条记录
select count(*) from emp where deptno=10; 查找部门10一共有多少人;
43.select avg(sal),deptno from emp group by deptno; 按部门号进行分组 select deptno,job,max(sal) from emp group by job,deptno; 按工作和部门号进行分组;
44.select ename from emp where sal=(select max(sal) from emp); 子查询,查找部门中薪水最高的员工姓名
45.group by 注意:出现在select列表中的字段,如果没有出现在组函数中必须出现在group by子句中
46.select avg(sal),deptno from emp group by deptno having avg(sal)>2000; 选出部门中平均薪水大于2000的部门,
where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。
SELECT A COUNT(B) FROM TABLE GROUP BY A HAVING COUNT(B)>2
47.select * from emp where sal>100 group by deptno having ..........order by........
oracle select if else语句
- 1 - oracle select if else语句
Oracle数据库中的SELECTIFELSE语句可以帮助我们根据特定的条件来执行不同的操作。这种语句可以用于多种不同的情况,如在查询中使用条件语句,根据条件来做出不同的选择等等。
语法:
SELECT
column1,
column2,
...
FROM
table_name
WHERE
condition1
AND (condition2 OR condition3)
AND (condition4 OR condition5)
在上面的语法中,我们可以使用多个WHERE子句来指定不同的条件,然后使用AND或OR运算符将它们组合起来。如果条件成立,则会执行SELECT语句中的相应操作。
例如,我们可以使用SELECT IF ELSE语句来根据特定条件从表中选择数据:
SELECT
emp_name, - 2 - CASE
WHEN salary > 5000 THEN 'High'
WHEN salary > 3500 THEN 'Medium'
ELSE 'Low'
END AS salary_level
FROM
employees;
在上面的例子中,我们使用了CASE语句来根据员工工资的不同级别来选择相应的薪资级别。如果员工的工资高于5000,则他们属于高薪水级别;如果员工的工资在3500到5000之间,则他们属于中等薪水级别;如果员工的工资低于3500,则他们属于低薪水级别。
除了使用CASE语句外,我们还可以使用IF ELSE语句来执行不同的操作。在Oracle数据库中,我们可以使用DECODE函数来实现IF ELSE语句。
oracle查表结构的语句
- 1 - oracle查表结构的语句
在Oracle数据库中,我们经常需要查看表的结构,包括表的列名、数据类型、长度等信息。下面介绍几种常见的查表结构的语句。
1. DESC
DESC是Oracle自带的查看表结构的命令,其语法如下:
DESC table_name;
其中table_name为要查看的表名。执行该命令后,将会显示出表的列名、数据类型、长度、是否为NULL等信息。
示例:
DESC employees;
2. SELECT语句
除了DESC命令外,我们也可以使用SELECT语句查询表的结构。其语法如下:
SELECT column_name, data_type, data_length, nullable
FROM user_tab_columns
WHERE table_name = 'table_name';
其中column_name为列名,data_type为数据类型,data_length为数据长度,nullable为是否为NULL。user_tab_columns为系统表,存储了当前用户下的所有表的列信息。
示例:
SELECT column_name, data_type, data_length, nullable
FROM user_tab_columns - 2 - WHERE table_name = 'employees';
3. ALL_TAB_COLUMNS
ALL_TAB_COLUMNS是Oracle系统表,存储了所有表的列信息。其语法如下:
SELECT column_name, data_type, data_length, nullable,
table_name
FROM all_tab_columns
oracle常用SQL语句(汇总版)
Oracle数据库常用sql语句
ORACLE 常用的SQL语法和数据对象
一.数据控制语句 (DML) 部分
1.INSERT (往数据表里插入记录的语句)
INSERT INTO 表名(字段名1, 字段名2, ……) VALUES ( 值1, 值2, ……);
INSERT INTO 表名(字段名1, 字段名2, ……) SELECT (字段名1, 字段名2, ……) FROM 另外的表名;
字符串类型的字段值必须用单引号括起来, 例如: ’GOOD DAY’
如果字段值里包含单引号’ 需要进行字符串转换, 我们把它替换成两个单引号''.
字符串类型的字段值超过定义的长度会出错, 最好在插入前进行长度校验.
日期字段的字段值可以用当前数据库的系统时间SYSDATE, 精确到秒
或者用字符串转换成日期型函数TO_DATE(‘2001-08-01’,’YYYY-MM-DD’)
TO_DATE()还有很多种日期格式, 可以参看ORACLE DOC.
年-月-日 小时:分钟:秒 的格式YYYY-MM-DD HH24:MI:SS
INSERT时最大可操作的字符串长度小于等于4000个单字节, 如果要插入更长的字符串, 请考虑字段用CLOB类型,
方法借用ORACLE里自带的DBMS_LOB程序包.
INSERT时如果要用到从1开始自动增长的序列号, 应该先建立一个序列号
CREATE SEQUENCE 序列号的名称 (最好是表名+序列号标记) INCREMENT BY 1 START WITH 1
MAXVALUE 99999 CYCLE NOCACHE;
其中最大的值按字段的长度来定, 如果定义的自动增长的序列号 NUMBER(6) , 最大值为999999
INSERT 语句插入这个字段值为: 序列号的名称.NEXTVAL
2.DELETE (删除数据表里记录的语句)
DELETE FROM表名 WHERE 条件;
oracle权限语句大全
oracle权限语句⼤全
Oracle
系统默认的⼏个⽤户:sys --------⽹络管理⽤户,具有最⾼数据库管理权限
system------本地管理⽤户,权限次于sys
scott-------普通⽤户,默认是锁住的(不可⽤)
默认情况下:scott 密码是 tiger (⾃⼰设定)sys 密码是 change_on_install
system 密码是 manager
sysman 密码是 oem_temp
启动监听器服务:
lsnrctl start
启动实例服务:oradim -starup -sid orcl
显⽰当前⽤户:show user;
登录⽤户:sqlplus / as sysdba (sys⽹络管理员⽤户登录)
sqlplus username/password (普通⽤户)
-->sqlplus
-->请输⼊⽤户名:username
-->请输⼊⼝令:password
创建⽤户:
create user zhangsan identified by zhangsan;
修改⽤户密码:alter user lisi identified by lll;
⽤户断开数据库连接:disconn;
当前⽤户重新连接:conn username/password;
删除⽤户:drop user username;
设置显⽰宽度:set linesize 400;
系统权限管理:
授予会话权限:grant create session to zhangsan;
授予建表权限:grant create table to zhangsan;
授予⽆限制使⽤表空间的权限:grant unlimited tablespace to zhangsan; 授予权限:grant 权限 to ⽤户名;
撤销权限:revoke 权限 from ⽤户名;
查询⽤户的系统权限:select * from user_sys_privs;
oracle数据库常用检测语句
1、--查询每台电脑的连接数
select username, t.MACHINE,t.PROGRAM, t.STATUS, count(username)
from v$session t
where username is not null
group by username, t.MACHINE,t.PROGRAM, t.STATUS
order by username, t.MACHINE,t.PROGRAM, t.STATUS;
2--查询可用连接数和已经用了的连接数
select RESOURCE_NAME as A,--资源名,
CURRENT_UTILIZATION as b,--资源的当前使用量,
MAX_UTILIZATION as c,--资源使用达到的最大值,
INITIAL_ALLOCATION as d,--初始化值一般等于limit_value,
LIMIT_VALUE as e--系统设置的资源值
from v$resource_limit
where resource_name in ('sessions', 'processes');
3--查询数据库内存
select * from v$sga;
select * from v$sgastat;
4--查询耗时最长的sql,采用这个语句在业务高峰监控那个查询语句耗时长,占用数据库连接不释放
select *
from (select SQL_TEXT,
SQL_FULLTEXT,
round(ELAPSED_TIME / 1000000, 2) ccc,--总时长,
EXECUTIONS dd,--执行次数,
round(ELAPSED_TIME / 1000000 / EXECUTIONS, 3) ee,--每次时长,
oracle表注释查询语句
- 1 - oracle表注释查询语句
Oracle数据库中的表注释可以提供关于表结构和用途的重要信息,有助于数据库管理和开发。以下是一些常用的查询语句,可用于检索Oracle表的注释。
1. 查询所有表的注释
SELECT table_name, comments FROM all_tab_comments WHERE
owner = 'schema_name';
该语句将返回指定模式(schema_name)下所有表的名称和注释。可以用“%”代替模式名称,以检索数据库中所有表的注释。
2. 查询单个表的注释
SELECT comments FROM all_tab_comments WHERE owner =
'schema_name' AND table_name = 'table_name';
该语句将返回指定模式下指定表的注释。
3. 查询列的注释
SELECT column_name, comments FROM all_col_comments WHERE
owner = 'schema_name' AND table_name = 'table_name';
该语句将返回指定模式下指定表的列名和注释。
4. 查询主键列的注释
SELECT cols.column_name, cons.constraint_name, comments
FROM all_constraints cons, all_cons_columns cols,
all_col_comments coms WHERE cons.owner = 'schema_name' AND
cons.table_name = 'table_name' AND cons.constraint_type = 'P' - 2 - AND cols.owner = cons.owner AND cols.constraint_name =
oracle_plsql语句大全
sql语句的编程手册 SQL PLUS
一、SQL PLUS
1 引言
SQL命令
以下17个是作为语句开头的关键字:
alter drop revoke
audit grant rollback*
commit* insert select
comment lock update
create noaudit validate
delete rename
这些命令必须以“;”结尾
带*命令句尾不必加分号,并且不存入SQL缓存区。
SQL中没有的SQL*PLUS命令
这些命令不存入SQL缓存区
@ define pause
# del quit
$ describe remark
/ disconnect run
accept document save
append edit set
break exit show
btitle get spool
change help sqlplus
clear host start
column input timing
compute list ttitle
connect newpage undefine
copy
---------
2 数据库查询
数据字典
TAB 用户创建的所有基表、视图和同义词清单
DTAB 构成数据字典的所有表
COL 用户创建的基表的所有列定义的清单
CATALOG 用户可存取的所有基表清单
select * from tab;
describe命令 描述基表的结构信息
describe dept
select *
from emp;
select empno,ename,job
from emp;
oracle select top语句
oracle select top语句
Oracle数据库是一种非常常用的关系型数据库管理系统,它提供了丰富的查询语句来满足用户的各种查询需求。其中,SELECT TOP语句是一种非常常用的查询语句,用于返回表中的前几行记录。在本文中,我们将列举出一些常用的Oracle SELECT TOP语句,并对其进行详细的描述和解释。
1. 查询表中的前N行记录
```sql
SELECT *
FROM table_name
WHERE ROWNUM <= N;
```
这个语句可以用来查询表中的前N行记录,N为一个正整数。它通过ROWNUM函数来限制返回的记录数。
2. 查询表中的前百分比记录
```sql
SELECT *
FROM table_name
WHERE ROWNUM <= (SELECT COUNT(*) * 0.01 FROM
table_name);
``` 这个语句可以用来查询表中的前1%的记录。它通过ROWNUM函数和子查询来计算出要返回的记录数。
3. 查询表中的前N个最大值
```sql
SELECT *
FROM (
SELECT *
FROM table_name
ORDER BY column_name DESC
)
WHERE ROWNUM <= N;
```
这个语句可以用来查询表中某一列的前N个最大值。它通过子查询和ORDER BY子句来实现。
4. 查询表中的前N个最小值
```sql
SELECT *
FROM (
SELECT *
FROM table_name
ORDER BY column_name ASC )
WHERE ROWNUM <= N;
oracle sql 循环语句
在Oracle SQL中,可以使用循环语句来重复执行一系列语句块。Oracle SQL提供了三种类型的循环语句:基于条件的循环(WHILE循环)、基于计数的循环(FOR循环)和基于游标的循环(CURSOR循环)。下面是它们的示例用法。
1. WHILE循环:
DECLARE
variable_name data_type;
BEGIN
variable_name := initial_value;
WHILE (condition) LOOP
--执行的语句块
--在每次迭代后更新variable_name的值
END LOOP;
END;
其中,`variable_name`是循环中使用的变量名,`data_type`是变量的数据类型,`initial_value`是变量的初始值,`condition`是循环的终止条件。在每次循环迭代时,需要在语句块中执行相应操作,并在需要时更新`variable_name`的值。
2. FOR循环:
BEGIN
FOR variable_name IN initial_value..final_value LOOP
--执行的语句块
END LOOP;
END;
其中,`variable_name`是循环中使用的变量名,`initial_value`是循环变量的初始值,`final_value`是循环变量的结束值。在每次迭代中,`variable_name`会依次取`initial_value`到`final_value`之间的值,执行相应的语句块。
3. CURSOR循环:
DECLARE
CURSOR cursor_name IS
SELECT columns FROM table WHERE condition;
BEGIN
FOR cursor_variable IN cursor_name LOOP
oracle语法
oracle语法
1、说明:创建数据库
CREATE DATABASE database-name
2、说明:删除数据库
drop database dbname
3、说明:备份sql server
--- 创建 备份数据的 device
USE master
EEC sp_addumpdevice 'disk', 'testBack',
'c:\mssql7backup\MyNwind_1.dat'
---开始备份
BACKUP DATABASE pubs TO testBack
4、说明:创建新表
create table tabname(col1 type1 [not null] [primary
key],col2 type2 [not null],..)
根据已有的表创建新表:
A:select into table_new from table_old (使⽤旧表创建新表)
B:create table tab_new as select col1,col2… from tab_old
definition only<;仅适⽤于Oracle> 5、说明:删除新表
drop table tabname
6、说明:增加⽤个列,删除⽤个列
A:alter table tabname add column col type
B:alter table tabname drop column colname
注:DB2DB2中列加上后数据类型也不能改变,唯⽤能改变的是增加varchar类型的长度。
7、说明:添加主键: Alter table tabname add primary key(col)
说明:删除主键: Alter table tabname drop primary key(col)
8、说明:创建索引:create [unique] index idxname on
tabname(col….)
