Oracle常用语句
- 格式:docx
- 大小:20.07 KB
- 文档页数:5
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 条件判断语句
Oracle 条件判断语句的主要有:
1、IF语句:IF语句就是判断某个条件是否成立,根据条件的不同而
做出不同的处理。
例如:IFx>0THENy:=x;。
2、Case语句:Case语句可根据表达式的不同值或变量,做出不同的
处理,一般为控制语句.
例如:select CASE x WHEN 1 THEN 'A' WHEN 2 THEN 'B' ELSE 'C' END from table;。
3、Exists语句:Exists语句用于判断某个表达式的查询结果是否存在。
例如:SELECT * FROM table WHERE EXISTS(SELECT x FROM table WHERE x > 0);。
4、In语句:In语句是判断一个表达式是否存在于某个集合内。
例如:SELECT * FROM table WHERE x IN (1,2,3);。
5、Between语句:Between语句是判断一个表达式是否在某个范围内。
例如:SELECT * FROM table WHERE x BETWEEN 1 AND 10;。
Oracle常用DDL语句一、表空间管理CREATE [BIGFILE|SMALLFILE] [TEMPORARY] TABLESPACE tablespace name -- 表空间名字DATAFILE datafile spec | TEMPORARYFILE tempfile spec -- 数据文件/临时文件说明[MINIMUM EXTENT minimum extent size] -- 最小扩展空间[[BLOCKSIZE blocksize] DEFAULT STORAGE (defalut storage clause)] -- (锁空间大小)默认存储子句[LOGGING | NOLOGGING] -- 有无日志[FORCE LOGGING] -- 强制日志[ONLINE | OFFLINE] -- 在线/不在线[EXTENT MANAGEMENT DICTIONARY | LOCAL [AUTOALLOCATE | UNIFORM SIZE size]] -- 扩展管理字典/本地(自动定位/统一大小)[SEGMENT SPACE MANAGEMENT MANUAL | AUTO] -- 管理extent中的block(设置为自动最佳)[FLASHBACK ON|OFF] -- 删除文件是否可找回1、1、创建永久表空间例:CREATE TABLESPACE MYTABLESPACE LOGGINGDATAFILE'D:\oracle\product\10.1.0\oradata\MYDB\MYTABLESPACE.DBF' SIZE 10M REUSEAUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITEDEXTENT MANAGEMENT LOCAL1、2、创建临时表空间例:CREATE TEMPORARY TABLESPACE MYTEMP LOGGINGTEMPFILE'D:\oracle\product\10.1.0\oradata\MYDB\MYTEMP.DBF' SIZE 10M REUSEAUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITEDEXTENT MANAGEMENT LOCAL更改默认临时表空间alter database default temporary tablespace TEMP2;1、3 删除表空间1)强行删除表空间,包括数据文件drop tablespace mytemp including contents and datafiles cascade constraints2)表空间内无任何对象时才能删除drop tablespace mytemp1.4 为表空间增加文件alter tablespace users add datafile 'd:\oracle\oradata\....\users02.dbf' size 10m;1.5 默认临时表空间在创建用户时,如果没有指定临时表空间,则会使用系统表空间作为临时表空间,如果指定了默认临时表空间,则在未指定临时表空间的情况下使用默认的临时表空间。
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数据库是一种强大的关系型数据库管理系统,可用于数据存储和管理。
在开发和维护Oracle数据库时,时间查询是一个非常常见且必要的需求,下文将介绍关于Oracle数据库时间查询的一些常用语句。
一、获取当前日期和时间我们可以使用系统函数SYSDATE获取当前日期和时间,例如:SELECT SYSDATE FROM DUAL;此语句将输出当前日期和时间的值,DUAL是Oracle数据库的一个虚拟表。
二、获取日期时间差针对某一特定时间,获取与当前时间的差值,我们可以使用以下语句:SELECT SYSDATE - hiredate FROM employees WHERE employee_id = 100;此语句将输出雇员100的入职时间与当前时间的差值。
三、日期格式化输出我们可以使用TO_CHAR函数将日期时间以特定的格式进行输出,例如:SELECT TO_CHAR(SYSDATE, 'YY-MM-DD HH24:MI:SS') FROM DUAL;此语句将输出当前日期和时间的值,并按照YY-MM-DD HH24:MI:SS格式进行输出。
四、时间戳查询我们可以使用TIMESTAMP数据类型来查询包含具体时间的记录,例如:SELECT * FROM employee_log WHERE log_time = TIMESTAMP '2022-02-22 08:30:00';此语句将查询employee_log表中记录时间为2022-02-22 08:30:00的记录。
五、时间函数Oracle数据库中还有许多其他有用的时间函数,如ADD_MONTHS、MONTHS_BETWEEN、LAST_DAY等,可用于获取日期的不同部分或计算两个日期之间的差值。
例如:SELECT ADD_MONTHS(SYSDATE, 3) FROM DUAL;此语句将输出当前日期加上3个月的值。
Oracle常用语句:添加新的列:alter table table_name add column_name column_type;删除列:alter table table_name drop column column_name;重新命名列:alter table table_name rename column column_name to column_new_name;更新数据:update table table_name set column_name = column_value where condition;更改数据类型:alter table table_name modify column_type column_new_type;删除主键:alter table table_name drop constraint constraint_name;alter table table_name drop primary key;添加主键:alter table table_name add constraint constraint_name primary key (column_name);建立序列(sequence):CREATE SEQUENCE emp_sequenceINCREMENT BY 1 -- 每次加几个START WITH 1 -- 从1开始计数NOMAXvalue -- 不设置最大值NOCYCLE -- 一直累加,不循环CACHE 10; --设置缓存cache个序列,sequence_name.CURRVAL; ——当前值sequence_name.NEXTVAL; ——下一个值,第一次使用NEXTVAL返回的是初始值更改序列:ALTER SEQUENCE emp_sequenceINCREMENT BY 10MAXvalue 10000CYCLE -- 到10000后从头开始NOCACHE ;删除序列:drop sequence sequence_name;index:create index index_name on table_name(column);check约束:alter table table_name add constraint constraint_name check(price < 10.0);unique约束:alter table table_name add constraint constraint_name unique(column_name);注:unique约束不允许相同值,但允许多次出现null删除约束:alter table table_name drop constraint constraint_name;not null约束:alter table table_name add constraint constraint_name check( column_name is not null);null约束:alter table table_name add constraint constraint_name check( column_name is null);主键约束:alter table table_name add constraint constraint_name primary key( column_namet,…);参照完整性约束:alter table table_name add constraint constraint_name foreign key ( data_table_column_name ) references on lookup_table_name(lookup_table_column_name);create table table_name (column1 column1_type,…, foreign key(column_name) references lookup_table_name(loopup_table_column));create table table_name (column column_type, ..., column column_type references lookup_table_name (loopup_table_column)); -- 也可以省略foreign key直接写在列后约束中create table table_name (column1 column1_type,…, constraint constraint_name references lookup_table_name(loopup_table_column)); -- 带约束名字注:✧子表只能插入父表(查找表、引用表)中的已有的数据,否则只能插入null;✧如果采用alter建立外键时子类中含有父表没有的数据,则建立外键失败;✧建立参照约束后,默认的删除选项为restrict,如果想删除父表中的数据,可以在建立约束时使用set null 或cascade选项;✧建立外键约束后,父表中不能随便采用update更新数据,除非子表中没有该数据,如果需要更新数据,只能先删除后插入新的数据;alter table table_name add constraint constraint_name foreign key (data_table_column) references lookup_table_name (lookup_table_column) on delete set null;注:参照完整性约束可以用在同一个表,比如employee_id 和manager_id;也可以用在多个列上,但查找表的列必须是主键或是满足唯一性约束的列;创建视图:create or replace view view_name as select column, col+col as new column from xx;——视图可以防止行函数输入出错,并简便输入动作数字函数:mod(); -- 取余abs();ceil();floor();round() ——舍入到指定精度,带四舍五入,例:round(3.4567,2) = 3.46trunk() ——舍入到指定精度,不带四舍五入,例:trunc(3.4567,2) = 3.45文本函数:concat(str,str) 或||substr(str,begin_index,length) - - substr(‘sunflower’,4,3)replace(old_str,to_be_replaced_str,replace_str) - - replace(‘ABCABC’,’AB’,’12’) →’12C12C ’rpad(str,end_index,char) - - rpad(‘DOG’,10,’*-’) →‘DOG*-*-*-*’lpad(str,end_index,char) - - lpad(‘DOG’,10,’*-’) →‘*-*-*-*DOG’soundex(str) - - 寻找类似字符串(可能拼写不同),where soundex(name)=soundex(‘John’) upper(str)lower(str)initcap(str) - - 首字母大写ltrim(str) - - 移除左边空格rtrim(str) - - 移除右边空格trim(str) - - 移除左右空格length(str) - - 统计文本中字符串中的字符数instr(str1,str2) - - str2出现在str1中的位置;注:oracle中字符位置从1开始日期函数:date + number - - 返回新的datedate - number - - 返回新的datedate - date - - 返回date间隔天数extract(str) - - extract(day|month|year from time) 从指定时间获取数据next_day(TIME,WEEK) - - 返回指定星期几的下一天last_day(TIME) - - 返回指定日期当月的最后一天的日期add_months(TIME,number) - - 给指定日期加上时间months_between(TIME,TIME) - - 返回日期之间月数to_date(str,format) - - 用format形式创建一个日期注:to_char(date,format) - - 用format创建一个字符串to_number(str, format) - - 用format创建一个数字用户标识:user - - select user from dual;日期标识:sysdate - - 当前日期systimestamp - - 当前日期+ 时间Null值函数:nvl(null,value) - - 更换null的值为valuenvl2(null,value1,value2) - - 当不为null时值为value1,为null时值为value2提取值:greatest(value1,value2,…) - - 从列表中选择最大值least(value1,value2,…) - - 从列表中选择最小值聚合函数:max()min()count()count(distinct column)sum()avg()stddev() - - 标准差variance() - - 方差数据汇总:group by - - 需要和聚合函数一起使用having 子句- - 筛选汇总数据内连接:两个或多个表的select连接,并不认为两个null是相等的,因此会删除where子句采用=判断时的两个表中含有null的行左外连接:包含内连接时从第一个表中删除的所有行,只保留第二个表中匹配的行select a.*,b.* from tablea a left outer join tableb b on a.id=b.id order by xx;右外连接:包含内连接时从第二个表中删除的所有行,只保留第一个表中匹配的行select a.*,b.* from tablea a right outer join tableb b on a.id=b.id order by xx;全外连接:包含两个表中的所有行select a.*,b.* from tablea a full outer join tableb b on a.id=b.id order by xx;Or: select a.*,b.* from tablea a left outer join tableb b on a.id=b.id unionselect a.*,b.* from tablea a right outer join tableb b on a.id=b.id ;union:合并带有相同行结构的查询结果,将删除重复的行,如果两个查询结果地行结构不同,则显示第一个查询结果的行结构(这样就包含了两个查询结果种的相同列数据);select * from t1 union select * from t2;union中只能包含一个order by子句,放在最后。