Oracle 常用语句
- 格式:pdf
- 大小:40.79 KB
- 文档页数:2
oracle数据库基本语句oracle 数据库是一种常用的关系型数据库管理系统,常用的oracle数据库包括oracle10g、oracle11g和oracle12c。
要掌握oracle的基本用法,必须掌握其基本的语句。
oracle的常用基本语句有:一、数据定义语言(DDL)1、创建数据表:CREATE TABLE 表名(字段名数据类型[完整性约束条件],字段名数据类型[完整性约束条件],……);2、修改数据表: ALTER TABLE 表名 ADD(字段名数据类型[完整性约束条件],字段名数据类型[完整性约束条件],……);3、删除数据表: DROP TABLE 表名;4、创建索引:CREATE [UNIQUE] INDEX 索引名ON 表名[字段名[,字段名];5、删除索引: DROP INDEX 索引名;三、数据控制语言(DCL)1、建立用户: CREATE USER 用户名 IDENTIFIED BY 密码;2、删除用户: DROP USER 用户名;3、授权:GRANT 权限 ON 对象 TO 用户[WITH GRANT OPTION];4、回收授权: REVOKR 权限 ON 对象 FROM 用户;5、控制事务: COMMIT/ROLLBACK;四、数据库控制语言(DBCL)1、创建数据库:CREATE DATABASE 数据库名;2、删除数据库: DROP DATABASE 数据库名;3、创建表空间:CREATE TABLESPACE 表空间名 SEGMENT SPACE MANAGEMENT 自动;4、删除表空间: DROP TABLESPACE 表空间名;5、管理会话: ALTER SYSTEM KILL SESSION ['会话号'];。
ORACLE常用SQL语句大全一、基础1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server--- 创建备份数据的 deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:/mssql7backup/MyNwind_1.dat'--- 开始备份BACKUP DATABASE pubs TO testBack4、说明:创建新表create table tabname(col1 type1 [not null] [primary key],col2 type2 [not nul l],..)根据已有的表创建新表: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 tablename6、说明:增加一个列,删除一个列A:alter table tabname add column col typeB: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….)删除索引:drop index idxname注:索引是不可更改的,想更改必须删除重新建。
Oracle数据库常用sql语句ORACLE 常用的SQL语法和数据对象一.数据控制语句(DML) 部分1.INSER T (往数据表里插入记录的语句)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()还有很多种日期格式, 可以参看OR ACLE DOC.年-月-日小时:分钟:秒的格式YYYY-MM-DD HH24:MI:SSINSERT时最大可操作的字符串长度小于等于4000个单字节, 如果要插入更长的字符串, 请考虑字段用CLOB类型,方法借用ORACLE里自带的DBMS_LOB程序包.INSERT时如果要用到从1开始自动增长的序列号, 应该先建立一个序列号CREATE SEQUENCE 序列号的名称(最好是表名+序列号标记) INCREMENT BY 1 START WI TH 1 MAXVALUE 99999 CYCLE NOCACHE;其中最大的值按字段的长度来定, 如果定义的自动增长的序列号NUMBER(6) , 最大值为999999 INSERT 语句插入这个字段值为: 序列号的名称.NEXTVAL2.DELETE (删除数据表里记录的语句)DELETE FROM表名 WHERE 条件;注意:删除记录并不能释放ORACLE里被占用的数据块表空间. 它只把那些被删除的数据块标成unused.如果确实要删除一个大表里的全部记录, 可以用TRUNCATE 命令, 它可以释放占用的数据块表空间TRUNCATE TABLE 表名;此操作不可回退.3.UPDATE (修改数据表里记录的语句)UPDATE表名SET 字段名1=值1, 字段名2=值2, …… WHERE 条件;如果修改的值N没有赋值或定义时, 将把原来的记录内容清为NULL, 最好在修改前进行非空校验;值N超过定义的长度会出错, 最好在插入前进行长度校验..注意事项:A. 以上SQL语句对表都加上了行级锁,确认完成后, 必须加上事物处理结束的命令COMMIT 才能正式生效,否则改变不一定写入数据库里.如果想撤回这些操作, 可以用命令ROLLBACK 复原.B. 在运行INSERT, DELETE 和UPDATE 语句前最好估算一下可能操作的记录范围,应该把它限定在较小(一万条记录) 范围内,. 否则ORACLE处理这个事物用到很大的回退段.程序响应慢甚至失去响应. 如果记录数上十万以上这些操作, 可以把这些SQL语句分段分次完成, 其间加上COMMIT 确认事物处理.二.数据定义(DDL) 部分1.CREATE (创建表, 索引, 视图, 同义词, 过程, 函数, 数据库链接等)ORACLE常用的字段类型有CHAR 固定长度的字符串VARCHAR2 可变长度的字符串NUMBER(M,N) 数字型M是位数总长度, N是小数的长度DATE 日期类型创建表时要把较小的不为空的字段放在前面, 可能为空的字段放在后面创建表时可以用中文的字段名, 但最好还是用英文的字段名创建表时可以给字段加上默认值, 例如DEFAUL T SYSDATE这样每次插入和修改时, 不用程序操作这个字段都能得到动作的时间创建表时可以给字段加上约束条件例如不允许重复UNIQUE, 关键字PRIMAR Y KEY2.AL TER (改变表, 索引, 视图等)改变表的名称AL TER TABLE 表名1 TO 表名2;在表的后面增加一个字段AL TER TABLE表名ADD 字段名字段名描述;修改表里字段的定义描述AL TER TABLE表名MODIFY字段名字段名描述;给表里的字段加上约束条件AL TER TABLE 表名ADD CONSTRAINT 约束名PRIMAR Y KEY (字段名);AL TER TABLE 表名ADD CONSTRAINT 约束名UNIQUE (字段名);把表放在或取出数据库的内存区AL TER TABLE 表名CACHE;AL TER TABLE 表名NOCACHE;3.DROP (删除表, 索引, 视图, 同义词, 过程, 函数, 数据库链接等)删除表和它所有的约束条件DROP TABLE 表名CASCADE CONSTRAINTS;4.TRUNCATE (清空表里的所有记录, 保留表的结构)TRUNCATE 表名;三.查询语句(SELECT) 部分SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE 条件;字段名可以带入函数例如: COUNT(*), MIN(字段名), MAX(字段名), AVG(字段名), DISTINCT(字段名), TO_CHAR(DATE字段名,'YYYY-MM-DD HH24:MI:SS')NVL(EXPR1, EXPR2)函数解释:IF EXPR1=NULLRETURN EXPR2ELSERETURN EXPR1DECODE(AA﹐V1﹐R1﹐V2﹐R2....)函数解释:IF AA=V1 THEN RETURN R1IF AA=V2 THEN RETURN R2..…ELSERETURN NULLLPAD(char1,n,char2)函数解释:字符char1按制定的位数n显示,不足的位数用char2字符串替换左边的空位字段名之间可以进行算术运算例如: (字段名1*字段名1)/3查询语句可以嵌套例如: SELECT …… FROM(SELECT …… FROM表名1, [表名2, ……] WHERE 条件) WHERE 条件2;两个查询语句的结果可以做集合操作例如: 并集UNION(去掉重复记录), 并集UNION ALL(不去掉重复记录), 差集MINUS, 交集INTERSECT分组查询SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] GROUP BY字段名1[HAVING 条件] ;两个以上表之间的连接查询SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE表名1.字段名= 表名2. 字段名[ AND ……] ;SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE表名1.字段名= 表名2. 字段名(+) [ AND ……] ;有(+)号的字段位置自动补空值查询结果集的排序操作, 默认的排序是升序ASC, 降序是DESCSELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……]ORDER BY字段名1, 字段名2 DESC;字符串模糊比较的方法INSTR(字段名, ‘字符串’)>0字段名LIKE ‘字符串%’[‘%字符串%’]每个表都有一个隐含的字段ROWID, 它标记着记录的唯一性.四.ORACLE里常用的数据对象 (SCHEMA)1.索引(INDEX)CREATE INDEX 索引名ON 表名( 字段1, [字段2, ……] );AL TER INDEX 索引名REBUILD;一个表的索引最好不要超过三个(特殊的大表除外), 最好用单字段索引, 结合SQL语句的分析执行情况, 也可以建立多字段的组合索引和基于函数的索引ORACLE8.1.7字符串可以索引的最大长度为1578 单字节ORACLE8.0.6字符串可以索引的最大长度为758 单字节2.视图(VIEW)CREATE VIEW 视图名AS SELECT …. FROM …..;AL TER VIEW视图名COMPILE;视图仅是一个SQL查询语句, 它可以把表之间复杂的关系简洁化.3.同义词(SYNONMY)CREATE SYNONYM同义词名FOR 表名;CREATE SYNONYM同义词名FOR 表名@数据库链接名;4.数据库链接(DATABASE LINK)CREATE DATABASE LINK数据库链接名CONNECT TO 用户名IDENTIFIED BY 密码USING ‘数据库连接字符串’;数据库连接字符串可以用NET8 EASY CONFIG或者直接修改TNSNAMES.ORA里定义.数据库参数global_name=true时要求数据库链接名称跟远端数据库名称一样数据库全局名称可以用以下命令查出SELECT * FROM GLOBAL_NAME;查询远端数据库里的表SELECT …… FROM 表名@数据库链接名;五.权限管理(DCL) 语句1.GRANT 赋于权限常用的系统权限集合有以下三个:CONNECT(基本的连接), RESOURCE(程序开发), DBA(数据库管理)常用的数据对象权限有以下五个:ALL ON 数据对象名, SELECT ON 数据对象名, UPDATE ON 数据对象名, DELETE ON 数据对象名, INSER T ON 数据对象名, AL TER ON 数据对象名GRANT CONNECT, RESOURCE TO 用户名;GRANT SELECT ON 表名 TO 用户名;GRANT SELECT, INSERT, DELETE ON表名 TO 用户名1, 用户名2;2.REVOKE 回收权限REVOKE CONNECT, RESOURCE FROM 用户名;REVOKE SELECT ON 表名FROM 用户名;REVOKE SELECT, INSERT, DELETE ON表名FROM 用户名1, 用户名2;查询数据库中第63号错误:select orgaddr,destaddr from sm_histable0116 where error_code='63';查询数据库中开户用户最大提交和最大下发数:select MSISDN,TCOS,OCOS from ms_usertable;查询数据库中各种错误代码的总和:select error_code,count(*) from sm_histable0513 group by error_code orderby error_code;查询报表数据库中话单统计种类查询。
常用oracle数据库命令
1. 启动Oracle数据库
$ sqlplus /nolog
SQL> connect / as sysdba
SQL> startup
3. 创建表空间
创建表空间的命令是:
SQL> create tablespace 表空间名 datafile '路径名' size 大小;
6. 创建用户
7. 删除用户
删除用户的命令是:
8. 授权用户
SQL> grant 权限 to 用户名;
9. 撤销用户的权限
11. 查看表结构
查看表结构的命令是:
SQL> desc 表名;
SQL> create table 表名 (列名数据类型, 列名数据类型, …);
13. 删除表
14. 插入数据
插入数据的命令是:
SQL> update 表名 set 列名=新值 where 某条件;
18. 创建索引
20. 查看索引
21. 查询相关信息
查询相关信息的命令是:
SQL> select * from v$session; -- 查看会话 22. 查看数据库版本
24. 备份数据库
$ exp 用户名/密码 file=备份文件路径备注:以上命令均需要在Oracle登录后进行。
oracle+mybatisx常用语句1.插入数据:使用INSERT INTO语句来插入数据到表中。
拓展:可以使用INSERT INTO ... SELECT语句将一张表的数据插入到另一张表中。
2.更新数据:使用UPDATE语句来更新表中的数据。
拓展:可以使用UPDATE ... JOIN语句来更新两张表之间的关联数据。
3.删除数据:使用DELETE语句来删除表中的数据。
拓展:可以使用DELETE ... JOIN语句来删除两张表之间的关联数据。
4.查询数据:使用SELECT语句来查询表中的数据。
拓展:可以使用SELECT ... FROM多个表来进行多表查询,并使用JOIN关键字来连接表。
5.条件查询:使用WHERE子句来筛选查询结果。
拓展:可以使用AND、OR、IN、BETWEEN等逻辑运算符来组合条件查询。
6.排序查询:使用ORDER BY子句来按照指定的字段排序查询结果。
拓展:可以使用DESC关键字来进行降序排序。
7.分页查询:使用LIMIT子句来限制查询结果的数量。
拓展:可以使用OFFSET关键字来指定查询结果的偏移量,实现分页功能。
8.聚合查询:使用GROUP BY子句来按照指定的字段进行分组,并使用聚合函数如COUNT、SUM、AVG等来计算分组数据。
拓展:可以使用HAVING子句来筛选聚合结果。
9.连接查询:使用JOIN关键字来连接多个表。
拓展:可以使用INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN等不同类型的连接来满足不同的需求。
10.子查询:在SELECT语句中嵌套另一个SELECT语句进行查询。
拓展:可以使用子查询来解决复杂查询问题,如在WHERE子句中使用子查询进行条件筛选。
这些是Oracle和MyBatisX中常用的语句,它们可以用来进行数据操作,灵活运用这些语句可以满足各种复杂的数据查询和更新需求。
oracle登录语句1. 使用Oracle登录语句Oracle是一种常用的关系型数据库管理系统,登录到Oracle数据库需要使用合适的登录语句。
以下是一些常见的Oracle登录语句:1) 使用用户名和密码登录:```sqlplus 用户名/密码@数据库实例名```其中,用户名是登录Oracle数据库的用户名,密码是对应的密码,数据库实例名是Oracle数据库的实例名。
2) 使用用户名和密码登录,指定连接端口:```sqlplus 用户名/密码@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=T CP)(HOST=主机名或IP)(PORT=端口号)))(CONNECT_DATA=(SID=数据库实例名)))```其中,主机名或IP是Oracle数据库所在的主机名或IP地址,端口号是Oracle数据库监听程序的端口号。
3) 使用用户名和密码登录,指定连接服务名:```sqlplus 用户名/密码@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=T CP)(HOST=主机名或IP)(PORT=端口号)))(CONNECT_DATA=(SERVICE_NAME=服务名)))```其中,主机名或IP是Oracle数据库所在的主机名或IP地址,端口号是Oracle数据库监听程序的端口号,服务名是Oracle数据库的服务名。
4) 使用用户名和密码登录,指定连接SID:```sqlplus 用户名/密码@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=T CP)(HOST=主机名或IP)(PORT=端口号)))(CONNECT_DATA=(SID=数据库实例名)))```其中,主机名或IP是Oracle数据库所在的主机名或IP地址,端口号是Oracle数据库监听程序的端口号,数据库实例名是Oracle数据库的实例名。
Oracle常⽤命令⼤全(很有⽤,做笔记)⼀、ORACLE的启动和关闭1、在单机环境下要想启动或关闭ORACLE系统必须⾸先切换到ORACLE⽤户,如下su - oraclea、启动ORACLE系统oracle>svrmgrlSVRMGR>connect internalSVRMGR>startupSVRMGR>quitb、关闭ORACLE系统oracle>svrmgrlSVRMGR>connect internalSVRMGR>shutdownSVRMGR>quit启动oracle9i数据库命令:$ sqlplus /nologSQL*Plus: Release 9.2.0.1.0 - Production on Fri Oct 31 13:53:53 2003Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.SQL> connect / as sysdbaConnected to an idle instance.SQL> startup^CSQL> startupORACLE instance started.2、在双机环境下要想启动或关闭ORACLE系统必须⾸先切换到root⽤户,如下su - roota、启动ORACLE系统hareg -y oracleb、关闭ORACLE系统hareg -n oracleOracle数据库有哪⼏种启动⽅式说明:有以下⼏种启动⽅式:1、startup nomount⾮安装启动,这种⽅式启动下可执⾏:重建控制⽂件、重建数据库读取init.ora⽂件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora⽂件。
2、startup mount dbname安装启动,这种⽅式启动下可执⾏:数据库⽇志归档、数据库介质恢复、使数据⽂件联机或脱机,重新定位数据⽂件、重做⽇志⽂件。
Oracle数据库语句大全一.入门部分1.创建表空间create tablespace schooltbs datafile ‘D:\oracle\datasource\schooltbs.dbf’ size 10M autoextend on;2.删除表空间drop tablespace schooltbs[including contents and datafiles];3.查询表空间基本信息select *||tablespace_name from DBA_TABLESPACES;4.创建用户create user lihuaidentified by lihuadefault tablespace schooltbstemporary tablespace temp;5.更改用户alter user lihuaidentified by 123default tablespace users;6.锁定用户alter user lihua account lock|unlock;7.删除用户drop user lihua cascade;--删除用户模式8.oracle数据库中的角色connect,dba,select_catalog_role,delete_catalog_role,execute_catalo g_role,exp_full_database,imp_full_database,resource9.授予连接服务器的角色grant connect to lihua;10.授予使用表空间的角色grant resource to lihua with grant option;--该用户也有授权的权限11.授予操作表的权限grant select,insert on user_tbl to scott;--当前用户grant delete,update on er_tbl to scott;--系统管理员二.SQL查询和SQL函数1.SQl支持的命令:数据定义语言(DDL):create,alter,drop数据操纵语言(DML):insert,delete,update,select数据控制语言(DCL):grant,revoke事务控制语言(TCL):commit,savepoint,rollback2.Oracle数据类型字符,数值,日期,RAW,LOB字符型char:1-2000字节的定长字符varchar2:1-4000字节的变长字符long:2GB的变长字符注意:一个表中最多可有一列为long型Long列不能定义唯一约束或主键约束long列上不能创建索引过程或存储过程不能接受long类型的参数。
oracle常用语法Oracle是一种广泛使用的关系型数据库管理系统,它被广泛使用于企业级应用程序和其他高效数据处理方案中。
在使用Oracle时,需要掌握一些常用的语法和技巧,才能更轻松地处理数据。
下面我们来介绍一些常用的Oracle语法。
1. SELECT语句SELECT语句是Oracle中最常用的语句之一,它用于从表中检索数据。
SELECT语句的基本语法如下:SELECT column1, column2, …, columnN FROM table_name;其中,column1, column2, …, columnN是需要检索的列名,table_name是需要从中检索数据的表名。
可以使用通配符(*)来检索所有列。
2. WHERE语句WHERE语句用于从表中选择满足指定条件的行。
它的基本语法如下:SELECT column1, column2, …, columnN FROM table_name WHERE condition;其中,condition是指定的条件,可以使用比较运算符(>、<、=、>=、<=、<>)和逻辑运算符(AND、OR、NOT)来连接多个条件。
例如:SELECT * FROM employees WHERE salary > 50000 AND department = 'Sales';此语句将从employees表中选择薪资大于50000且所在部门为“Sales”的员工。
3. ORDER BY语句ORDER BY语句用于按照指定的列对检索结果进行排序。
它的基本语法如下:SELECT column1, column2, …, columnN FROM table_name ORDER BY column1 [ASC|DESC];其中,ASC表示按升序排列,DESC表示按降序排列。
例如:SELECT * FROM employees ORDER BY salary DESC;此语句将从employees表中选择所有员工,并按薪资从高到低进行排序。
Oracle 常用语句
--导入前清空用户表数据
SELECT 'TRUNCATE TABLE '|| table_name || ';' FROM USER_TABLES ORDER BY TABLE_NAME;
--尽可能使用expdp和impdp进行导入导出,并指定tablespaces参数确定导入的表空间
----查看导出目录
select * from dba_directories;
----创建导出目录
create directory dpdata as 'E:\dpdata';
----查看目录权限
SELECT privilege, directory_name, DIRECTORY_PATH FROM user_tab_privs t, all_directories d
WHERE t.table_name(+) = d.directory_name ORDER BY 2, 1;
----给用户授权读写导出目录
grant read,write on directory dpdata to sdemis3_t;
----导出
expdp sdemis3_t/oracle9i@emis directory=dpdata dumpfile=sdemis3_t.dmp schemas=sdemis3_t
----导入
impdp sdemis3_t/oracle9i@emis directory=dpdata dumpfile=sdemis3_t.dmp remap_tablespace=system:eastar,users:eastar remap_schema=fromuser:touser
----!如果用户之前不存在,则需要重置用户密码
-- 查找未设置主键的表并增加主键。
表中没有ID列的不增加
with pk as (
select table_name from user_constraints where constraint_type='P'--PK_SB_COUNT_ID
),pkcol as (
select table_name,column_name from user_tab_columns where column_name='ID'
)
select case when column_name is null then '--表'||t.table_name||'没有ID列,请手动进行创建'
else 'alter table '||t.table_name||' add constraint PK_'
|| case when length(t.table_name)<=30-(4+length('ID')) then t.table_name||'_'||column_name
when length(t.table_name)<=27 then t.table_name
else substr(t.table_name,0,27) end
||' primary key ('||column_name||');' end sql
from user_tables t
left join pk on t.table_name=pk.table_name
left join pkcol on t.TABLE_NAME=pkcol.table_name
where pk.table_name is null;
--导入现场数据库需要执行的语句
----删除日志表
truncate table base_log;
----删除一年前的流程表
delete from BASE_FLOWLOG t where t.requesttime < sysdate -360;
----更新所有用户密码为123456
update JC_COMACCOUNT t set
password='10O71O21O26O7O78O99O58O183O182O190O214O170O183O36O171O189O220O211O37O15O128O160O107O198 O18O162O51O169O7O128O81O1O242O68O27O91O41O38O229O76O232O172O140O251O192O116O187O122O86O116O136O 48O72O125O240O149O145O219O225O103O232O0O246O' where password is not null and userid<>'admin' and userid
<>'administrator';
--统一修改用户配置文件:密码永不过期
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
--删除用户
SELECT 'alter system kill session ' || '''' ||t.sid ||','||t.SERIAL#|| '''' FROM v$session t WHERE ERNAME='SDEMIS3';
drop user sdemis3_1 cascade;
--获取最近执行的SQL语句
SELECT sql_text, last_load_time FROM v$sql WHERE last_load_time IS NOT NULL ORDER BY last_load_time DESC ;。