oracle 视图的增删改查操作举例

oracle 视图的增删改查操作举例oracle视图创建和操作创建简单复杂的视图创建基表不存在的视图视图增删改查看视图的结构关键字: oracle视图创建操作简单复杂基表不存在增删改插入修改删除查看结构视图的概念视图是基于一张表或多张表或另外一个视图的逻辑表。

视图不同于表视图本身不包含任何数据。

表是实际独立存在的实体是用于存储数据的基本结构。

而视图只是一种定义对应一个查询语句。

视图的数据都来自于某些表这些表被称为基表。

通过视图来查看表就像是从不同的角度来观察一个或多个表。

视图有如下一些优点可以提高数据访问的安全性通过视图往往只可以访问数据库中表的特定部分限制了用户访问表的全部行和列。

简化了对数据的查询隐藏了查询的复杂性。

视图的数据来自一个复杂的查询用户对视图的检索却很简单。

一个视图可以检索多张表的数据因此用户通过访问一个视图可完成对多个表的访问。

视图是相同数据的不同表示通过为不同的用户创建同一个表的不同视图使用户可分别访问同一个表的不同部分。

视图可以在表能够使用的任何地方使用但在对视图的操作上同表相比有些限制特别是插入和修改操作。

对视图的操作将传递到基表所以在表上定义的约束条件和触发器在视图上将同样起作用。

视图的创建创建视图需要CREAE VIEW系统权限视图的创建语法如下CREATE OR REPLACE FORCENOFORCE VIEW 视图名别名1别名 2... AS 子查询WITH CHECK OPTION CONSTRAINT 约束名WITH READ ONL Y 其中OR REPLACE 表示替代已经存在的视图。

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

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

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

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

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

后面的约束名是该约束条件的名字。

WITH READ ONL Y 表示视图是只读的。

删除视图的语法如下DROP VIEW 视图名删除视图者需要是视图的建立者或者拥有DROP ANY VIEW权限。

视图的删除不影响基表不会丢失数据。

1创建简单视图创建图书作者视图。

步骤1创建图书作者视图Sql代码1. CREATE VIEW 图书作者书名作者2. AS SELECT 图书名称作者FROM 图书输出结果视图已建立。

步骤2查询视图全部内容Sql代码1. SELECT FROM 图书作者输出结果Sql代码 1. 书名作者2. -------------------------------- -------------------- 3. 计算机原理刘勇4. C语言程序设计马丽5. 汇编语言程序设计黄海明步骤3查询部分视图Sql代码 1. SELECT 作者FROM 图书作者输出结果Sql代码1. 作者 2. ---------- 3. 刘勇4. 马丽5. 黄海明说明本训练创建的视图名称为“图书作者”视图只包含两列为“书名”和“作者”对应图书表的“图书名称”和“作者”两列。

如果省略了视图名称后面的列名则视图会采用和表一样的列名。

对视图查询和对表查询一样但通过视图最多只能看到表的两列可见视图隐藏了表的部分内容。

创建清华大学出版社的图书视图。

步骤1创建清华大学出版社的图书视图Sql代码 1. CREATE VIEW 清华图书AS SELECT 图书名称作者单价FROM 图书WHERE 出版社编号01 执行结果视图已建立。

步骤2查询图书视图Sql代码1. SELECT FROM 清华图书执行结果Sql代码1. 图书名称作者单价2. -------------------------------------------- ---------- ----------------------- 3. 计算机原理刘勇25.3 步骤3删除视图Sql代码1. DROP VIEW 清华图书执行结果视图已丢掉。

说明该视图包含了对记录的约束条件。

2创建复杂视图修改作者视图加入出版社名称。

步骤1重建图书作者视图Sql代码 1. CREATE OR REPLACE VIEW 图书作者书名作者出版社2. AS SELECT 图书名称作者出版社名称FROM 图书出版社3. WHERE 图书.出版社编号出版社.编号输出结果视图已建立。

步骤2查询新视图内容Sql代码 1. SELECT FROM 图书作者输出结果Sql代码 1. 书名作者出版社 2. -------------------------------------------- ---------- ---------------------------- 3. 计算机原理刘勇清华大学出版社 4. C语言程序设计马丽电子科技大学出版社 5. 汇编语言程序设计黄海明电子科技大学出版社说明本训练中使用了OR REPLACE选项使新的视图替代了同名的原有视图同时在查询中使用了相等连接使得视图的列来自于两个不同的基表。

创建一个统计视图。

步骤1创建emp表的一个统计视图Sql代码 1. CREATE VIEW 统计表部门名最大工资最小工资平均工资 2. AS SELECT DNAMEMAXSALMINSALA VGSAL FROM EMP EDEPT D 3. WHERE E.DEPTNOD.DEPTNO GROUP BY DNAME 执行结果视图已建立。

步骤2查询统计表Sql代码 1. SELECT FROM 统计表执行结果Sql代码1. 部门名最大工资最小工资平均工资2. -------------------------- --------------- ----------------- ------------------ 3. ACCOUNTING 5000 1300 3050 4. RESEARCH 3000 800 2175 5. SALES 2850 950 1566.66667 说明本训练中使用了分组查询和连接查询作为视图的子查询每次查询该视图都可以得到统计结果。

创建只读视图创建只读视图要用WITH READ ONL Y选项。

创建只读视图。

步骤1创建emp表的经理视图Sql代码 1. CREATE OR REPLACE VIEW manager 2. AS SELECT FROM emp WHERE job MANAGER 3. WITH READ ONL Y 执行结果视图已建立。

步骤2进行删除Sql代码 1. DELETE FROM manager 执行结果ERROR 位于第 1 行: ORA-01752: 不能从没有一个键值保存表的视图中删除4创建基表不存在的视图正常情况下不能创建错误的视图特别是当基表还不存在时。

但使用FORCE选项就可以在创建基表前先创建视图。

创建的视图是无效视图当访问无效视图时Oracle将重新编译无效的视图。

使用FORCE选项创建带有错误的视图Sql代码 1. CREATE FORCE VIEW 班干部AS SELECT FROM 班级WHERE 职务IS NOT NULL 执行结果警告: 创建的视图带有编译错误。

视图的操作对视图经常进行的操作是查询操作但也可以在一定条件下对视图进行插入、删除和修改操作。

对视图的这些操作最终传递到基表。

但是对视图的操作有很多限定。

如果视图设置了只读则对视图只能进行查询不能进行修改操作。

1视图的插入视图插入练习。

步骤1创建清华大学出版社的图书视图Sql代码 1. CREATE OR REPLACE VIEW 清华图书2. AS SELECT FROM 图书WHERE 出版社编号01 执行结果视图已建立。

步骤2插入新图书Sql代码1. INSERT INTO 清华图书V ALUESA0005软件工程01冯娟527.3 执行结果已创建1 行。

步骤3显示视图Sql代码1. SELECT FROM 清华图书执行结果Sql代码1. 图书图书名称出作者数量单价2. -------- ---------------------------------------- ----------- -------- ------------------------ -------------- 3. A0001 计算机原理01 刘勇 5 25.3 4. A0005 软件工程01 冯娟5 27.3 步骤4显示基表Sql代码1. SELECT FROM 图书执行结果Sql代码 1. 图书图书名称出作者数量单价 2. -------- ------------------------------------------ ------- ---------------- ----------------- --------------- 3. A0001 计算机原理01 刘勇 5 25.3 4. A0002 C语言程序设计02 马丽 1 18.75 5. A0003 汇编语言程序设计02 黄海明15 20.18 6. A0005 软件工程01 冯娟 5 27.3 说明通过查看视图可见新图书插入到了视图中。

通过查看基表看到该图书也出现在基表中说明成功地进行了插入。

新图书的出版社编号为“01”仍然属于“清华大学出版社”。

但是有一个问题就是如果在“清华图书”的视图中插入其他出版社的图书结果会怎么样呢结果是允许插入但是在视图中看不见在基表中可以看见这显然是不合理的。

2使用WITH CHECK OPTION选项为了避免上述情况的发生可以使用WITH CHECK OPTION选项。

使用该选项可以对视图的插入或更新进行限制即该数据必须满足视图定义中的子查询中的WHERE条件否则不允许插入或更新。

比如“清华图书”视图的WHERE条件是出版社编号要等于“01”01是清华大学出版社的编号所以如果设置了WITH CHECK OPTION选项那么只有出版社编号为“01”的图书才能通过清华视图进行插入。

使用WITH CHECK OPTION选项限制视图的插入。

步骤1重建清华大学出版社的图书视图带WITH CHECK OPTION选项Sql代码 1. CREATE OR REPLACE VIEW 清华图书2. AS SELECT FROM 图书WHERE 出版社编号01 3. WITH CHECK OPTION 执行结果视图已建立。

步骤2插入新图书Sql代码1. INSERT INTO 清华图书V ALUESA0006Oracle数据库02黄河339.8 执行结果ERROR 位于第1 行: ORA-01402: 视图WITH CHECK OPTIDN 违反where 子句说明可见通过设置了WITH CHECK OPTION选项“02”出版社的图书插入受到了限制。

合集下载

oracle insert delete update 执行逻辑 -回复

oracle insert delete update 执行逻辑 -回复

oracle insert delete update 执行逻辑-回复Oracle是一种关系型数据库管理系统(RDBMS),广泛应用于许多企业和组织中。

在使用Oracle时,常见的操作有插入(Insert)、删除(Delete)和更新(Update)数据。

本文将逐步解释这些操作的执行逻辑,为读者提供实用的指导和理解。

首先,让我们从插入数据开始。

插入操作是将新数据添加到数据库表中的过程。

要执行插入操作,首先需要选择要插入数据的目标表。

可以使用SQL 语句中的INSERT INTO命令来指定要插入数据的表。

然后,通过指定插入的值,将数据添加到表的一个或多个列中。

例如,以下是一个插入数据的示例SQL语句:INSERT INTO 表名(列1, 列2, 列3, ...) VALUES (值1, 值2, 值3, ...);在执行插入操作时,需要考虑几个关键方面。

首先,要确保插入的值与表定义中定义的数据类型相匹配。

如果插入的数据类型不匹配,将导致插入操作失败。

其次,插入操作可能会违反表上的某些约束,如主键约束、唯一约束和外键约束。

在插入数据之前,要确保不会违反这些限制,否则插入操作将失败。

在插入数据之后,可能需要删除已存在的数据。

删除操作是从数据库表中删除数据的过程。

使用SQL语句中的DELETE FROM命令可以执行删除操作。

可以通过指定删除数据的目标表,并使用WHERE子句指定要删除的行的条件来执行删除操作。

以下是一个删除数据的示例SQL语句:DELETE FROM 表名WHERE 条件;在执行删除操作时,必须谨慎操作。

请确保提供的WHERE条件正确,以便删除预期的行。

如果没有提供WHERE条件,将删除表中的所有行。

在删除操作之前,最好先进行备份,以防不小心删除了错误的数据。

最后,我们来讨论更新操作。

更新操作是修改数据库表中的数据的过程。

使用SQL语句中的UPDATE命令可以执行更新操作。

可以通过指定要更新数据的目标表,并使用SET子句指定要更新的列和新值,使用WHERE 子句指定要更新的行的条件来执行更新操作。

oracle 增删改查

oracle 增删改查

Oracle的crud操作Crud操作就是c (create) r (retrieve/read) u (update) d(delete)Insert添加操作1、插入的数据应与字段的数据类型相同Create table test10(id number);insert into test10(id)values(12);2、数据的大小应在列的规定范围内,例如:不能将一个长度为80的字符串加入到长度为40的列中Create table test11(name varchar2(2));insert into test11(name)values(‘ssss’);错误3、在values中列出的数据位置必须与被加入的列的排列位置相对应Create table test12( id number, name varchar2(64));Insert into test12 (id,name) values (‘shunping’,12);错误4、字符和日期数据应包含在单引号中Create table test13 (name varchar2(64),birthday);Insert into test13(name ,birthday)values(shunping,11-may-11);错误5、插入空值,不指定或insert into table value(null)Create table test14(name varchar2(64),age number);Insert into test14(name,age) values(‘shunping’,null);正确6、如果给表的每一列都添加值的话,则可以不带列名Insert into 表名values(列值...);向students中添加数据insert into students values(1,'zs','n','11-may-13',23.34,'hello'); insert into students values(2,'ls','n','11-may-13',23.34,'hello2'); insert into students values(3,'ww','s','11-july-13',23.34,'hello3'); Update 操作1、基本语法Update 表名set 列名=表达式[列名=表达式,....] where 条件2、使用的注意事项(1)update语法可以新值更新原有表行中的各列把zs这个人的性别改成supdate students set sex='s' where name='zs';Set 字句指示要修改哪些列和要修改哪些值把zs这个人的奖学金改为 10update students set fellowship=10 where name='zs';把所有学生的奖学金都提高10%update students set fellowship=fellowship*1.1;Where字句指定应更新哪些行。

C#--Oracle数据库基本操作(增、删、改、查)

C#--Oracle数据库基本操作(增、删、改、查)

C#--Oracle数据库基本操作(增、删、改、查)写在前⾯:常⽤数据库:类似于上篇有关SQLserver的C#封装,⼩编对Oracle数据库进⾏了相应的封装,⽅便后期开发使⽤,主要包括Oracle数据库的连接、增、删、改、查,如有什么问题还请各位⼤佬指教。

后续也将对其他⼏个常⽤的数据库进⾏相应的整理。

话不多说,直接开始码代码。

引⽤:由于微软在.框架4.0中已经决定撤销使⽤System.Data.OracleClient,造成在VS中⽆法连接Oracle数据库,但它还依旧存在于.架构中,我们可以通过⾃⼰引⽤。

具体⽅法如下:(1)在需要引⽤的程序集引⽤⽂件夹上右击,选择添加引⽤(2)选择浏览选项(3)找到⽬录 C:\Windows\Microsoft.\Framework\v2.0.50727(4)找到 System.Data.OracleClient.dll ⽂件(5)点击确定。

OK,引⽤完成using System.Data; //DataSet引⽤集using System.Data.OracleClient; //oracle引⽤先声明⼀个SqlConnectionprivate OracleConnection oracle_con;//声明⼀个OracleConnection⽅便使⽤Oracle打开:/// <summary>/// Oracle open/// </summary>/// <param name="link">link statement</param>/// <returns>Success:success; Fail:reason</returns>public string Oracle_Open(string link){ try { oracle_con = new OracleConnection(link); oracle_con.Open(); return "success"; } catch (Exception ex) { return ex.Message; }}Oracle关闭:/// <summary>/// Oracle close/// </summary>/// <returns>Success:success Fail:reason</returns>public string Oracle_Close(){ try { if (oracle_con == null) { return "No database connection"; } if (oracle_con.State == ConnectionState.Open) { oracle_con.Close(); oracle_con.Dispose(); } else { if (oracle_con.State == ConnectionState.Closed) { return "success"; } if (oracle_con.State == ConnectionState.Broken) { return "ConnectionState:Broken"; } } return "success"; } catch (Exception ex) { return ex.Message; }}Oracle的增删改:/// <summary>/// Oracle insert,delete,update/// </summary>/// <param name="sql">insert,delete,update statement</param>/// <returns>Success:success + Number of affected rows; Fail:reason</returns>public string Oracle_Insdelupd(string sql){ try { int num = 0; if (oracle_con == null) { return "Please open the database connection first"; } if (oracle_con.State == ConnectionState.Open) { OracleCommand oracleCommand = new OracleCommand(sql, oracle_con); num = oracleCommand.ExecuteNonQuery(); } else { if (oracle_con.State == ConnectionState.Closed) { return "Database connection closed"; } if (oracle_con.State == ConnectionState.Broken) { return "Database connection is destroyed"; } } return "success" + num; } catch (Exception ex) { return ex.Message.ToString(); }}Oracle的查:/// <summary>/// Oracle select/// </summary>/// <param name="sql">select statement</param>/// <param name="record">Success:success; Fail:reason</param>/// <returns>select result</returns>public DataSet Oracle_Select(string sql, out string record) try { DataSet dataSet = new DataSet(); if (oracle_con != null) { if (oracle_con.State == ConnectionState.Open) { OracleDataAdapter oracleDataAdapter = new OracleDataAdapter(sql, oracle_con); oracleDataAdapter.Fill(dataSet, "sample"); oracleDataAdapter.Dispose(); record = "OK"; return dataSet; } if (oracle_con.State == ConnectionState.Closed) { record = "Database connection closed"; } else if (oracle_con.State == ConnectionState.Broken) { record = "Database connection is destroyed"; } } else { record = "Please open the database connection first"; } record = "error"; return dataSet; } catch (Exception ex) { DataSet dataSet = new DataSet(); record = ex.Message.ToString(); return dataSet; }}⼩编发现以上这种封装⽅式还是很⿇烦,每次对Oracle进⾏增删改查的时候还得先打开数据库,最后还要关闭,实际运⽤起来⽐较⿇烦。

ORACLE增删改查以及casewhen的基本用法

ORACLE增删改查以及casewhen的基本用法

ORACLE增删改查以及casewhen的基本⽤法1.创建tablecreate table test01(id int not null primary key,name varchar(8) not null,gender varchar2(2) not null,age int not null,address varchar2(20) default ‘地址不详’ not null,regdata date);约束⾮空约束 not null主键约束 primary key外键约束唯⼀约束 unique检查约束 check联合主键constraint pk_id_username primary key(id,username);查看数据字典desc user_constraint修改表时重命名rename constraint a to b;--修改表删除约束--禁⽤约束 disable constraint 约束名字;删除约束 drop constraint 约束名字; drop primary key;直接删除主键外键约束create table typeinfo(typeid varchar2(20) primary key, typename varchar2(20));create table userinfo_f( id varchar2(10) primary key,username varchar2(20),typeid_new varchar2(10) references typeinfo(typeid));insert into typeinfo values(1,1);创建表时设置外键约束constraint 名字 foregincreate table userinfo_f2 (id varchar2(20) primary key,username varchar2(20),typeid_new varchar2(10),constraint fk_typeid_new foreign key(typeid_new) references typeinfo(typeid));create table userinfo_f3 (id varchar2(20) primary key,username varchar2(20),typeid_new varchar2(10),constraint fk_typeid_new1 foreign key(typeid_new) references typeinfo(typeid) on delete cascade外键约束包含删除外键约束禁⽤约束 disable constraint 约束名字;删除约束 drop constraint 约束名字;唯⼀约束与主键区别唯⼀约束可以有多个,只能有⼀个nullcreate table userinfo_u( id varchar2(20) primary key,username varchar2(20) unique,userpwd varchar2(20));创建表时添加约束constraint 约束名字 unique(列名);修改表时添加唯⼀约束 add constraint 约束名字 unique(列名);检查约束create table userinfo_c( id varchar2(20) primary key,username varchar2(20), salary number(5,0) check(salary>50));constraint ck_salary check(salary>50);/* 获取表:*/select table_name from user_tables; //当前⽤户的表select table_name from all_tables; //所有⽤户的表select table_name from dba_tables; //包括系统表select table_name from dba_tables where owner=’zfxfzb’/*2.修改表alter table test01 add constraint s_id primary key;alter table test01 add constraint CK_INFOS_GENDER check(gender=’男’ or gender=’⼥’)alter table test01 add constraint CK_INFOS_AGE(age>=0 and age<=50)alter table 表名 modify 字段名 default 默认值; //更改字段类型alter table 表名 add 列名字段类型; //增加字段类型alter table 表名 drop column 字段名; //删除字段名alter table 表名 rename column 列名 to 列名 //修改字段名rename 表名 to 表名 //修改表名3.删除表格truncate table 表名 //删除表中的所有数据,速度⽐delete快很多,截断表delete from table 条件//drop table 表名 //删除表4.插⼊语句insert into 表名(值1,值2) values(值1,值2);5.修改语句update 表名 set 字段=值 [修改条件]update t_scrm_db_app_user set password = :pwd where login_name = :user6.查询语句带条件的查询where模糊查询like % _范围查询in对查询结果进⾏排序order by desc||asc7.case whenselect username,case username when ‘aaa’ then ‘计算机部门’ when ‘bbb’ then ‘市场部门’ else ‘其他部门’ end as 部门 from users; select username,case username=’aaa’ then ‘计算机部门’ when username=’bbb’ then ‘市场部门’ else ‘其他部门’ as 部门 from users;8.运算符和表达式算数运算符和⽐较运算符 distinct 去除多余的⾏ column 可以为字段设置别名⽐如 column column_name heading new_name decode 函数的使⽤类似于case…when select username,decode(username,’aaa’,’计算机部门’,’bbb’,’市场部门’,’其他’) as 部门 from users;9.复制表create table 表名 as ⼀个查询结果 //复制查询结果insert into 表名值⼀个查询结果 //添加时查询10.查看表空间desc test01;11.创建表空间永久表空间create tablespace test1_tablespace datafile ‘testfile.dbf’ size 10m;临时表空间create temporary tablespace temptest1_tablespace tempfile ‘tempfile.dbf’ size 10m;desc dba_data_files;select file_name from dba_data_files where tablespace_name=’TEST1_TABLESPACE’;。

oracle数据库增删改查基本语句举例

oracle数据库增删改查基本语句举例

oracle数据库增删改查基本语句举例Oracle数据库是一种关系型数据库管理系统,具备强大的数据处理和查询功能。

以下是10个基本的Oracle数据库的增删改查语句示例:1. 插入数据:INSERT INTO 表名 (列1, 列2, 列3) VALUES (值1, 值2, 值3);示例:INSERT INTO employees (id, name, age) VALUES (1, '张三', 25);2. 查询数据:SELECT 列1, 列2, 列3 FROM 表名;示例:SELECT id, name, age FROM employees;3. 更新数据:UPDATE 表名 SET 列1 = 值1, 列2 = 值2 WHERE 条件;示例:UPDATE employees SET age = 26 WHERE id = 1;4. 删除数据:DELETE FROM 表名 WHERE 条件;示例:DELETE FROM employees WHERE id = 1;5. 创建表:CREATE TABLE 表名 (列1 数据类型,列2 数据类型,列3 数据类型);示例:CREATE TABLE employees (id NUMBER,name VARCHAR2(50),age NUMBER);6. 修改表:ALTER TABLE 表名ADD 列数据类型;示例:ALTER TABLE employees ADD salary NUMBER;7. 删除表:DROP TABLE 表名;示例:DROP TABLE employees;8. 创建索引:CREATE INDEX 索引名 ON 表名 (列1, 列2);示例:CREATE INDEX idx_name ON employees (name);9. 修改索引:ALTER INDEX 索引名 RENAME TO 新索引名;示例:ALTER INDEX idx_name RENAME TO idx_employee_name;10. 删除索引:DROP INDEX 索引名;示例:DROP INDEX idx_name;以上是一些基本的Oracle数据库的增删改查语句示例。

oracle临时表空间的增删改查操作(精)

oracle临时表空间的增删改查操作(精)

oracle 临时表空间的增删改查操作oracle 临时表空间的增删改查1、查看临时表空间(dba_temp_files视图)(v_$tempfile视图)select tablespace_name,file_name,bytes/1024/1024 file_size,autoextensible from dba_temp_files;select status,enabled, name, bytes/1024/1024 file_size from v_$tempfile;--sys用户查看2、缩小临时表空间大小alter database tempfile'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TELEMT\TEMP01.DBF' resize 100M;3、扩展临时表空间:方法一、增大临时文件大小:SQL> alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp01.dbf’ resize100m;方法二、将临时数据文件设为自动扩展:SQL> alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp01.dbf’ autoextend on next 5m maxsize unlimited;方法三、向临时表空间中添加数据文件:SQL> alter tablespace temp add tempfile ‘/u01/app/oracle/oradata/orcl/temp02.dbf’ size 100m;4、创建临时表空间:SQL> create temporary tablespace temp1 tempfile‘/u01/app/oracle/oradata/orcl/temp11.dbf’ size 10M;5、更改系统的默认临时表空间:--查询默认临时表空间select * from database_properties whereproperty_name='DEFAULT_TEMP_TABLESPACE';--修改默认临时表空间alter database default temporary tablespace temp1;所有用户的默认临时表空间都将切换为新的临时表空间:select username,temporary_tablespace,default_ from dba_users;--更改某一用户的临时表空间:alter user scott temporary tablespace temp;6、删除临时表空间删除临时表空间的一个数据文件:SQL> alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp02.dbf’ drop;删除临时表空间(彻底删除:SQL> drop tablespace temp1 including contents and datafiles cascade constraints;7、查看临时表空间的使用情况(GV_$TEMP_SPACE_HEADER视图必须在sys用户下才能查询)GV_$TEMP_SPACE_HEADER视图记录了临时表空间的使用大小与未使用的大小dba_temp_files视图的bytes字段记录的是临时表空间的总大小SELECT temp_used.tablespace_name,total - used as "Free",total as "Total",round(nvl(total - used, 0 * 100 / total, 3 "Free percent"FROM (SELECT tablespace_name, SUM(bytes_used / 1024 / 1024 usedFROM GV_$TEMP_SPACE_HEADERGROUP BY tablespace_name temp_used,(SELECT tablespace_name, SUM(bytes / 1024 / 1024 totalFROM dba_temp_filesGROUP BY tablespace_name temp_totalWHERE temp_used.tablespace_name = temp_total.tablespace_name8、查找消耗资源比较的sql语句Select ername,se.sid,su.extents,su.blocks * to_number(rtrim(p.value as Space,tablespace,segtype,sql_textfrom v$sort_usage su, v$parameter p, v$session se, v$sql swhere = 'db_block_size'and su.session_addr = se.saddrand s.hash_value = su.sqlhashand s.address = su.sqladdrorder by ername, se.sid9、查看当前临时表空间使用大小与正在占用临时表空间的sql语句select sess.SID, segtype, blocks * 8 / 1000 "MB", sql_textfrom v$sort_usage sort, v$session sess, v$sql sqlwhere sort.SESSION_ADDR = sess.SADDRand sql.ADDRESS = sess.SQL_ADDRESSorder by blocks desc;10、临时表空间组介绍1)创建临时表空间组:create temporary tablespace tempts1 tempfile '/home/oracle/temp1_02.dbf' size 2M tablespace group group1;create temporary tablespace tempts2 tempfile '/home/oracle/temp2_02.dbf' size 2M tablespace group group2;2)查询临时表空间组:dba_tablespace_groups视图select * from dba_tablespace_groups;GROUP_NAME TABLESPACE_NAME------------------------------ ------------------------------GROUP1 TEMPTS1GROUP2 TEMPTS23)将表空间从一个临时表空间组移动到另外一个临时表空间组:alter tablespace tempts1 tablespace group GROUP2 ;select * from dba_tablespace_groups;GROUP_NAME TABLESPACE_NAME------------------------------ ------------------------------GROUP2 TEMPTS1GROUP2 TEMPTS24)把临时表空间组指定给用户alter user scott temporary tablespace GROUP2;5)在数据库级设置临时表空间alter database <db_name> default temporary tablespace GROUP2;6)删除临时表空间组 (删除组成临时表空间组的所有临时表空间drop tablespace tempts1 including contents and datafiles;select * from dba_tablespace_groups;GROUP_NAME TABLESPACE_NAME------------------------------ ------------------------------GROUP2 TEMPTS2drop tablespace tempts2 including contents and datafiles;select * from dba_tablespace_groups;GROUP_NAME TABLESPACE_NAME11、对临时表空间进行shrink(11g新增的功能)--将temp表空间收缩为20Malter tablespace temp shrink space keep 20M;--自动将表空间的临时文件缩小到最小可能的大小ALTER TABLESPACE temp SHRINK TEMPFILE ’/u02/oracle/data/lmtemp02.dbf’;临时表空间作用Oracle临时表空间主要用来做查询和存放一些缓冲区数据。

Oracle操作数据库(增删改语句)

Oracle操作数据库(增删改语句) 对数据库的操作除了查询,还包括插⼊、更新和删除等数据操作。

后3种数据操作使⽤的 SQL 语⾔也称为数据操纵语⾔(DML)。

⼀、插⼊数据(insert 语句) 插⼊数据就是将数据记录添加到已经存在的数据表中,可以通过 insert 语句实现向数据表中⼀次插⼊⼀条记录,也可以使⽤ select ⼦句将查询结果批量插⼊数据表。

1、单条插⼊数据 语法:insert into table_name [ (column_name[,column_name2]...) ] values(express1[,express2]... )table_name:要插⼊数据的表名column_name1 和 column_name2:指定表的完全或部分列名称express1 和 express2 :表⽰要插⼊的值列表 EG:SQL > insert into dept(deptno,dname,loc) values(88,'Tony','tianjin') 注意: insert into 中指定添加数据的列,可以是数据表的全部列,也可以是部分列给指定列添加数据时,需要注意哪些列不能空;对于可以为空的列,添加数据可以不指定值;添加数据时,还应该数据添加数据和字段的类型和范围向表中所有列添加数据时,可以省略 insert into ⼦句后⾯的列表清单,使⽤这种⽅法时,必须根据表中定义列的顺序为所有的列提供数据添加数据时,还应该注意哪个字段是主键(主键的字段是不允许重复的),不能给主键字段添加重复的值  2、批量插⼊数据 insert 语句还可以⼀次向表中添加⼀组数据,可以使⽤ select 语句替换原来的 values ⼦句,语法如下:insert into table_name [ (column_name1[,column_name2...]...) ] selectSubquerytable_name:要插⼊数据的表名column_name1 和 column_name2 :表⽰指定的列名selectSubquery:任何合法的 select 语句,其所选列的个数和类型要与语句中的 column 对应。

oracle数据库增删改查练习50例-答案(精)

oracle 数据库增删改查练习50例-答案一、建表--学生表drop table student;create table student (sno varchar2(10,sname varchar2(10,sage date,ssex varchar2(10;insert into student values('01','赵雷',to_date('1990/01/01','yyyy/mm/dd','男';insert into student values('02','钱电',to_date('1990/12/21','yyyy/mm/dd','男';insert into student values('03','孙风',to_date('1990/05/20','yyyy/mm/dd','男';insert into student values('04','李云',to_date('1990/08/06','yyyy/mm/dd','男';insert into student values('05','周梅',to_date('1991/12/01','yyyy/mm/dd','女';insert into student values('06','吴兰',to_date('1992/03/01','yyyy/mm/dd','女';insert into student values('07','郑竹',to_date('1989/07/01','yyyy/mm/dd','女';insert into student values('08','王菊',to_date('1990/01/20','yyyy/mm/dd','女';--课程表drop table course;create table course (cno varchar2(10,cname varchar2(10,tno varchar2(10;insert into course values ('01','语文','02';insert into course values ('02','数学','01';insert into course values ('03','英语','03';--教师表drop table teacher;create table teacher (tno varchar2(10,tnamevarchar2(10;insert into teacher values('01','张三';insert into teacher values('02','李四';insert into teacher values('03','王五';--成绩表drop table sc;create table sc (sno varchar2(10,cno varchar2(10,score number(18,1;insert into sc values('01','01',80.0;insert into sc values('01','02',90.0;insert into sc values('01','03',99.0;insert into sc values('02','01',70.0;insert into scvalues('02','02',60.0;insert into sc values('02','03',80.0;insert into scvalues('03','01',80.0;insert into sc values('03','02',80.0;insert into scvalues('03','03',80.0;insert into sc values('04','01',50.0;insert into scvalues('04','02',30.0;insert into sc values('04','03',20.0;insert into scvalues('05','01',76.0;insert into sc values('05','02',87.0;insert into scvalues('06','01',31.0;insert into sc values('06','03',34.0;insert into scvalues('07','02',89.0;insert into sc values('07','03',98.0;commit;二、查询1.1、查询同时存在"01"课程和"02"课程的情况select s.sno, s.sname, s.sage, s.ssex, sc1.score, sc2.score from student s, sc sc1, sc sc2 where s.sno = sc1.sno and s.sno = sc2.sno and o = '01' and o = '02';1.2、查询必须存在"01"课程,"02"课程可以没有的情况select t.*, s.score_01, s.score_02 from student t inner join (select a.sno, a.score score_01, b.score score_02 from sc a left join (select * from sc where cno = '02' b on (a.sno = b.sno where o = '01' s on (t.sno = s.sno;2.1、查询同时'01'课程比'02'课程分数低的数据select s.sno, s.sname, s.sage, s.ssex, sc1.score, sc2.score from student s, sc sc1, sc sc2 where s.sno = sc1.sno and s.sno = sc2.sno and o = '01' and o = '02' and sc1.score < sc2.score;2.2、查询同时'01'课程比'02'课程分数低或'01'缺考的数据select s.sno, s.sname, s.sage, s.ssex, t.score_01, t.score_02 from student s, (select b.sno, a.score score_01,b.score score_02 from (select * from sc where cno = '01' a, (select * from sc where cno = '02' b where a.sno(+ = b.sno t where s.sno = t.sno and (t.score_01 < t.score_02 ort.score_01 is null;3、查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩select s.sno, s.sname, t.avg_score avg_score from student s, (select sno, round(avg(score, 2 avg_score from sc group by sno having avg(score >= 60 order by sno t where s.sno = t.sno;4、查询平均成绩小于60分的同学的学生编号和学生姓名和平均成绩4.1、有考试成绩,且小于60分select s.sno, s.sname, t.avg_score avg_score from student s,(select sno, round(avg(score, 2 avg_score from sc group by sno having avg(score < 60 order by sno t where s.sno = t.sno;4.2、包括没有考试成绩的数据select g.* from (select s.sno, s.sname,nvl(t.avg_score, 0 avg_score from student s, (select sno, round(avg(score, 2 avg_score from sc group by sno order by sno t where s.sno = t.sno(+ g where g.avg_score < 60;5、查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩5.1、查询所有成绩的(不含缺考的)。

oracle临时表空间的增删改查操作

操作oracle 临时表空间的增删改查1、查看临时表空间dba_temp_files视图v_$tempfile视图select tablespace_name,file_name,bytes/1024/1024 file_size,autoextensible from dba_temp_files;select status,enabled, name, bytes/1024/1024 file_size from v_$tempfile;--sys用户查看2、缩小临时表空间大小alter database tempfile 'D:\ORACLE\PRODUCT\' resize 100M;3、扩展临时表空间:方法一、增大临时文件大小:SQL> alter database tempfile ‘/u01/app/oracle/oradata/orcl/’ resize 100m;方法二、将临时数据文件设为自动扩展:SQL> alter database tempfile ‘/u01/app/oracle/oradata/orcl/’ autoextend on next 5m maxsize unlimited;方法三、向临时表空间中添加数据文件:SQL> alter tablespace temp add tempfile ‘/u01/app/oracle/oradata/orcl/’ size100m;4、创建临时表空间:SQL> create temporary tablespace temp1 tempfile ‘/u01/app/oracle/oradata/orcl/’ size 10M;5、更改系统的默认临时表空间:--查询默认临时表空间select from database_properties whereproperty_name='DEFAULT_TEMP_TABLESPACE';--修改默认临时表空间alter database default temporary tablespace temp1;所有用户的默认临时表空间都将切换为新的临时表空间:select username,temporary_tablespace,default_ from dba_users;--更改某一用户的临时表空间:alter user scott temporary tablespace temp;6、删除临时表空间删除临时表空间的一个数据文件:SQL> alter database tempfile ‘/u01/app/oracle/oradata/orcl/’ drop;删除临时表空间彻底删除:SQL> drop tablespace temp1 including contents and datafiles cascade constraints;7、查看临时表空间的使用情况GV_$TEMP_SPACE_HEADER视图必须在sys用户下才能查询GV_$TEMP_SPACE_HEADER视图记录了临时表空间的使用大小与未使用的大小dba_temp_files视图的bytes字段记录的是临时表空间的总大小SELECT ,total - used as "Free",total as "Total",roundnvltotal - used, 0 100 / total, 3 "Free percent"FROM SELECT tablespace_name, SUMbytes_used / 1024 / 1024 usedFROM GV_$TEMP_SPACE_HEADERGROUP BY tablespace_name temp_used,SELECT tablespace_name, SUMbytes / 1024 / 1024 totalFROM dba_temp_filesGROUP BY tablespace_name temp_totalWHERE =8、查找消耗资源比较的sql语句Select ,,,to_numberrtrim as Space,tablespace,segtype,sql_textfrom v$sort_usage su, v$parameter p, v$session se, v$sql swhere = 'db_block_size'and =and =and =order by ,9、查看当前临时表空间使用大小与正在占用临时表空间的sql语句select , segtype, blocks 8 / 1000 "MB", sql_textfrom v$sort_usage sort, v$session sess, v$sql sqlwhere =and =order by blocks desc;10、临时表空间组介绍1创建临时表空间组:create temporary tablespace tempts1 tempfile '/home/oracle/' size 2M tablespace group group1;create temporary tablespace tempts2 tempfile '/home/oracle/' size 2M tablespace group group2;2查询临时表空间组:dba_tablespace_groups视图select from dba_tablespace_groups;GROUP_NAME TABLESPACE_NAME------------------------------ ------------------------------GROUP1 TEMPTS1GROUP2 TEMPTS23将表空间从一个临时表空间组移动到另外一个临时表空间组:alter tablespace tempts1 tablespace group GROUP2 ;select from dba_tablespace_groups;GROUP_NAME TABLESPACE_NAME------------------------------ ------------------------------GROUP2 TEMPTS1GROUP2 TEMPTS24把临时表空间组指定给用户alter user scott temporary tablespace GROUP2;5在数据库级设置临时表空间alter database <db_name> default temporary tablespace GROUP2;6删除临时表空间组删除组成临时表空间组的所有临时表空间drop tablespace tempts1 including contents and datafiles;select from dba_tablespace_groups;GROUP_NAME TABLESPACE_NAME------------------------------ ------------------------------GROUP2 TEMPTS2drop tablespace tempts2 including contents and datafiles;select from dba_tablespace_groups;GROUP_NAME TABLESPACE_NAME11、对临时表空间进行shrink11g新增的功能--将temp表空间收缩为20Malter tablespace temp shrink space keep 20M;--自动将表空间的临时文件缩小到最小可能的大小ALTER TABLESPACE temp SHRINK TEMPFILE ’/u02/oracle/data/’;临时表空间作用Oracle临时表空间主要用来做查询和存放一些缓冲区数据;临时表空间消耗的主要原因是需要对查询的中间结果进行排序;重启数据库可以释放临时表空间,如果不能重启实例,而一直保持问题sql语句的执行,temp表空间会一直增长;直到耗尽硬盘空间;网上有人猜测在磁盘空间的分配上,oracle使用的是贪心算法,如果上次磁盘空间消耗达到1GB,那么临时表空间就是1GB;也就是说当前临时表空间文件的大小是历史上使用临时表空间最大的大小;临时表空间的主要作用:索引create或rebuild;Order by 或group by;Distinct 操作;Union 或intersect 或minus;Sort-merge joins;analyze.。

oracle创建表视图 增删改查的实例

(10)grant select,insert,delete on 社会团体 to 李平with grant option;grant select,insert,delete on 参加 to 李平with grant option;
__________________________________________________________________________________________________
create view 参加人情况(职工号,姓名,社团编号,社团名称,参加日期)as select 参加.职工号,姓名,社会团体.编号,名称,参加日期from 职工,社会团体,参加where 职工.职工号=参加.职工号 and 参加.编号=社会团体.编号
_________________________________________________________________________________________________
constraint C4 foreign key (职工号) references 职工 (职工号),
constraint C5 foreign key (编号) references 社会团体 (编号));
__________________________________________________________________________________________________
__________________________________________________________________________________________________
求参加人数超过100人的社会团体的名称和负责人
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档