搜档网
当前位置:搜档网 › oracle视图创建删除代码

oracle视图创建删除代码

oracle视图创建删除代码
oracle视图创建删除代码

oracle视图创建删除代码

创建Oracle视图需要CREAE VIEW系统权限,视图的创建语法如下:

CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW 视图名[(别名1[,别名2...])]

AS 子查询

[WITH CHECK OPTION [CONSTRAINT 约束名]]

[WITH READ ONLY]

其中:

OR REPLACE 表示替代已经存在的视图。

FORCE表示不管基表是否存在,创建视图。

NOFORCE表示只有基表存在时,才创建视图,是默认值。

别名是为子查询中选中的列新定义的名字,替代查询表中原有的列名。

子查询是一个用于定义视图的SELECT查询语句,可以包含连接、分组及子查询。

WITH CHECK OPTION表示进行视图插入或修改时必须满足子查询的约束条件。后面的约束名是该约束条件的名字。

WITH READ ONLY 表示视图是只读的。

删除视图的语法如下:

DROP VIEW 视图名;

删除视图者需要是视图的建立者或者拥有DROP ANY VIEW权限。视图的删除不影响基表,不会丢失数据。

oracle系统表和视图说明

1.视图的概述 视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据。视图将一个查询的结果作为一个表来使用,因此视图可以被看作是存储的查询或一个虚拟表。视图来源于表,所有对视图数据的修改最终都会被反映到视图的基表中,这些修改必须服从基表的完整性约束,并同样会触发定义在基表上的触发器。(Oracle支持在视图上显式的定义触发器和定义一些逻辑约束) 2.视图的存储 与表不同,视图不会要求分配存储空间,视图中也不会包含实际的数据。视图只是定义了一个查询,视图中的数据是从基表中获取,这些数据在视图被引用时动态的生成。由于视图基于数据库中的其他对象,因此一个视图只需要占用数据字典中保存其定义的空间,而无需额外的存储空间。 3.视图的作用 用户可以通过视图以不同形式来显示基表中的数据,视图的强大之处在于它能够根据不同用户的需要来对基表中的数据进行整理。视图常见的用途如下: 通过视图可以设定允许用户访问的列和数据行,从而为表提供了额外的安全控制 隐藏数据复杂性 视图中可以使用连接(join),用多个表中相关的列构成一个新的数据集。此视图就对用户隐藏了数据来源于多个表的事实。 简化用户的SQL 语句 用户使用视图就可从多个表中查询信息,而无需了解这些表是如何连接的。 以不同的角度来显示基表中的数据 视图的列名可以被任意改变,而不会影响此视图的基表 使应用程序不会受基表定义改变的影响 在一个视图的定义中查询了一个包含4 个数据列的基表中的3 列。当基表中添加了新的列后,由于视图的定义并没有被影响,因此使用此视图的应用程序也不会被影响。 保存复杂查询 一个查询可能会对表数据进行复杂的计算。用户将这个查询保存为视图之后,每次进行类似计算只需查询此视图即可。

Oracle__插入数据

Oracle 插入数据 插入数据就是将数据放置到已经创建的表中,Oracle 数据库是通过INSERT 语句来实现插入数据的。一般情况下,使用INSERT 语句可以一次插入一行数据。 与SELECT 语句相比,INSERT 语句的使用方式要简单的多。在INSERT 语句的使用方式中,最为常用的形式是在INSERT INTO 子句中指定添加数据的列,并在V ALUES 子句中为各个列提供一个值。 下面语句将向SCOTT 模式中的EMP 表添加一条记录: SQL> insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) 2 values(7995,'A TG','CLERK',7782,to_date('2007-9-23','yyyy-mm-dd'),1300,null,10); 已创建 1 行。。 在向表中所有列添加数据时,可以省略INSERT INTO 子句后的列表清单,使用这种方法时,必须根据表中定义的列的顺序,为所有的列提供数据,用户可以使用DESC 命令查看表中定义列的顺序。下面的INSERT 语句在向EMP 表添加记录时省略了列清单: SQL> desc emp SQL> insert into emp 2 values(7996,'LI','CLERK',7782,to_date('2006-5-12','yyyy-mm-dd'),1200,null,10); 已创建 1 行。 在插入操作过程中,用户也可以根据实际情况只为部分列提供数据,而省略某些列的数据。注意这些列必须允许空值、有默认值或系统可以自动成生值等。例如,在EMP 表中,除EMPNO 列不允许空值外,其他列都可以为空值。 如果某个列不允许NULL 值存在,而用户没有为该列提供数据,则会因为违反相应的约束而插入失败。事实上,在定义表的时候为了数据的完整性,经常会为表添加许多约束。例如,在EMP 表中为了保证表中每条记录的惟一性,在表的EMPNO 列上定义了主键约束。如果用户试图为表中的EMPNO 列添加一个重复值,则因为违反主键约束而失败: SQL> insert into emp(empno,ename,job) 2 values(7782,'KING','CLERK'); insert into emp(empno,ename,job) * 第 1 行出现错误: ORA-00001: 违反唯一约束条件 (SCOTT.PK_EMP) 注 意 使用这种方法插入数据时有一个大隐患,如果为表指定的数值位置不对, 并且指定的数据类型之间可以转化,则执行该语句时系统不会返回任何错误信息。但是这会为该表添加一条错误的记录。由于这种错误难以发现,所以在添 加记录时最好在INSERT INTO 子句中指定列清单,以明确接收数据的列。

Oracle创建视图

Oracle创建视图 在本练习中,将在HR模式中练习如何创建视图,查询视图的定义,并对视图进行更新。 (1)创建一个视图EMPLOYEES_IT,该视图是基于HR模式中的EMPLOYEES表,并且该视图只包括那些部门为IT的员工信息。在创建视图时使用WITH CHECK OPTION,防止更新视图时,输入非IT部门的员工信息。 create or replace view employees_it as select * from employees where department_id =( select department_id from departments where departments.department_name='IT') with check option; (2)创建一个联接视图EMP_DEPT,它包含EMPLOYEES表中的列和DEPARTMENTS 表中的DNAME列。 create or replace view emp_dept as select t1.employee_id,t1.first_name,https://www.sodocs.net/doc/5d1791203.html,st_name,t1.email, t1.phone_number,t1.hire_date,t1.job_id,t1.salary,t2.department_name from employees t1,departments t2 where t1.department_id=t2.department_id with check option; (3)Oracle针对创建的视图,只在数据字典中存储其定义。输入并执行如下的语句查看创建的视图定义: select text from user_views where view_name=UPPER('emp_dept'); (4)查看视图各个列是否允许更新。 col owner format a20 col table_name format a20 col column_name format a20 select * from user_updatable_columns where table_name=UPPER('emp_dept');

oracle数据库的5种约束类型

oracle 数据库的 5 种约束类型 oracle 数据库数据表的 5 个约束类型: 1.主键约束 2.外键约束 3.唯一约束 4.检查约束 5. 非空约束 F 主键约束:用来唯一标示表中的一个列, 一个表中的主键约束只能有一个,但是可以在一个主键约束 中包含多个列,也称为联合约束。外键约束:用来约束两 个表中列之间的关系。唯一约束:用来唯一标示表中的 列。与主键约束不同的是,在一个数据表中可以有多个唯一约束。检查约束:用来约束表中列的输入值得范围,比如 在输入性别时,要求数据库中只能输入男或者女,就可以使用检查约束来约束该列。非空约束:约束该列一定要输入值。 ----- 创建一个带检查约束的表:使用PL/SQL 语句创建检查约束的语法如下所示:CONSTRAINT constraint_name CHECK(condition) [ 语法说明:] CONSTRAINT: 关键词constraint_name: 约束名称condition: 约束条件列如:创建BOOKINFO 表时,给图书 价格加上一个检查约束,要求图书价格在10 元到100 元之间。CREATE TABLE BOOKINFO ( BOOKID

INT, BOOKNAME CAHR, PUBLISH

char, publish varchar2(20), pubdate varchar2(20), CHECK(PRICE>=10 AND PRICE ----- 创建一个带非空约束的表: 举例 :在创建 BOOKINFO 表时,给图书名称加上一个非空约束。 CREATE TABLE BOOKINFO ( BOOKID INT NOT NULL, BOOKNAME CHAR NOT NULL, PUBLISH PUBDATE VARCHAR2(20), AUTHOR CHAR, STORE ----- 创建一个带唯一约束的表 语法格式: CONSTRAINT constraint_name UNIQUE(column_name) 【语法说明】 UNIQUE: 唯一约束的关键词 column_name: 唯一约束的名称。 举例 :创建 BOOKINFO 表时,为图书名称( BOOKNAME )列添加唯一约束 create table bookinfo ( bookid int, bookname PRICE DECIMAL, AUTHOR CHAR, STORE VARCHAR2(1), READER INT, REMARKS VARCHAR2(50), CONSTRAINT CK_PRICE ); VARCHAR2(20), PRICE DECIMAL, VARCHAR2(1), VARCHAR2(50) READER INT, REMAERKS );

oracle题1

A. DECLARE ? B. SET ? C. UPDATE ? D. SELECT o 2. 能计算出一列中所有数的总和的函数是_____。【2.0分】 ? A. COUNT ? B. SUM ? C. AVG ? D. SQRT o 3. ORACLE中,用来判断列值是否为空的操作符是_____。【2.0分】? A. = NULL ? B. IS NULL ?

C. AS NULL ? D. NULLIS o 4. 分析以下SQL 命令: SELECT price FROM inventory WHERE price BETWEEN 1 AND 50 AND (price IN(55, 30, 95); 命令执行后的最可能的输出结果是_____。【2.0分】 ? A. 55 ? B. 30 ? C. 95 ? D. 51 o 5. Oracle中,当需要使用显式游标更新游标中的行时,声明游标时指定的SELECT语句必须带有_____子句。【2.0分】 ? A. WHERE CURRENT OF ? B. INTO ? C. FOR UPDATE ? D. ORDER BY

o 6. 当执行SELECT INTO语句没有返回行时,会触发_______异常。【2.0分】? A. TOO_MANY_ROWS ? B. NO_DATA_FOUND ? C. VALUE_ERROR ? D. 不会触发任何异常 o7. 下面哪一个like命令会返回名字像HOTKA的行?【2.0分】 ? A. where ename like …_HOT%' ? B. where ename like …H_T%' ? C. where ename like …%TKA_' ? D. where ename like …%TOK%' o8. 以下运算结果不为空值的是______。【2.0分】 ? A. 12+NULL ? B. 60*NULL ?

oracle创建表与增删改

-- 数据准备:创建工资等级表 CREATE TABLE salgrade_test ( grade NUMBER (2), lowsal NUMBER (7, 2), hisal NUMBER (7, 2) ); -- 查看工资等级表结构 DESC salgrade; -- 查看工资等级表数据 SELECT * FROM salgrade_test; -- 插入数据 INSERT INTO salgrade_test VALUES (1, 10001, 99999); INSERT INTO salgrade_test VALUES (2, 8001, 10000); INSERT INTO salgrade_test VALUES (3, 6001, 8000); INSERT INTO salgrade_test VALUES (4, 4001, 6000); INSERT INTO salgrade_test VALUES (5, 1, 4000); -- 计算员工的薪水等级 SELECT NAME, salary, grade FROM emp_test, salgrade_test WHERE emp_test.salary BETWEEN salgrade_test.lowsal AND salgrade_test.hisal; -- ------------------------------------------------------SELECT NAME, salary, grade FROM emp_test

FULL JOIN salgrade_test ON emp_test.salary BETWEEN salgrade_test.lowsal AND salgrade_test.hisal; -- 复制表:只复制结构 , 不复制数据 CREATE TABLE salgrade_copy AS ( SELECT * FROM salgrade_test WHERE 1 <> 1 ); SELECT * FROM salgrade_copy; -- 复制表:复制一部分数据----通过设置别名的方式 , 指定新表中的列名(year_sal) CREATE TABLE emp_test_copy AS ( SELECT emp_id, NAME, salary * 12 year_sal FROM emp_test WHERE dept_test_id = 10 ); SELECT * FROM emp_test_copy; -- 复制表:复制一部分数据 -- 新表中的列名 CREATE TABLE emp_count (did, emp_num) AS ( SELECT dept_test_id, COUNT (*) FROM emp_test GROUP BY dept_test_id ); SELECT * FROM emp_count; -- 创建一个同 emp 表结构相同的空表 , 将部门号为 10 的员工信息放入该表 -- 如果有一张表 emp 的数据量为一百万条 , 此时需要建立 1 张测试表只放入少量测试数据( 如 100条 ) , 执行步骤如下所示: -- 第 1 步创建一个空表 CREATE TABLE emp_copy AS (

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 ALTER 用法

oracle ALTER 用法 1.如果sql语句中有''(单引号或者双引号)括的字符串,则需要同表中严格一致,不然会显示“找 不到行”这个错误。 alter语句的用法 需要修改结构的,就用到alter语句,方法如下: 1.ALTER TABLE语句用于修改已经存在的表的设计。 2.语法: ALTER TABLE table ADD COLUMN field type[(size)] [NOT NULL] [CONSTRAINT index ] 3.ALTER TABLE table ADD CONSTRAINT multifieldindex 4.ALTER TABLE table DROP COLUMN field 5.ALTER TABLE table DROP CONSTRAINT indexname 6. 7.说明:table参数用于指定要修改的表的名称。 8.ADD COLUMN为SQL的保留字,使用它将向表中添加字段。 9.ADD CONSTRAINT为SQL的保留字,使用它将向表中添加索引。 10.DROP COLUMN为SQL的保留字,使用它将向表中删除字段。 11.DROP CONSTRAINT为SQL的保留字,使用它将向表中删除索引。 12.field指定要添加或删除的字段的名称。 13.type参数指定新建字段的数据类型。 14.size参数用于指定文本或二进制字段的长度。 15.indexname参数指定要删除的多重字段索引的名称。 16. 17.用sql*plus或第三方可以运行sql语句的程序登录数据库: 18. 19.ALTER TABLE (表名) ADD (列名数据类型); 20.ALTER TABLE (表名) MODIFY (列名数据类型); 21.ALTER TABLE (表名) RENAME COLUMN (当前列名) TO (新列名); /////不需要括号 22.ALTER TABLE (表名) DROP COLUMN (列名); 23.ALTER TABLE (当前表名) RENAME TO (新表名); 24. 25.如: 26.Alter Table Employ Add (weight Number(38,0)) ; 27. 28.Alter Table Employ Modify (weight Number(13,2)) ; 29. 30.Alter Table Emp Rename Cloumn weight To weight_new ; 31. ALTER TABLE emp DROP COLUMN weight_new ;

Oracle 建表(一对多)代码及相关约束示例

建表(一对多)代码及相关约束 create table t_class( c_id number(3) primary key, c_name varchar2(20) not null ); create table t_stu( s_id number(5) primary key, s_name varchar2(8) not null, sex char(2) default '男', birthday date, school_age number(2) check(school_age>0), school_score number(5,2), c_id number(3), id_card char(18) unique, foreign key(c_id) references t_class(c_id) ); 附:测试数据: insert into t_class values(1,'订单班'); insert into t_class values(2,'开发班'); insert into t_class values(3,'美工班'); insert into T_STU (S_ID, S_NAME, SEX, BIRTHDAY, SCHOOL_AGE, SCHOOL_SCORE, C_ID, ID_CARD) values (1, 'a', '男', to_date('01-01-1980', 'dd-mm-yyyy'), 24, 90, 1, null); insert into T_STU (S_ID, S_NAME, SEX, BIRTHDAY, SCHOOL_AGE, SCHOOL_SCORE, C_ID, ID_CARD) values (2, 'b', '男', to_date('11-05-1981', 'dd-mm-yyyy'), 23, 80, 1, null); insert into T_STU (S_ID, S_NAME, SEX, BIRTHDAY, SCHOOL_AGE, SCHOOL_SCORE, C_ID, ID_CARD) values (3, 'c', '女', to_date('19-09-1982', 'dd-mm-yyyy'), 22, 50, 1, null); insert into T_STU (S_ID, S_NAME, SEX, BIRTHDAY, SCHOOL_AGE, SCHOOL_SCORE, C_ID, ID_CARD) values (4, 'd', '女', to_date('28-01-1984', 'dd-mm-yyyy'), 21, 80, 2, null); insert into T_STU (S_ID, S_NAME, SEX, BIRTHDAY, SCHOOL_AGE, SCHOOL_SCORE, C_ID, ID_CARD)

oracle中以dba_、user_、v$_、all_、session_、index_开头的常用表和视图

oracle中以dba_、user_、v$_、all_、session_、index_开头的常用表和视图(https://www.sodocs.net/doc/5d1791203.html,/gzz%5Fgzz/blog/item/1f6ef92a67599392033bf6de.html) 2009年08月10日星期一 17:06 oracle中以dba_、user_、v$_、all_、session_、index_开头的常用表和视图dba_开头 dba_users 数据库用户信息 dba_segments 表段信息 dba_extents 数据区信息 dba_objects 数据库对象信息 dba_tablespaces 数据库表空间信息 dba_data_files 数据文件设置信息 dba_temp_files 临时数据文件信息 dba_rollback_segs 回滚段信息 dba_ts_quotas 用户表空间配额信息 dba_free_space 数据库空闲空间信息 dba_profiles 数据库用户资源限制信息 dba_sys_privs 用户的系统权限信息 dba_tab_privs 用户具有的对象权限信息 dba_col_privs 用户具有的列对象权限信息 dba_role_privs 用户具有的角色信息 dba_audit_trail 审计跟踪记录信息 dba_stmt_audit_opts 审计设置信息 dba_audit_object 对象审计结果信息 dba_audit_session 会话审计结果信息 dba_indexes 用户模式的索引信息 user_开头 user_objects 用户对象信息 user_source 数据库用户的所有资源对象信息 user_segments 用户的表段信息 user_tables 用户的表对象信息 user_tab_columns 用户的表列信息 关于这个还涉及到两个常用的例子如下: 1、oracle中查询某个字段属于哪个表 Sql代码 select table_name,owner from dba_tab_columns t where t.COLUMN_NAME like upper('%username%'); select table_name,owner from dba_tab_columns t where t.COLUMN_NAME like

Oracle EBS常用表和视图

fnd_user 系统用户表 fnd_application 应用信息表 FND_PROFILE_OPTIONS_VL 系统配置文件 fnd_menus 菜单 fnd_menu_entries_tl FND_NEW_MESSAGES 消息表 FND_FORM 表单表 FND_CONCURRENT_PROGRAMS_VL 并发程序视图 FND_CONCURRENT_PROGRAMS_TL FND_CONCURRENT_PROGRAMS FND_DESCR_FLEX_COL_USAGE_VL FND_DESCR_FLEX_COL_USAGE_TL FND_DESCR_FLEX_COLUMN_USAGES FND_EXECUTABLES_FORM_V 可执行并发程序视图FND_EXECUTABLES_TL FND_EXECUTABLES FND_DESCRIPTIVE_FLEXS FND_CONC_REQ_SUMMARY_V 并发请求视图FND_CONCURRENT_REQUESTS FND_RESPONSIBILITY 职责表

FND_RESPONSIBILITY_VL 职责FND_USER_RESP_GROUPS 用户职责 fnd_flex_value_sets 值集表 FND_FLEX_VALUES FND_IREP_ALL_INTERFACES 接口表 FND_IREP_CLASSES Fnd_Irep_Classes_Tl fnd_territories_vl 国家视图 fnd_log_messages 日志表 fnd_form_functions 功能 FND_DOCUMENT_SEQUENCES 单据序列 FND_DOC_SEQUENCE_ASSIGNMENTS 序列分配 fnd_id_flexs 关键弹性域定义表 FND_ID_FLEX_STRUCTURES 弹性域结构表 FND_ID_FLEX_SEGMENTS 弹性域段表 fnd_descriptive_flexs 描述性弹性域属性表 FND_DESCR_FLEX_CONTEXTS 弹性域列类别表 FND_DESCR_FLEX_COLUMN_USAGES 弹性域列类别属性表FND_FLEX_VALUE_SETS 值集表 FND_FLEX_VALUES 值表 Fnd_Flex_Values_Tl 值描述表

oracle复习题剖析

一、选择题 1. Oracle数据表中,下面哪个可以作为有效的列名( A )(选择一项) A. class B. 123_NUM C. date D. #123_NUM 2. Oracle中的三种系统文件分别是( ABC )〔选择三项〕 A. 数据文件 DBF B. 控制文件 CTL C. 日志文件 LOG D. 归档文件 ARC 3.下面哪个命令可以用来查看学生表(表名student)的表结构( C )〔选择一项〕 A. Select student ; B. Display student ; C. Describe student ; D. Show student ;。 4.下面哪个命令不属于数据定义语言(DDL)( D )(选择一项) A. alter table… B、drop index… C、create view… D、update tablename… 5.在设计数据库时,要充分考虑数据的完整性或准确性。下面关于primary key和unique的描述错误的是()〔选择一项) A. primary key用来在表中设置主键,主键列的值是不能重复的,用来唯一标识表中的每一条记录 B. 设为unique的列的值是不能重复的,用来唯一区别unique列的值 C. primary key列不可以有null值, 而unique列是可以有null的 D. primary key列和unique列都不可以有null值 6.假定有一张表员工表employee,其中一性别字段sex,该列只能存入'男'或'女'。为了维护数据的完整性,在设计数据库时,最好对sex字段添加约束,请问应该添加什么约束( B )(选择一项) A. primary key B、check C、default D、unique 7.为表TEST中ID列添加主键约束的语法是( D )〔选择一项〕 A. ALTER TABLE TEST CHANGE( ID INT PRIMARY KEY) B. ALTER TABLE TEST ADD( ID INT PRIMARY KEY)

Oracle 插入数据

Oracle 插入数据 插入数据就是将数据放置到已经创建的表中,Oracle 数据库是通过INSERT 语句来实现插入数据的。一般情况下,使用INSERT 语句可以一次插入一行数据。 与SELECT 语句相比,INSERT 语句的使用方式要简单的多。在INSERT 语句的使用方式中,最为常用的形式是在INSERT INTO 子句中指定添加数据的列,并在V ALUES 子句中为各个列提供一个值。 下面语句将向SCOTT 模式中的EMP 表添加一条记录: SQL> insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) 2 values(7995,'A TG','CLERK',7782,to_date('2007-9-23','yyyy-mm-dd'),1300,null,10); 已创建 1 行。。 在向表中所有列添加数据时,可以省略INSERT INTO 子句后的列表清单,使用这种方法时,必须根据表中定义的列的顺序,为所有的列提供数据,用户可以使用DESC 命令查看表中定义列的顺序。下面的INSERT 语句在向EMP 表添加记录时省略了列清单: SQL> desc emp SQL> insert into emp 2 values(7996,'LI','CLERK',7782,to_date('2006-5-12','yyyy-mm-dd'),1200,null,10); 已创建 1 行。 在插入操作过程中,用户也可以根据实际情况只为部分列提供数据,而省略某些列的数据。注意这些列必须允许空值、有默认值或系统可以自动成生值等。例如,在EMP 表中,除EMPNO 列不允许空值外,其他列都可以为空值。 如果某个列不允许NULL 值存在,而用户没有为该列提供数据,则会因为违反相应的约束而插入失败。事实上,在定义表的时候为了数据的完整性,经常会为表添加许多约束。例如,在EMP 表中为了保证表中每条记录的惟一性,在表的EMPNO 列上定义了主键约束。如果用户试图为表中的EMPNO 列添加一个重复值,则因为违反主键约束而失败: SQL> insert into emp(empno,ename,job) 2 values(7782,'KING','CLERK'); insert into emp(empno,ename,job) * 第 1 行出现错误: ORA-00001: 违反唯一约束条件 (SCOTT.PK_EMP) 关于为表定义完整性约束,将在后面的章节中介绍,这里需要记住的是在向表添加记录时,添加的数据必须符合为表定义的所有完整性约束。 INSERT 语句还有一种用法,可以实现一次向表中添加一组数据。即使用SELECT 语句替换V ALUES 子句,这样由SELECT 语句提供添加的数值。例如,下面的示例从EMP 表提注 意 使用这种方法插入数据时有一个大隐患,如果为表指定的数值位置不对, 并且指定的数据类型之间可以转化,则执行该语句时系统不会返回任何错误信 息。但是这会为该表添加一条错误的记录。由于这种错误难以发现,所以在添加记录时最好在INSERT INTO 子句中指定列清单,以明确接收数据的列。

Oracle基础练习题及答案(表约束)

练习作业 创建表emp1,字段如下 eno char(3), ename char(6) sex char(2) age number(2) dno char(3) 并插入如下数据 1 ,TOM ,男,21 ,’001’ 2 ,JERRY ,男,21 ,’002’ 3 ,KATE ,女,21 ,’003’ 4 ,MARY ,女,21 ,’004’ 5 ,JACK ,男,21 ,’005’ i.在eno字段上创建主键约束 ii.在ename字段上创建非空约束 iii.创建检查约束判断age在18到60岁之间的男性或者age在18到55岁之间的女性iv.在dno字段上创建唯一性约束 create table emp1( eno char(3) primary key, ename char(6) not null, sex char(2), age number(2), dno char(3) unique, constraint sex_age check( ((age between18and60) and sex='男') or ((age between18and55) and sex='女')) ) insert into emp1 values('1','TOM','男',21,'001') insert into emp1 values('2','JERRY','男',21,'002');

insert into emp1 values('3','KATE','女',21,'003'); insert into emp1 values('4','MARY','女',21,'004'); insert into emp1 values('5','JACK','男',21,'005'); v.创建和emp1表字段相同的emp_bak表,将emp_bak表的eno字段与emp表的eno字段创建外键约束 create table emp_bak as select * from emp1 where1=2 alter table emp_bak add constraint v foreign key(eno) references emp1(eno); 1、请创建一个表,表名为phone,表结构如下 电话号码(PHONENUM VARCHAR2(8)) 电话费(PAY number(8,2)) 号码等级(NUMLEVEL VARCHAR2(4)) 费用日期(PAYDATE varchar2(12) create table phone ( phonenum varchar2(8), pay number(8,2), numlevel varchar2(4), paydate varchar2(12) ) 1)插入以下两条数据. 123456, 600, pt04, 20051220 888888, 900, pt05, 20051019. insert into phone values('123456',600,'pt04', '20051220'); insert into phone values('888888',900,'pt05', '20050919');

Oracle常用数据字典表(系统表或系统视图)及查询SQL

Oracle常用数据字典表(系统表或系统视图)及查询SQL 2014年12月15日?数据库?共4187字?暂无评论?阅读861 次 文章目录 ?数据字典分类 ?dba_开头 ?user_开头 ?v$开头 ?all_开头 ?session_开头 ?index_开头 ?伪表 ?数据字典常用SQL查询 数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的。比如一个表的创建者信息,创建时间信息,所属表空间信息,用户访问权限信息的视图等。 数据字典系统表,保存在system表空间中。查询所有数据字典可用语句“select * from dictionary;”。 数据字典分类 数据字典主要可分为四部分: 1)内部RDBMS表:x$*,用于跟踪内部数据库信息,维持DB的正常运行。是加密命名的,不允许sysdba以外的用户直接访问,显示授权不被允许。

2)数据字典表:*$,如tab$,obj$,ts$等,用来存储表、索引、约束以及其他数据库结构的信息。 3)动态性能视图:gv$*,v$*,记录了DB运行时信息和统计数据,大部分动态性能视图被实时更新以反映DB当前状态。 4)数据字典视图:user_*、all_*、dba_*,在非Sys用户下,我们访问的都是同义词,而不是V$视图或GV视图。 数据库启动时,动态创建x$,在X$基础上创建GV$,在GV$基础上创建V$X$表-->GV$(视图)--->V$(视图)。 数据字典视图可分为静态数据字典视图和动态数据字典视图。 静态数据字典是指在用户访问数据字典时内容不会发生改变。这类数据字典主要是由表和视图组成,应该注意的是,数据字典中的表是不能直接被访问的,但是可以访问数据字典中的视图。 静态数据字典中的视图分为三类,它们分别由三个前缀够成:user_*(该用户方案对象的信息)、all_*(该用户可以访问的所有对象的信息)、dba_*(全部数据库对象的信息)。 动态数据字典是Oracle包含的一些潜在的由系统管理员如SYS维护的表和视图,由于当数据库运行的时候它们会不断进行更新,所以称它们为动态数据字典。这些视图提供了关于内存和磁盘的运行情况,所以我们只能对其进行只读访问而不能修改它们。Oracle中这些动态性能视图都是以v$开头的视图,比如v$access。 dba_开头 dba_users数据库用户信息

Oracle 非空约束

Oracle 非空约束 非空约束就是限制必须为某个列提供值。空值是不存在的,它即不是数字0,也不是空字符串,而是没有、未知。 在表中,当某些字段的值是不缺少的,那么就可以为该列定义为非空约束。这样当插入数据时,如果没有为该列提供数据,那么系统就会出现一个错误消息。 如果某些列的值是可有可无的,那么可以定义这些列允许空值。这样,在插入数据时,就可以不向该列提供具体的数据。在默认情况下,表中的列是允许空值的。 例如,在创建EMPLOYEES表时,规定EMPNO、ENAME和DEPTNO列不能为空值:SQL> create table employees( 2 empno number(10) not null, 3 ename varchar2(20) not null, 4 sex char(2), 5 salary number(8,2), 6 hiredate date default sysdate, 7 job varchar2(10), 8 email varchar2(50), 9 deptno number(3) not null); 表已创建。 也可以使用ALTER TABLE MODIFY语句为已经创建的表删除或重新定义NOT NULL 约束。例如,下面的语句为SALARY字段定义了非空约束: SQL> alter table employees 2 modify salary not null; 表已更改。 在为表中的字段定义了非空约束后,当用户向表插入数据时,如果未向对应的字段提供值,则添加数据操作将返回一个如下所示的错误: SQL> insert into employees(ename,sex,salary,deptno) 2 values('刘丽','男',1500,20); insert into employees(ename,sex,salary,deptno) * 第 1 行出现错误: ORA-01400: 无法将NULL 插入("SCOTT"."EMPLOYEES"."EMPNO") 如果使用ALTER TABLE … MODIFY为表添加NOT NULL约束,并且表中该列的数据已经存在NULL值,则向该列添加NOT NULL约束将失败。这是因为当为该列应用非空约束时,Oracle将会试图检查表中的所有的行,以验证所有行在对应的列是否存在NULL值。 使用ALTER TABLE … MODIFY语句还可以删除表中非空约束。例如,下面的语句删除了SALARY列的非空约束: SQL> alter table employees 2 modify salary null;

相关主题