文档库 最新最全的文档下载
当前位置:文档库 › Oracle基础语法_操作语句

Oracle基础语法_操作语句

Oracle基础语法_操作语句
Oracle基础语法_操作语句

Oracle基础语法_操作语句

一、数据控制语句 (DML) 部分

(一)INSERT (往数据表里插入记录的语句)

INSERT INTO 表名(字段名1, 字段名2, ……) VALUES ( 值1, 值2, ……);

INSERT INTO 表名(字段名1, 字段名2, ……) SELECT (字段名1, 字段名2, ……) FROM 另外的表名;

注意:

1.字符串类型的字段值必须用单引号括起来,例如: ‘GOOD DAY’,如果字段值里包含

单引号’需要进行字符串转换,我们把它替换成两个单引号’’。

问题:插入表的字段值含有’’如何转换之后插进去

2.字符串类型的字段值超过定义的长度会出错, 最好在插入前进行长度校验。

3.日期字段的字段值可以用当前数据库的系统时间SYSDATE, 精确到秒或者用字符串转换成日期型函数TO_DATE(‘2001-08-01’,’YYYY-MM-DD’),TO_DATE()还有很多种日期格式, 可以参看ORACLE DOC。年-月-日小时:分钟:秒的格式YYYY-MM-DD HH24:MI:SS

4.INSERT时最大可操作的字符串长度小于等于4000个单字节, 如果要插入更长的字符串, 请考虑字段用CLOB类型,(有时候报错就是插入的数值太长的原因),方法借用ORACLE 里自带的DBMS_LOB程序包。

5.INSERT时如果要用到从1开始自动增长的序列号, 应该先建立一个序列号CREATE SEQUENCE 序列号的名称 (最好是表名+序列号标记) INCREMENT BY 1 START WITH 1 ,MAXVALUE 99999 CYCLE NOCACHE,其中最大的值按字段的长度来定, 如果定义的自动增长的序列号 NUMBER(6) , 最大值为

999999。INSERT 语句插入这个字段值为: 序列号的名称.NEXTVAL

(二)DELETE (删除数据表里记录的语句)

DELETE FROM表名 WHERE 条件;

注意:

1.删除记录并不能释放ORACLE里被占用的数据块表空间. 它只把那些被删除的数据块标成unused。

2.如果确实要删除一个大表里的全部记录, 可以用 TRUNCATE 命令, 它可以释放占用的数据块表空间。TRUNCATE TABLE 表名; 此操作不可回退。

(三)UPDATE (修改数据表里记录的语句)

UPDATE表名 SET 字段名1=值1, 字段名2=值2, …… WHERE 条件;

注意:

1.如果修改的值N没有赋值或定义时, 将把原来的记录内容清为NULL, 最好在修改前进行非空校验;

2.值N超过定义的长度会出错, 最好在插入前进行长度校验。

(四)注意事项

A. 以上SQL语句对表都加上了行级锁,确认完成后, 必须加上事物处理结束的命令 COMMIT 才能正式生效,否则改变不一定写入数据库里。如果想撤回这些操作, 可以用命令 ROLLBACK 复原。

B. 在运行INSERT, DELETE 和 UPDATE 语句前最好估算一下可能操作的记录范围,应该把它限定在较小 (一万条记录) 范围内,否则ORACLE处理这个事物用到很大的回退段。程序响应慢甚至失去响应. 如果记录数上十万以上这些操作, 可以把这些SQL语句分段分次完成,其间加上COMMIT 确认事物处理。

二、数据定义 (DDL) 部分

(一)CREATE (创建表, 索引, 视图, 同义词, 过程, 函数, 数据库链接等) ORACLE常用的字段类型有:

CHAR 固定长度的字符串

VARCHAR2 可变长度的字符串

NUMBER(M,N) 数字型;M是位数总长度, N是小数的长度、DATE 日期类型

注意:

1.创建表时要把较小的不为空的字段放在前面, 可能为空的字段放在后面

2.创建表时可以用中文的字段名, 但最好还是用英文的字段名

3.创建表时可以给字段加上默认值, 例如 DEFAULT SYSDATE,这样每次插入和修改时, 不用程序操作这个字段都能得到动作的时间。

4.创建表时可以给字段加上约束条件,例如:不允许重复 UNIQUE, 关键字 PRIMARY KEY (二)ALTER (改变表, 索引, 视图等)

1.改变表的名称

ALTER T ABLE 表名1 TO 表名2;

2.在表的后面增加一个字段

ALTER T ABLE表名 ADD 字段名字段名描述;

3.修改表里字段的定义描述

ALTER T ABLE表名 MODIFY字段名字段名描述;

4.给表里的字段加上约束条件

ALTER T ABLE 表名 ADD CONSTRAINT 约束名 PRIMARY KEY (字段名);

ALTER T ABLE 表名 ADD CONSTRAINT 约束名 UNIQUE (字段名);

5.把表放在或取出数据库的内存区

ALTER T ABLE 表名 CACHE;

ALTER T ABLE 表名 NOCACHE;

(三)DROP (删除表, 索引, 视图, 同义词, 过程, 函数, 数据库链接等)

删除表和它所有的约束条件

DROP TABLE 表名 CASCADE CONSTRAINTS;

(四)TRUNCATE (清空表里的所有记录, 保留表的结构) TRUNCATE 表名;

三、查询语句 (SELECT) 部分

SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE 条件;

字段名可以带入函数

例如: COUNT(*), MIN(字段名), MAX(字段名), AVG(字段名), DISTINCT(字段名), TO_CHAR(DATE字段名,’YYYY-MM-DD HH24:MI:SS’)

1.NVL(EXPR1, EXPR2)函数

解释:

IF EXPR1=NULL

RETURN EXPR2

ELSE

RETURN EXPR1

DECODE(AA﹐V1﹐R1﹐V2﹐R2....)函数

解释:

IF AA=V1 THEN RETURN R1

IF AA=V2 THEN RETURN R2

..…

ELSE

RETURN NULL

2.LPAD(char1,n,char2)函数

解释:

字符char1按制定的位数n显示,不足的位数用char2字符串替换左边的空位

3.字段名之间可以进行算术运算

例如: (字段名1*字段名1)/3

4.查询语句可以嵌套

例如:

SELECT …… FROM

(SELECT …… FROM表名1, [表名2, ……] WHERE 条件) WHERE 条件2;

两个查询语句的结果可以做集合操作

例如: 并集UNION(去掉重复记录), 并集UNION ALL(不去掉重复记录), 差集MINUS, 交集INTERSECT

5.分组查询

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, 降序是DESC

SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] ORDER BY字段名1, 字段名2 DESC;

字符串模糊比较的方法

INSTR(字段名, ‘字符串’)>0

字段名 LIKE ‘字符串%’[‘%字符串%’]

每个表都有一个隐含的字段ROWID, 它标记着记录的唯一性.

四、ORACLE里常用的数据对象 (SCHEMA)

(一)索引 (INDEX)

CREATE INDEX 索引名ON 表名 ( 字段1, [字段2, ……] );

ALTER INDEX 索引名 REBUILD;

1.索引的概念:

(1)类似书的目录结构

(2)Oracle 的“索引”对象,与表关联的可选对象,提高SQL查询语句的速度

(3)索引直接指向包含所查询值的行的位置,减少磁盘I/O

(4)与所索引的表是相互独立的物理结构

(5)Oracle 自动使用并维护索引,插入、删除、更新表后,自动更新索引

一个表的索引最好不要超过三个 (特殊的大表除外), 最好用单字段索引, 结合SQL语句的分析执行情况, 也可以建立多字段的组合索引和基于函数的索引

2.唯一索引

(1)何时创建:当某列任意两行的值都不相同

(2)当建立Primary Key(主键)或者Unique constraint(唯一约束)时,唯一索引将被自动建立

(3)语法:CREATE UNIQUE INDEX index ON table (column);

3.组合索引

(1)何时创建:当两个或多个列经常一起出现在where条件中时,则在这些列上同时创建组合索引

(2)组合索引中列的顺序是任意的,也无需相邻。但是建议将最频繁访问的列放在列表的最前面

(3)语法:CREATE INDEX index on table(column[, column]...);

4.位图索引

(1)何时创建:列中有非常多的重复的值时候。例如某列保存了“性别”信息,Where 条件中包含了很多OR操作符。较少的update操作,因为要相应的跟新所有的bitmap (2)结构:位图索引使用位图作为键值,对于表中的每一数据行位图包含了TRUE(1)、FALSE(0)、或NULL值。

(3)优点:位图以一种压缩格式存放,因此占用的磁盘空间比标准索引要小得多

(4)语法:CREATE BITMAP INDEX index ON table (column[, column]...);

5.基于函数的索引

(1)何时创建:在WHERE条件语句中包含函数或者表达式时

(2)函数包括:算数表达式、PL/SQL函数、程序包函数、SQL函数、用户自定义函数。(3)语法:CREATE INDEX index ON table (FUNCTION(column));

(二)视图 (VIEW)

CREATE VIEW 视图名AS SELECT ….. FROM …..;

ALTER VIEW视图名 COMPILE;

视图仅是一个SQL查询语句, 它可以把表之间复杂的关系简洁化。

1.视图的特点

(1)集中用户感兴趣的数据,通常用户只是对表中的某一部分数据感兴趣, 对其他的数据不是那么敏感, 所以用户通过视图就可以操纵自己所需的数据。对于开发人员来说, 也可以屏蔽一些数据。

(2)掩码数据库的复杂性,通过视图机制将数据库设计的复杂性与用户屏蔽分开, 这样用户通过视图的操作就可以达到简化对数据库的复杂操作。

(3)简化用户的权限,由于视图只是基表的逻辑表, 所以通过视图可以将视图的权限和基表权限分离。

(4)重组数据,视图可以来自多个基表,从而可以利用视图对数据进行进一步地分析。

2.视图可以由以下任意一项组成

(1)一个基表的任意子集

(2)两个或两个以上的基表的合集

(3)两个或两个以上基表的交集

(4)一个或者多个基表运算的结果集合

(5)另一个视图的子集

3.创建视图的基本语法

CREATE [OR REPLACE] [FORCE] [NOFORCE]VIEW view_name [(column_name)[,….n]] AS Select_statement

[WITH CHECK OPTION[CONSTRAINT constraint_name]]

[WITH READ ONLY]

字段说明:

view_name : 视图的名字

column_name: 视图中的列名

在下列情况下, 必须指定视图列的名称:A.由算术表达式, 系统内置函数或者常量得到的列;B.共享同一个表名连接得到的列;C.希望视图中的列名与表中的列名不同的时候REPLACE: 如果创建视图时, 已经存在此视图, 则重新创建此视图, 相当于覆盖FORCE: 强制创建视图,无论的视图所依赖的基表否存在或是否有权限创建NOFORCE: 只有基表存在且具有创建视图权限时, 才可以创建视图

WITH CHECK OPTION 指出在视图上所进行的修改都要符合select_statement 所指定的限制条件

WITH READ ONLY 只允许查看视图

4.视图的定义原则:

(1)视图的查询可以使用复杂的SELECT 语法,包括连接/ 分组查询和子查询

(2)在没有WITH CHECK OPTION 和READ ONLY 的情况下,查询中不能使用ORDER BY 子句

(3)如果没有为CHECK OPTION 约束命名,系统会自动为之命名,形式为SYS_Cn (4)OR REPLACE 选项可以不删除原视图便可更改其定义并重建,或重新授予对象权限。

5.视图操作操作:

视图分为简单视图( 基于单个基表, 且不包含函数和数据分组操作) 和复杂视图( 基于多个基表或视图).

简单视图可以通过视图修改数据,这些修改包括插入数据、更新数据和删除数据,但是对于复杂视图来说,通过视图修改数据必须满足一定的规则。

在视图定义中没有设定READ ONLY 的前提下, 如果视图包含了下面的内容, 那么不能通过视图删除表中的数据。

分组函数, 如SUM,AVG,MIN,MAX 等、GROUP BY 子句、包含了表达式

ROWNUM 伪列

插入数据时, 除了满足上面的条件外, 还需要保证那些没有包含在视图定义中的基表的列必须允许空值。如果在视图定义中还包含了WITH CHECK OPTION 子句, 那么对视图的修改除了前面的那些原则外, 还必须满足指定的约束条件。

(1)查询视图: 可依赖于多个基表.

SELECT *FROM view_name; /* 类似于查询表数据*/

(2)更新视图的前提:

没有使用连接函数, 集合运算和组函数。创建视图的select 语句中没有集合函数且没有GROUP BY,ONNECT BY ,START WITH 子句及DISTINCT 关键字,创建视图的SELECT 语句中不包含从基表列通过计算所得的列,创建视图没有包含只读属性。

(3)插入数据

INSERT INTO view_name VALUES();

(4)修改数据:

UPDATE view_name SET …

若一个视图依赖于多个基本表, 则一次修改该视图只能修改一个基本表的数据.

(5)删除数据:

Delete from view_name where …

同样, 当视图依赖多个基表时, 不能使用此语句来删除基表中的数据. 只能删除依赖一个基表的数据。

(6)修改视图定义:

所有相关的权限都依然存在. 语法同创建视图相同.

(7)删除视图:

DROP VIEW view_name;

只有视图所有者和具备DROP VIEW 权限的用户可以删除视图。

删除视图的定义不影响基表中的数据,视图被删除后,基于被删除视图的其他视图或应用将无效。

(三)同义词 (SYNONMY)

CREATE SYNONYM同义词名FOR 表名;

CREATE SYNONYM同义词名FOR 表名@数据库链接名;

相当于alias(别名),例如:

user1.table1在用户账户user2中建一个同义词table1

create synonym table1 for user1.table1;

在user2中查select * from table1时就相当于查select * from user1.table1;

在oracle中对用户的管理是使用权限的方式来管理的,也就是说,如果我们想使用数据库,我们就必须得有权限,但是如果是别人将权限授予我们,我们也是能对数据库进行操作的,但是我们必须要已授权的表的名称前键入该表所有者的名称,所以这就是比较麻烦的,遇到这种情况,我们该怎么办呢?创建个同义词,这样我们就可以直接使用同义词来使用表了。(四)数据库链接 (DATABASE LINK)

CREATE DAT ABASE LINK数据库链接名CONNECT TO 用户名 IDENTIFIED BY 密

码 USING ‘数据库连接字符串’;

数据库连接字符串可以用NET8 EASY CONFIG或者直接修改TNSNAMES.ORA里定义. 数据库参数global_name=true时要求数据库链接名称跟远端数据库名称一样

数据库全局名称可以用以下命令查出

SELECT * FROM GLOBAL_NAME;

查询远端数据库里的表

SELECT …… FROM 表名@数据库链接名;

五、权限管理 (DCL) 语句

(一)GRANT 赋于权限

常用的系统权限集合有以下三个:

CONNECT(基本的连接), RESOURCE(程序开发), DBA(数据库管理)

常用的数据对象权限有以下五个:

ALL ON 数据对象名, SELECT ON 数据对象名, UPDATE ON 数据对象名,DELETE ON 数据对象名, INSERT ON 数据对象名, ALTER ON 数据对象名

GRANT CONNECT, RESOURCE TO 用户名;

GRANT SELECT ON 表名 TO 用户名;

GRANT SELECT, INSERT, DELETE ON表名 TO 用户名1, 用户名2;

(二)REVOKE 回收权限

REVOKE CONNECT, RESOURCE FROM 用户名;

REVOKE SELECT ON 表名 FROM 用户名;

REVOKE SELECT, INSERT, DELETE ON表名 FROM 用户名1, 用户名2;

ORACLE常用SQL语句大全

ORACLE常用SQL语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC 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 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 tablename

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….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、创建视图:create view viewname as select statement 删除视图:drop view viewname 10、几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1 求和:select sum(field1) as sumvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1 最小:select min(field1) as minvalue from table1 11、几个高级查询运算词 A:UNION 运算符 UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。 B:EXCEPT 运算符 EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。 C:INTERSECT 运算符 INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。 注:使用运算词的几个查询结果行必须是一致的。 12、使用外连接

oracle中常用函数大全

oracle中常用函数大全 1、数值型常用函数 函数返回值样例显示 ceil(n) 大于或等于数值n的最小整数select ceil(10.6) from dual; 11 floor(n) 小于等于数值n的最大整数select ceil(10.6) from dual; 10 mod(m,n) m除以n的余数,若n=0,则返回m select mod(7,5) from dual; 2 power(m,n) m的n次方select power(3,2) from dual; 9 round(n,m) 将n四舍五入,保留小数点后m位select round(1234.5678,2) from dual; 1234.57 sign(n) 若n=0,则返回0,否则,n>0,则返回1,n<0,则返回-1 select sign(12) from dual; 1 sqrt(n) n的平方根select sqrt(25) from dual ; 5 2、常用字符函数 initcap(char) 把每个字符串的第一个字符换成大写select initicap('mr.ecop') from dual; Mr.Ecop lower(char) 整个字符串换成小写select lower('MR.ecop') from dual; mr.ecop replace(char,str1,str2) 字符串中所有str1换成str2 select replace('Scott','s','Boy') from dual; Boycott substr(char,m,n) 取出从m字符开始的n个字符的子串select substr('ABCDEF',2,2) from dual; CD length(char) 求字符串的长度select length('ACD') from dual; 3 || 并置运算符select 'ABCD'||'EFGH' from dual; ABCDEFGH 3、日期型函数 sysdate当前日期和时间select sysdate from dual;

oracle常用权限语句

oracle 用户创建及权限设置 权限: create session create table unlimited tablespace connect resource dba 例: #sqlplus /nolog SQL> conn / as sysdba; SQL>create user username identified by password SQL> grant dba to username; SQL> conn username/password SQL> select * from user_sys_privs; 我们将从创建 Oracle 用户权限表开始谈起,然后讲解登陆等一般性动作,使大家对 Oracle 用户权限表有个深入的了解。 一、创建 sys;//系统管理员,拥有最高权限 system;//本地管理员,次高权限 scott;//普通用户,密码默认为tiger,默认未解锁 二、登陆sqlplus / as sysdba;// 登陆sys帐户sqlplus sys as sysdba;// 同上 sqlplus scott/tiger;//登陆普通用户scott sqlplus sys as sysdba;//同上 sqlplus scott/tiger;//登陆普通用户scott 三、管理用户 create user zhangsan;//在管理员帐户下,创建用户zhangsan alter user scott identified by tiger;//修改密码

四,授予权限 1、默认的普通用户scott默认未解锁,不能进行那个使用,新建的用户也没有任何权限,必须授予权限 /*管理员授权*/ grant create session to zhangsan;//授予zhangsan用户创建session的权限,即登陆权限 grant unlimited session to zhangsan;//授予zhangsan用户使用表空间的权限 grant create table to zhangsan;//授予创建表的权限 grante drop table to zhangsan;//授予删除表的权限 grant insert table to zhangsan;//插入表的权限 grant update table to zhangsan;//修改表的权限 grant all to public;//这条比较重要,授予所有权限(all)给所有用户(public) 2、oralce对权限管理比较严谨,普通用户之间也是默认不能互相访问的,需要互相授权 /*oralce对权限管理比较严谨,普通用户之间也是默认不能互相访问的*/ grant select on tablename to zhangsan;//授予zhangsan用户查看指定表的权限 grant drop on tablename to zhangsan;//授予删除表的权限 grant insert on tablename to zhangsan;//授予插入的权限 grant update on tablename to zhangsan;//授予修改表的权限 grant insert(id) on tablename to zhangsan; grant update(id) on tablename to zhangsan;//授予对指定表特定字段的插入和修改权限,注意,只能是insert和update grant alert all table to zhangsan;//授予zhangsan用户alert任意表的权限 五、撤销权限 基本语法同grant,关键字为revoke 六、查看权限 select * from user_sys_privs;//查看当前用户所有权限 select * from user_tab_privs;//查看所用用户对表的权限 七、操作表的用户的表 /*需要在表名前加上用户名,如下*/ select * from zhangsan.tablename 八、权限传递 即用户A将权限授予B,B可以将操作的权限再授予C,命令如下: grant alert table on tablename to zhangsan with admin option;//关键字 with admin option grant alert table on tablename to zhangsan with grant option;//关键字 with grant option效果和admin类似 九、角色 角色即权限的集合,可以把一个角色授予给用户 create role myrole;//创建角色

Oracle-基本建表语句

--创建用户 create user han identified by han default tablespace users Temporary TABLESPACE Temp; grant connect,resource,dba to han; //授予用户han开发人员的权利 --------------------对表的操作-------------------------- 创建表格语法: create table 表名( 字段名1 字段类型(长度) 是否为空, 字段名2 字段类型是否为空 ); -增加主键 alter table 表名 add constraint 主键名 primary key (字段名1); -增加外键: alter table 表名 add constraint 外键名 foreign key (字段名1) references 关联表 (字段名2); 在建立表格时就指定主键和外键 create table T_STU ( STU_ID char(5) not null, STU_NAME varchar2(8) not null, constraint PK_T_STU primary key (STU_ID) ); 主键和外键一起建立: create table T_SCORE ( EXAM_SCORE number(5,2),

EXAM_DATE date, AUTOID number(10) not null, STU_ID char(5), SUB_ID char(3), constraint PK_T_SCORE primary key (AUTOID), constraint FK_T_SCORE_REFE foreign key (STU_ID) references T_STU (STU_ID) ) --创建表 create table classes( id number(9) not null primary key, classname varchar2(40) not null ) --查询表 select * from classes; --删除表 drop table students; --修改表的名称 rename alist_table_copy to alist_table; --显示表结构 describe test --不对没查到 -----------------------对字段的操作 ----------------------------------- --增加列 alter table test add address varchar2(40); --删除列 alter table test drop column address; --修改列的名称 alter table test modify address addresses varchar(40; --修改列的属性 alter table test modi

Oracle基本语法

Oracle的历史 ?Oracle 公司( 甲骨文) 创始人: Larry Ellison 32岁,公司提供数据库服务. ?公司成立于1977 年, 83 年公司更名为Oracle ,原名为”软件开发实验室”. ?Oracle 数据库适用于大型企业 ?竞争对手 –微软的SQLServer –IBM 的DB2 ?目前的版本 – 2.0~7.0 , 8.0 , 8i , 9i , 10g Oracle的服务: 我的电脑右键选择管理--服务和应用程序—服务 -----是数据库或例程的系统标识符 ------是Oracle主目录名称 这几个服务之间的关系: 启动顺序:1、OracleTNSListener必须启动 2、OracleServer必须启动 3、OracleDBConsole启动依赖于OracleServer SqlPlus SqlPlus是Oracle任何版本都自带的数据库操作工具,使用它可以完成大部分的数据库操作。 SqlPlus可以“开始→程序→Oracle”启动,也可以命令行启动(互动) 1.命令行启动sqlPlus sqlplus 用户名/密码@orcl

或 sqlplus 用户名@orcl 如果用户是管理员要在sqlplus 用户名/密码@主机字符串as sysdba “/”是用户名和密码分隔符号 “@”是密码和数据库的分隔符号 “orcl”是数据库的名称,在安装时指定 常用命令(互动) connect 切换用户 show user 显示当前用户 set linesize 1000 设置行显示长度 set pagesize 1000 设置分页长度 desc dept 查看表结构 select table_name from user_tables 查询当前用户的表 / 运行上一条SQL语句 clear screen 清除屏幕 edit 编辑 spool d:/a 保存输出结果到某个位置 spool off 保存结束 quit 退出 list 查看最后一条语句 @ 文件名.sql 运行外部文件中的SQL语句

Oracle查询语句基本命令一

oracle查询语句大全--基本命令大全一 1.create user username identified by password;//建用户名和密码oracle ,oracle 2.grant connect,resource,dba to username;//授权grant connect,resource,dba,sysdba to username; 3.connect username/password//进入。 4.select table_name,column_name from user_tab_columns where table_name='mview_log';//查询表中的表名,字段名等等。 5. 如何执行脚本SQL文件? SQL>@PATH/filename.sql; 6.Oracle oledb 提供者在command中执行多条SQL语句与SQL SERVER有少许差别,SQL Server只需使用";"分割多条SQL语句,而Oracle需要遵守ORACLE调用规范,即除分号分割外,还需以begin /end;包围语句体. 使用C#描述应如下所示: https://www.wendangku.net/doc/8a14461203.html,mandText = "begin INSERT INTO GROUP_INFO (GROUP_ID, GROUP_NAME) V ALUES (1, \'2\'); INSERT INTO GROUP_INFO(GROUP_ID, GROUP_NAME) V ALUES (2, \'2\'); end;"; 7.查询用户下的表的信息select distinct table_name from user_tab_columns; 8.如何搜索出前N条记录?Select a.*,rownum from (select * from cardkind order by cardkind ) a where rownum show user 3、查看系统拥有哪些用户SQL> select * from all_users; 4、新建用户并授权 SQL> create user a identified by a;(默认建在SYSTEM表空间下) SQL> grant connect,resource to a; 5、连接到新用户SQL> conn a/a

oracle 经典SQL语句大全

一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC 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:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加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 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1

Oracle常用的45个查询语句

日期/时间 相关查询 1、获取当前月份的第一天 运行这个命令能快速返回当前月份的第一天。你可以用任何的日期值替换 “SYSDATE”来指定查询的日期。 1 SELECT TRUNC (SYSDATE, 'MONTH') "First day of current month " 2 FROM DUAL; 2、获取当前月份的最后一天 这个查询语句类似于上面那个语句,而且充分照顾到了闰年,所以当二月份有 29 号,那么就会返回 29/2 。你可以用任何的日期值替换 “SYSDATE”来指定查询的日期。 view source print? 1 SELECT TRUNC (LAST_DAY (SYSDATE)) "Last day of current mont h" 2 FROM DUAL; 3、获取当前年份的第一天 每年的第一天都是1 月1日,这个查询语句可以使用在存储过程中,需要对当前年份第一天做一些计算的时候。你可以用任何的日期值替换 “SYSDATE”来指定查询的日期。 1 SELECT TRUNC (SYSDATE, 'YEAR') "Year First Day" FROM DUAL; 4、获取当前年份的最后一天 类似于上面的查询语句。你可以用任何的日期值替换 “SYSDATE”来指定查询的日期。 view source print? 1 SELECT ADD_MONTHS (TRUNC (SYSDATE, 'YEAR'), 12) - 1 "Year Last Day" FROM DUAL 5、 获取当前月份的天数 这个语句非常有用,可以计算出当前月份的天数。你可以用任何的日期值替换 “SYSDATE”来指定查询的日期。 view source print? 1 SELECT CAST (TO_CHAR (LAST_DAY (SYSDATE), 'dd') AS INT) num ber_of_days 2 FROM DUAL; 6、获取当前月份剩下的天数 下面的语句用来计算当前月份剩下的天数。你可以用任何的日期值替换 “SYSDATE”来指定查询的日期。 1 SELECT SYSDATE, 2 LAST_DAY (SYSDATE) "Last",

ORACLE 11g SELECT 语句基础语法

一、SELECT语句基础语法 SELECT [ALL |DISTINCT TOP N [PERCENT] WITH TIES SELECT_LIST #SELECT 子句,用于指定由查询返回的列。 [INTO [new_table_name]] #INTO子句,将检索结果存储到新表或视图中。 FROM {table_name|view_name} [(optimizer_hints)],... #FROM子句,用于指定引用的表或视图,需指定多个表或视图,用“,”分开即可。[WHERE search_condition] #WHERE子句,用于指定限制返回的行的搜索条件,若无此子句,则默认表中的所有行都满足条件。 [GROUP BY group_by_expression] #GROUP BY子句,指定用来放置输出行的组,并且如果SELECT子句中