当前位置:首页 » 数据仓库 » oracle数据库基本语法
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

oracle数据库基本语法

发布时间: 2022-09-26 11:06:56

1. Oracle数据库存储过程怎么写

Oracle存储过程基本语法:

sql">CREATEORREPLACEPROCEDURE存储过程名
IS
BEGIN
NULL;
END;

解释:

行1:
CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程, 如果存在就覆盖它;
行2:
IS关键词表明后面将跟随一个PL/SQL体。
行3:
BEGIN关键词表明PL/SQL体的开始。
行4:
NULL PL/SQL语句表明什么事都不做,这句不能删去,因为PL/SQL体中至少需要有一句;
行5:
END关键词表明PL/SQL体的结束。


2. 谁知道Oracle数据库存储过程的语法

oracle
存储过程
的基本语法
1.基本结构
CREATE
OR
REPLACE
PROCEDURE
存储过程名字
(
参数1
IN
NUMBER,
参数2
IN
NUMBER
)
IS
变量1
INTEGER
:=0;
变量2
DATE;
BEGIN
END
存储过程名字
2.SELECT
INTO
STATEMENT
将select查询的结果存入到变量中,可以同时将多个
列存储
多个变量中,必须有一条
记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND)
例子:
BEGIN
SELECT
col1,col2
into
变量1,变量2
FROM
typestruct
where
xxx;
EXCEPTION
WHEN
NO_DATA_FOUND
THEN
xxxx;
END;
...
3.IF
判断
IF
V_TEST=1
THEN
BEGIN
do
something
END;
END
IF;
4.while
循环
WHILE
V_TEST=1
LOOP
BEGIN
XXXX
END;
END
LOOP;
5.变量赋值
V_TEST
:=
123;
6.用for
in
使用cursor
...
IS
CURSOR
cur
IS
SELECT
*
FROM
xxx;
BEGIN
FOR
cur_result
in
cur
LOOP
BEGIN
V_SUM
:=cur_result.列名1+cur_result.列名2
END;
END
LOOP;
END;
7.带参数的cursor
CURSOR
C_USER(C_ID
NUMBER)
IS
SELECT
NAME
FROM
USER
WHERE
TYPEID=C_ID;
OPEN
C_USER(
变量值
);
LOOP
FETCH
C_USER
INTO
V_NAME;
EXIT
FETCH
C_USER%NOTFOUND;
do
something
END
LOOP;
CLOSE
C_USER;
8.用pl/sql
developer
debug
连接数据库后建立一个Test
WINDOW
在窗口输入调用SP的代码,F9开始debug,CTRL+N单步调试
参考
http://www.cnblogs.com/happyday56/archive/2007/07/05/806830.html

3. ORACLE数据库 查询表名 查询列名 查询列中所有数据的语法分别是

1.查询所有表的表名: select table_name from user_tables
解释:从系统表user_tables中可以查找出所有的表名字。
2.查询表中的所有列名:desc table tablename(表名)。
解释:通过desc (描述)tablename即可查找出表中的所有字段。
3.查询所有数据:select * from tablename t。
解释:通过select 命令可以从tablename 中查找出所有的表数据。

4. Oracle的存储过程基本语法和hibernate调用其存储过程

在oracle中,可以在数据库中定义子程序,这种程序块叫存储过程(procere),它存放在数据字典中,可以在不同用户和应用程序中共享,并可以实现程序的优化和重用。 2:存储过程的有点?? 过程运行在服务器端,执行速度快? 过程执行一次后代码就驻留在高速缓存中,在以后的操作中,直接调用缓存数据。? 确保数据库的安全性,可以不授权用户直接访问应用程序中的一些表,而是授权用户执行访问数据库的过程。? 自动完成需要预先执行的任务,过程可以在系统启动时自动运行。、 3:存储过程的创建和执行用户存储过程只能定义在当前数据库中,可以使用sql语句或OEM创建。默认情况下,用户创建的存储过程归登录数据库的用户所拥有,DBA可以把许可授权给其他用户。 Sql命令创建存储过程 CREATE procere 过程名【(parameter parameter_mode date_type,….n)】 IS| AS BEGIN SQL_STATEMENT END 过程名其中 Parameter表示过程的参数。 parameter_mode:参数的类型,过程参数和函数参数一样,有三种类型IN,OUT,IN OUT IN 表示参数是输入给过程的。 OUT表示采纳数载过程中被赋值,可以传给过程的外部。 IN OUT表示可以传内,可以传外。 调用存储过程直接输入存储过程的名字可以执行一个已经定义的存储过程。 存储过程的编辑修改修改存储过程虽然可以和修改视图一样,用ALTER procere,但是他是用来重新编译和验证用的,如果要修改过程定义,建议还是用create or replace。 存储过程的删除当某个过程不再需要的时候,应该将其从内存中删除,以释放它占用的资源。 Drop procere 存储过程名。 Drop procere update_info. 触发器触发器(trigger)是一些过程,与表联系紧密,用于保护表中的数据,当一个基表被修改时,触发器自动就会执行。例如出入其可以实现多个表间数据的一致性和完整性。一般情况下,对表数据的操作有增删查改,维护数据的触发器也可以分为多种,每张基表最多可以建立12个触发器。 1:Before insert 2:before insert fo each row; 3:after inert 4:after insert for each row 5:before update 6:before update for each row 7:after update 8:after update for each row; 9:before delete; 10:before delete for each row 11:after delete 12:after delete for each row. 利用sql语句创建触发器语法规则 Create or replace trigger 触发器名 {before| after| instead of} {delete 【or insert】【or update】【of column ….n 】} On 表名|视图名【for each row 】[]where condition]] Sql_statement[,,,n] 参数说明 Instead of :指定在创建替代触发器。 Of column 指定在哪些列上进行触发。。。创建触发器的限制 1:触发器中有效的语句可以包括DML语句,但是不能包括DDL,rollback,commit ,savepoint都不适用。

5. oracle数据库的基本语法与SQL一样吗

sql语句基本相同,各厂商有自己新加语句,相似功能不同实现方法,所以某些语句有不同。

6. Oracle数据库语法

创建表空间语法:
CREATE TABLESPACE TABLESPACE_NAME
DATAFILE '数据文件全名'
SIZE 数据文件初始长度;
例子:
CREATE TABLESPACE DATASPACETEST
DATAFILE
'D:\oracle\proct\10.2.0\oradata\orcl\data01.DBF'
SIZE 2000M;
删除表空间语法:
DROP TABLESPACE TABLESPACE_NAME;
如:DROP TABLESPACE DATASPACETEST;
将表空间联机语句:
ALTER TABLESPACE TABLESPACE_NAME ONLINE;
将表空间脱机语句:
ALTER TABLESPACE TABLESPACE_NAME OFFLINE NORMAL;
创建用户语法:
create user user_name
identified by "user_name"
default tablespace tablespace_name
temporary tablespace TEMP
profile DEFAULT;
例子:
create user HR
identified by "HR"
default tablespace DATASPACETEST
temporary tablespace TEMP
profile DEFAULT;
删除用户语法:
DROP USER USER_NAME CASCADE;
其中CASCADE表示级联,即删除用户之前先删除用户所拥有的实体.
例子:
DROP USER HR CASCADE;

DESCRIBE < 对象名 >, 这个语法是描述查看对象的结构
例如:查看某表的结构DESC TABLE_NAME(DESC是DESCRIBE的简写);

下面分析你那创建表空间时的错误:
首先你要确定你原先已经创建过News.dbf此数据文件,
否则是不可以使用REUSE重用语法,
第二,NEXT10M这个NEXT与10M中间要空格.
这样就可以了,我已经帮你测试过了
SQL> CREATE TABLESPACE "News"
2 DATAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\HCPDEMO\test01.dbf' SIZE 50M
3 AUTOEXTEND ON NEXT 10M MAXSIZE 100M
4 ONLINE
5 LOGGING;

Tablespace created

7. oracle 基本语法

DECLARE
X NUMBER := 10;
Y VARCHAR(20) := '10';
BEGIN
FOR I IN 1 .. 10 LOOP
INSERT INTO T1_TEST2 VALUES (X, '数据');
X := X + I;
END LOOP;
--为什么加了y varchar(20):='10';就报错呢
END;

肯定不会报错,不过oracle中一般用varchar2,而不是varchar,当然这样用不会报错。
只不过insert后应该有commit才严谨。

8. Oracle的语法什么

oracle是没有语法什么的,你说的那个叫 t-sql 这种语言是跟java和c#是不能拿来比较的. 比如你说的赋值 在t-sql中赋值可以是用 :: 来实现, 而且可以赋值 type类型,就是游标了. 还有for循环 loop . 虽然也是叫循环,但这个 for loop 只能在支持t-sql引擎的数据库中(如oracle,微软sql)进行数据循环处理,而不能做其他事情. java的循环,可以循环操作对象,新版的jdk还增强了for循环, C#的for循环也跟java一样

9. oracle基本语法

查询语句-select * from table;
select * from table where 条件1=数值 and 条件2=数值;
select * from table where id in (select id from table);两表关联
select a.a,b.b,c.c from table1 a,table2 b,table3 c where a.id1=b.id2;
插入语句-insert into table (字段1,字段2,字段3,……)
values (数值1,数值2,数值3,……);
更新语句-update 表名 set 数值 where=id = 1;

添加列语句-alter table 表名
add (列名1 类型1,列名2 类型2,列名3 类型3,……);

查询随机20条记录-select * from( select * from emp order by dbms_random.value) where rownum <= 10;
修改列类型-alter table 表名
modify (列名1 类型1,列名2 类型2,列名3 类型3,……);
删除列语句-alter table 表名
drop column 列名s;
显示查询时间-set timing on;

删除表语句-deltet table 表名;

清空表数据-truncate table 表名;

修改列名 - ALTER TABLE emp RENAME COLUMN comm TO newa;

集合查询(无重复):select * from table_name union
select * from table_name;
集合查询(有重复):select * from table_name union all
select * from table_name;
差 集 查 询:select * from table_name minus
select * from table_name;

--------------------------------------------------------------------------------
运行脚本-start d:\文件名.sql;

编辑脚本-edit d:\文件名.sql;

另存为脚本-spool d:\文件.sql;
select * from emp;
spool off;

分页显示-set pagesize 页数;

行数显示-set linesize 行数;

创建用户-create user 用户名 identified by 密码;(需要SYS/SYSTEM权限才能建立用户)
赋予权限-grant resource to 用户名;(建表权限)
赋予查询权限-grant select on emp to 用户名;
赋予修改权限-grant update on emp to 用户名;
赋予所有访问权限-grant all on emp to 用户名;
--------------------------------------------------------
收回查询权限-revoke select on emp from 用户名;
传递权限-grant select on emp to 用户名2 with grant option;
账户锁定-
creata profile 名称 limit failed_login_attcmpts 输入次数限制 password_lock_time 锁定天数;
------------------------------DBA权限登录
alter user 想要锁定的用户名 profile 名称;
------------------------------DBA权限登录
解锁用户锁定-alter user 用户名 account unlock;
定期修改密码-create profile 名字 limit password_life_time 天数 password_grace_time 宽限天数;

切换用户-conn system/密码;
更改密码-password 用户名;
删除用户-drop user 用户名 cascade(删除用户及用户建立的所有表);

查询同样结构两表中的不同数据-select * from emp_tmp where empno not in(select empno from emp);

select * from v$session;
select * from v$version;

定义函数:
---------函数说明 函数是计算数字平方;
FUNCTION y2
(inx2 number)
return number is
Result number(2);
begin

Result := inx2*inx2;

return(Result);
end y2;

---------函数说明 函数是输入汉字然后输出拼音;
FUNCTION HZ
(inputStr in VARCHAR2)
RETURN VARCHAR2 iS
outputStr varchar2(10);
BEGIN
SELECT c_spell INTO outputStr FROM BASE$CHINESE WHERE C_WORD = inputStr;
RETURN outputStr;
END hz;
----------函数说明 函数是计算累加自然月;
FUNCTION month
(inmonth number,
inaddmonth number)
return varchar2 is
Result varchar2(6);
begin

Result :=substr(to_char(add_months(to_date(inmonth,'yyyymm'),inaddmonth),'yyyymmdd'),1,6);

return(Result);
end month;

select to_char(add_months(trunc(sysdate),-1),'yyyymmdd') from al;--取上个月的日期;
select to_char((sysdate-30),'yyyymmdd') from al; ---去当前日期前30天日期;

ORACLE 随机数
DBMS_RANDOM.VALUE(low IN NUMBER,high IN NUMBER) RETURN NUMBER;
select round(dbms_random.value(x,x)) from al;

ORACLE 取当前时间并按毫秒计算
select systimestamp from al;

10. Oracle数据库的语法求大神帮助理解下。

查询ID和parentid 和menuname ,并且同时在ID和parentid后面拼接上‘M’,且在拼接后的字段重命名为 ID,parentid
解释:as 为重命名 (可以省略不写)
|| 为拼接,(如: ‘a'||'b' 结果为:‘ab’)