oracle实验 表的插入、修改和删除的原理
- 格式:docx
- 大小:46.61 KB
- 文档页数:1
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 子句指定要更新的行的条件来执行更新操作。
任务一:
1.启动DBMS服务器,视情况决定是否附加实验用数据库。
2.利用对象资源管理器,对指定数据库中的表进行数据的添加、修改和删除。
尝试去做一些违反数据库定义中的约束的操作,分析反馈操作信息,并回答思考问题。
3.在查询编辑器中,利用INSERT、DELETE、UPDA TE语句在指定的数据库的相关表中进行如下数据的添加、修改和删除。
对操作中出现的问题进行分析,并加以解决。
在已经创建好的学生选课数据库中的各表中添加样例数据,并更新“学生—课程”数据库。
(1)向学生表S中插入一行数据。
(分析插入数据的学号与已有学号相同或不同时的反馈信息)。
学号相同时:
学号不同时:
(2)根据学生表和课程表生成一个“计算机”系学生的成绩临时表CGRADE,表中包括SN、CNO、GRADE三个属性。
(3)将王玲所学的高等数学成绩改为86.0.
(4)删除成绩低于所有课程平均成绩的选课元组。
(5)设置数据修改和删除的处理策略。
(要求选课表中有S04的选课信息)a.将学生表中学号为S04的学生学号修改为S28。
b.删除学生表中学号为S28的学生信息。
查看执行操作后表SC的变化情况或不能执行操作的反馈信息,并加以分析。
第11讲数据的插入,更新,合并,删除目的:1.掌握Oracle中的SQL DML语句。
2.掌握如何向表中加入数据insert into语句。
3.掌握修改表中的数据的update语句。
4.掌握删除表中数据的delete from 语句。
授课内容:11.1表中数据的插入:insert into 语句1. 作用:向表中增加记录,或通过视图向视图的基表增加记录。
2. 执行insert的前置条件:(1)表在你的方案中。
(2)其他方案中的表,你有此表的insert对象权限。
(3)你有INSERT ANY TABLE 系统级权限,3. 执行insert into 语句,会触发在表中定义的insert 触发器。
1.insert into 的类型:2.单行插入的insert into 语句:(1)单行插入语法:每次只插入一个记录insert into [schema.]table_name [(列名1,列名2,列名3,。
列n)] values (值1,值2,值3,。
值n)(2)如果省略(列名列表),values()中的值必须与表字段个数相同,且每个值与对应的字段的数据类型要相同。
注:根据oracle9i的数据类型自动转换原则,可以自动根据列类型的要求自动转换。
如:insert into dept values('60',50,50) 是可以的。
insert into dept values('aa',50,50) 是不行的。
(3)如果有(列名列表),则values()中的值与列名中的个数相同。
并且值的类型与列要求的类型对应。
(4)所有要插入的数据,要满足表的约束,才能插入成功。
(5)一般情况下,字符串用单引号括起来,数字直接写数字,日期用一般使用to_date()函数把字符串转换为日期。
(6)经常使用DA TA函数sysdate, 或current_date来执行日期的插入数据。
不让用户手动输入。
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字句指定应更新哪些行。
表的增删改查创建表CREATE TABLE [用户名.]表名(列名数据类型 [default 默认值] [,...]...);SQL> create table t1 (2 id number(10),3 name varchar2(20),4 password varchar2(30));SQL> create table tab1 as select * from emp where sal>2000; SQL> create table tab2 as select * from emp where 1=2;增加修改删除列增加一列ALTER TABLE [用户名.]表名ADD (列名1 数据类型[DEFAULT 表达式],[列名2 数据类型],...)SQL> desc t1;名称是否为空? 类型------------- -------- ---------------ID NUMBER(10)NAME VARCHAR2(20)PASSWORD VARCHAR2(30)SQL> alter table t1 add (sal number(10));SQL> desc t1;名称是否为空? 类型--------------- -------- --------------------ID NUMBER(10)NAME VARCHAR2(20)PASSWORD VARCHAR2(30)SAL NUMBER(10)SQL> alter table t1 add (job varchar(10));SQL> desc t1;名称是否为空? 类型------------------ -------- ----------------ID NUMBER(10)NAME VARCHAR2(20)PASSWORD VARCHAR2(30)SAL NUMBER(10)JOB VARCHAR2(10)修改表已存列的数据类型与列名重命名语法格式:ALTER TABLE 表名MODIFY (列名1,数据类型 [DEFAULT 表达式],列名2,数据类型,...)SQL> desc t1;名称是否为空? 类型-------------------- -------- ---------------ID NUMBER(10)NAME VARCHAR2(20)PASSWORD VARCHAR2(30)SAL NUMBER(10)JOB VARCHAR2(10)SQL> alter table t1 modify (sal varchar2(20));SQL> desc t1;名称是否为空? 类型--------------------- -------- ---------------ID NUMBER(10)NAME VARCHAR2(20)PASSWORD VARCHAR2(30)SAL VARCHAR2(20)JOB VARCHAR2(10)SQL> alter table t1 rename column job to comm;SQL> desc t1;名称是否为空? 类型-------------------- -------- ---------------ID NUMBER(10)NAME VARCHAR2(20)PASSWORD VARCHAR2(30)SAL VARCHAR2(20)COMM VARCHAR2(10)SQL> alter table t1 modify (comm number(10));SQL> desc t1;名称是否为空? 类型------------------------ -------- ---------------ID NUMBER(10)NAME VARCHAR2(20)PASSWORD VARCHAR2(30)SAL VARCHAR2(20)COMM NUMBER(10)删除表里的某列ALTER TABLE 表名 DROP COLUMN 列名;SQL> desc t1;名称是否为空? 类型------------------------------ -------------------ID NUMBER(10)NAME VARCHAR2(20)PASSWORD VARCHAR2(30)SAL VARCHAR2(20)COMM NUMBER(10)SQL> alter table t1 drop column comm;SQL> desc t1;名称是否为空? 类型------------------------ -------- -------------------ID NUMBER(10)NAME VARCHAR2(20)PASSWORD VARCHAR2(30)SAL VARCHAR2(20)间接删除表里已存在的列删除表里的列特别是删除大表里的列是特耗资源的所以在删除一个列时可以先把要删除的列打标记,标记成无用列 ,然后等系统不忙时在彻底删除这个列语法格式:ALTER TABLE 表名 SET UNUSED COLUMN 列名;把一个列设置成无用列注意一下事项⎽必需在8i以上版本适用⎽该列被设置成无用列后,并不是删除了而是设置成无用标记而已还需要手工删除这个列⎽设置成无用列后,无法用sqlplus或是sql 语句看到的⎽oracle把设置成无用列当作删除列处理⎽可以适用DROP UNUSED (列名) 选项删除被设置成无用的列⎽因为该语句是DDL语句没有恢复无用列的命令然后等系统不忙时在用ALTER TABLE 表名DROP UNUSED COLUMN;SQL> alter table t1 set unused column sal;SQL> desc t1;名称是否为空? 类型----------------------- -------- --------------ID NUMBER(10)NAME VARCHAR2(20)PASSWORD VARCHAR2(30)SQL> alter table t1 drop unused column;SQL> desc t1;名称是否为空? 类型------------------------ -------- --------------ID UMBER(10)NAME VARCHAR2(20)PASSWORD VARCHAR2(30)truncate table 截断表当一个表里的数据不再需要时,可以适用truncate table 全部删除表里的数据,该语句为DDL语句无法适用rollback 来回滚数据语法格式:TRUNCATE TABLE 表名特点:⎽删除表中的数据行,但保留表的结构⎽truncate 是DDL 语句,如果没有备份数据无法恢复⎽truncate 删除表中的数据行后,立即释放磁盘空间如果只删除数据,而保留数据结构适用truncate 如果既要删除数据,也要删除表结构适用DROP语法格式:DROP TABLE 表名特点:⎽DROP删除表中的所有数据行和表的结构⎽DROP 也删除表的所有索引⎽提交所有挂起事务所有基于被DROP的表的视图别名依然保留但已经无效对象表的重命名语法格式:RENAME 旧表名 TO 新表名SQL> rename t1 to table1;SQL> desc t1;ERROR:ORA-04043: 对象 t1 不存在SQL> desc table1;名称是否为空? 类型---------------------- -------- -------------ID NUMBER(10)NAME VARCHAR2(20)PASSWORD VARCHAR2(30)删除一个表DROP TABLE TABLENAMESQL> drop table tab1;SQL> select * from tab;TNAME TABTYPE CLUSTERID ------------------------------ ------- ---------- DEPT TABLEEMP TABLEBONUS TABLESALGRADE TABLEBIN$DCVrueY1SDSmKp/kGnvFpA==$0 TABLETAB2 TABLETABLE1 TABLE清空闪回回收站SQL> purge Recyclebin;回收站已清空。
Oracle数据库实验报告实验一:Oracle 10g安装卸载及相关工具配置一、实验目标:安装Oracle 10g,了解OEM,通过DBCA安装数据库,通过DBCA删除数据库,sqldeveloper连接数据库,卸载oracle 10g。
二、实验学时数2学时三、实验步骤和内容:1、安装Oracle10g(默认安装数据库)双击,选择基本安装,安装目录D:盘,标准版,默认数据库orcl,口令bhbh。
进入先决条件检查界面时:网络配置需求选项不用打勾,直接下一步,是。
直到安装成功。
2、登陆和了解OEM主要是已网页的形式来对数据库进行管理。
- OraDb10g_home1->配置和移植工具->Database Configuration Assistant->删除数据库->……4、通过DBCA安装数据库xscj程序->Oracle - OraDb10g_home1->配置和移植工具->Database Configuration Assistant->创建数据库->……5、sqldeveloper连接数据库打开sqldeveloper,新建连接连接名:system_ora用户名:system口令:bhbh主机名:本机计算机名SID:xscj测试,显示成功,连接,保存。
6、卸载oracle 10gWindows下1>停止所有Oracle服务,点Universal Installer卸载2>删除注册表中的所有关于Oracle项在HKEY_LOCAL_MACHINE\SOFTWARE下,删除Oracle目录3>删除硬盘上所有Oracle文件。
(1)Oracle安装文件(2)系统目录下,在Program files文件夹中的Oracle文件四、上机作业根据实验步骤完成逐个实验目标中的任务。
五、心得体会通过这次的实验,我了解了oracle数据库的情况。
表数据的插入、修改和删除一、实验目的1.在数据表中用Insert增加记录。
2.用Update修改数据表中的数据。
3.用Delete删除表中的数据。
4.了解事务处理过程及其命令。
二、实验环境安装了oracle数据库的计算机一台三、实验步骤和内容1.Insert命令1)用来在数据表中增加记录,格式如下:INSERT INTO tablename [(column, column,….)]V ALUES (value, value, ….);命令中[(column, column,….)]是可选的。
一般情况下,为了编程的方便,最好指定字段列表。
该命令每次只能增加一条记录。
注意,CHARACTER和DA TE必须用单引号括起来。
例如:INSERT INTO DEPT (DEPTNO,DNAME,LOC)V ALUES (50,’市场部’,’上海’);在DEPT中增加一个新部门,忽略部门名称,这时字段列表必须指定否则出错,可用如下命令:INSERT INTO DEPT (DEPTNO, LOC)V ALUES (50,’上海’);另外,如果部门名称不能确定,可用NULL代替,如下:INSERT INTO DEPT (DEPTNO,DNAME,LOC)V ALUES (50,NULL,’上海’);增加DA TE类型的数值,常用格式是DD-MON-YY。
默认的世纪是20世纪,ORCALE 已克服了Y2K(千年虫)问题。
如下:INSERT INTO EMP (EMPNO,NAM,JOB,MGR,HIREDA TE,SAL,COMM,DEPTNO)V ALUES (7568,’MASON’,’ANALYST’,7566,TO_DA TE(‘24/06/2084 9:30’,’DD/MM/YYYY HH:MI’),3000,NULL,20);2)增加从其他数据表查询出的数据命令格式:INSERT INTO table [(column, column, ….)]SELECT select-listFROM table(s);2.Update命令在需要修改表中数据时,可使用update命令如下:UPDA TE table[alias]SET column[,column….] = {expression, subquery}[WHERE condition];命令由三部分组成:①update后跟一个或多个要修改的表,这部分是必不可少的。
ORACLE數據對象的統一命名與編碼規範1、編寫目的使用統一的命名和編碼規範,使資料庫命名及編碼風格標準化,以便於閱讀、理解和繼承﹐同時方便后續維護。
2、適用範圍本規範適用於公司範圍內所有以ORACLE作為後臺資料庫的應用系統和專案開發工作。
3、物件命名規範3.1 資料庫和SID資料庫名定義為系統名+模組名★ 全局資料庫名和常式SID 名要求一致★ 因SID 名只能包含字元和數位,所以全局資料庫名和SID 名中不能含有“_”等字元3.2 和表相關數據對象3.2.1 表空間★ 面向用戶的專用資料表空間以用戶名+_+data命名,如Edu 用戶專用資料表空間可命名為Edu_data★ 面向用戶的專用索引表空間以用戶名+_+idx命名★ 面向用戶的專用臨時表空間以用戶名+_+tmp命名★ 面向用戶的專用回滾段表空間以用戶名+_+rbs 命名★ 面向應用的表空間以應用名+_data/應用名+_idx/應用名+_tmp/應用名+_rbs 命名★ LOB 段資料專用表空間以其資料表空間+_+lobs 命名,如上例中資料表空間為Edu_data,則LOB 段表空間可命名為Edu_data_lobs3.2.2 表空間檔表空間檔命名以表空間名+兩位數序號(序號從01開始)組成,如Edu_data01 等3.2.3 表表命名要遵循以下原則:★ 一般表採用“系統名+t_+模組名+_+表義名”格式構成★ 若資料庫中只含有單個模組,命名可採用“系統名+t_+表義名”格式構成★ 模組名或表義名均以其中文拼音的首字元命名,表義名中中文拼音均採用小寫,且字元間不加分割符;★ 表別名命名規則:取表義名的前3 個字元加最後一個字元。
如果存在衝突,適當增加字元(如取表義名的前4 個字元加最後一個字元等)★ 臨時表採用“系統名+t_tmp_+表義名”格式構成★ 表的命名如★ 關聯表命名為Re_表A_表B,Re 是Relative的縮寫,表A 和表B均採用其表義名或縮寫形式。
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 对应。
实验2 表数据的插入、修改和删除目的和要求(1)学会在OEM中对数据库表进行插入、修改和删除数据的操作(2)学会使用PL/SQL语句对数据库表进行插入、修改和删除数据的操作(3)了解数据更新操作时要注意数据的完整性(4)了解PL/SQL语句对表数据操作的灵活控制功能实验准备首先了解对表数据的插入、修改和删除都属于表数据的更新操作。
对表数据的操作以企业管理器中进行,也可以由PL/SQL语句实现。
其次要掌握PL/SQL中对表数据进行插入、修改和删除的命令分别是INSERT、UPDATE、DELETE(或TRANCATE TABLE)。
要特别注意在执行插入、删除修改等操作时,必须保证数据的完整性。
此外,还要了解使用PL/SQL语句在对表数据进行插入、修改和删除时,比在OEM中操作表数据更为灵活,功能更强大。
实验内容分别使用OEM和PL/SQL语句,在实验1建立的数据库YGGL的3个表Eemployees、Departments和Salary中插入多行数据记录,然后修改和删除一些记录。
使用PL/SQL进行有限制的修改和删除。
一、在企业管理器中向数据库YGGL的表中加入数据逐字段输入各记录值,输入完毕后,单击“应用”按钮,关闭表窗口。
的表数据1.在OEM中删除表Eemployees与Salary的编号为010008和210678的记录。
注意进行删除操作时,作为两表主键的EmployeeID的值,以保持数据的完整性。
在OEM中选择表Eemployees 在其上单击鼠标右键选“表数据编辑器”选择要删除的行单击鼠标右键删除单击“应用”关闭表窗口。
2.在OEM中删除表Departments中编号为2的部门,同时要删除表Eemployees 中部门编号为2的记录或者改变编号。
操作方法同(1)3.在OEM中将表Eemployees中编号为020018的记录的部门号改为4。
在OEM中选择表Eemployees 在其上单击鼠标右键选“表数据编辑器”将光标定位至编号为020018的记录的DepartmentID字段,将值由1改为4,单击“应用”按钮,完成修改。
Oracle数据库实例的创建、删除与修改(doc 6页)Oracle数据库实例的创建、删除、修改以SUSE10SP2、Oracle10gR2为例。
本文中的数据库实例这一称谓应该换做数据库更为准确,数据库可以理解为是一个物理的静态概念,主要包括一些物理存在的数据库文件,而数据库实例则是一个动态概念,包括一些内存区域以及若干进程,数据库实例是对数据库进行操作的执行者。
(20090714修改)安装完Oracle数据库系统的安装后,需要创建数据库实例才能真正开始使用Oracle数据库服务。
总结起来,Oracle有三种创建数据库实例的方法。
第一种,最常用也最简单,那就是通过DBCA(Database Configuration Assistant),这是Oralce提供的一个图形界面的数据库实例配置工具,通过它可以创建、删除和修改数据库实例,它的使用也比较简单、易懂,交互式的图形界面操作,非常准确有效的提示与配置,是一个比较方便的创建数据库实例的方式。
按照DBCA给出的提示,很容易创建一个新数据库实例。
在创建数据库的时候,DBCA还提供了两个选项,让你可以根据刚刚设置好的参数生成一个数据库实例模板和一份数据库实例创建脚本。
这两个东西是非常好,非常有用的东西,数据库模板由Oracle自己管理维护,已经创建好的数据库实例模板可以在DBCA图形程序新建数据库实例时作为模板来使用,另外在DBCA使用responseFile文件或者命令行参数创建数据库时也需要用到(见后面介绍);数据库创建脚本是一组脚本,包括shell脚本和sql脚本,这些脚本共同实现一个功能,那就是按照你之前在DBCA中设置好的那样创建一个数据库实例(后面也会有介绍),你需要做的只是将这些脚本在你的代码中调用起来。
当然,你也可以选择只生成数据库模板或者数据库脚本,而不用去创建一个真的数据库(这通常很费时间)。
command<<任意自定义分隔符>(换行)内容>(换行)内容>自定义分隔符shell中遇到<<则会自动将下一个单词认作分隔符,并将分隔符后面的文本当作command命令执行的内容传递给command依次全部执行直至遇到下一个分隔符单词才结束。
oracle11g创建修改删除表oracle11g创建修改删除表我的数据库名字: ORCL 密码:1234561、模式2、创建表3、表约束4、修改表5、删除表1、模式set oracle_sid=ORCLsqlplus /nolog1)进⼊同名模式(⾸次使⽤可能需要设置见附录,我设置scott⽤户的密码 123)connect scott/123show user2)进⼊sys模式(⽆法删除sys列)connect /as sysdbashow user3)进⼊public模式connect sys/123456 as sysopershow userORA-12560: TNS: 协议适配器错误⼀般情况下,造成ORA-12560: TNS: 协议适配器错误的问题的原因有三个:1.监听服务没有起起来。
windows平台个⼀如下操作:开始---程序---管理⼯具---服务,打开服务⾯板,启动oraclehome92TNSlistener服务。
2.database instance没有起起来。
windows平台如下操作:开始---程序---管理⼯具---服务,打开服务⾯板,启动oracleserviceXXXX,XXXX就是你的database SID.⽐如我的SID就是ORCL。
3.右键我的电脑,属性--⾼级--环境变量---系统变量--新建,变量名=oracle_sid,变量值=XXXX,XXXX就是你的database SID造成上述的主要原因是,我新安装的数据库实例oratest将我原有的ORCL的sid给覆盖了,这⾥通过设置环境变量的⽅法来进⾏控制sid。
2、创建表先进⼊同名模式(普通⽤户没权限建表)connect scott/1231)建表,表名:productinfoProductId varchar2(10) constraint P_Id primary key,ProductName varchar2(10) not null,ProductPrice number(8,2) constraint P_Price check(ProductPrice between 0 and 1000), Quantity number(10));2)创建临时表Create global temporary table temporary_table(ID number(2) primary key,Name varchar2(20))On commit Delete rows;3)利⽤⼦查询创建表Create table P_select(P_Id,P_Name)AsSelect ProductId,ProductName From Productinfo where ProductPrice > 10;3、表约束1)添加唯⼀约束Alter table productinfo add constraint P_Name Unique(ProductName);2)删除唯⼀约束Alter table productinfo drop Unique(ProductName);3)约束状态禁⽤约束Alter table productinfo disable constraint P_Price;激活约束Alter table productinfo enable constraint P_Price;4)查询约束信息Select constraint_name,constraint_type,deferred,statusFrom user_constraintswhere table_name='PRODUCTINFO';‘PRODUCTINFO’⼀定要⼤写4、修改表1)添加新列Alter table productinfoADD(Category number(6) );2)修改列的类型Alter table productinfoModify Category varchar2(10);3)修改列名Alter table productinfo rename column Category to Desperation; 4)删除列Alter table productinfoDrop (Desperation);5)表参数修改Alter table productinfoPctfree 10 pctused 70 ;6)表结构重组Alter table productinfo move;7)表重命名productinfo 改为 productRename productinfo to product;product 改为 productinfoAlter table product rename to productinfo;8)为表和列添加注释Comment on table productinfo IS '商品信息';Comment on column productinfo.ProductName IS '商品名称'; (给列加注释:SQL>comment on column 表名.列名 is '列注释';)5、删除表Drop table productinfo;断开连接:exit附录:第⼀次使⽤scottMYDB 设置为新密码设置为 123新进⼊SYS模式,在此模式中修改 Scott连接scott更改密码输⼊新⼝令时窗⼝不显⽰输⼊字符。
Oracle增删改(INSERT、DELETE、UPDATE)语句Ø简介本⽂介绍 Oracle 中的增删改语句,即 INSERT、DELETE、UPDATE 语句的使⽤。
是时候展现真正的技术了,快上车:1.插⼊数据(INSERT)2.修改数据(UPDATE)3.删除数据(DELETE)4.使⽤ MERGE INTO 语句完成增删改操作5.回滚(rollback)的使⽤6.注意事项1.插⼊数据(INSERT)u语法:INSERT INTO TABLE_NAME [(column1[, column2, …]] VALUES(value1[, value2, …]);说明:1)INSERT 数据时可以指定列名,也可不指定列名。
如果不指定列名,必须为每⼀列都提供数据,并且顺序必须与列名的顺序⼀致;如果指定列名,提供的数据需要与指定的列名顺序⼀致;2)插⼊数据时数字类型的列可直接写⼊,字符或⽇期类型的列需要加单引号;3)插⼊的数据必须满⾜约束规则,主键和 NOT NULL 的列必须提供数据。
u插⼊数据的⽅式1)⾸先,可以在 PL/SQL Developer 中使⽤ FOR UPDATE 语句1.⾸先执⾏ SELECT 语句SELECT * FROM Table01 FOR UPDATE;2.点击锁表按钮3.编辑数据 -> 记⼊改变 -> 表解锁按钮4.最后点击提交l说明:低版本的 PL/SQL Developer 操作与以上类似。
2)使⽤ INSERT INTO 语句,插⼊⼀条数据INSERT INTO Table01(Id, Name) VALUES(2, '李四'); --指定所有列COMMIT; --必须执⾏提交命令提⽰:在平常开发中,建议显⽰指定插⼊的列名,有助于提⾼代码的可读性。
INSERT INTO Table01(Id) VALUES(3); --指定部分列,其他未指定的列表必须可以为空(即 NULL)COMMIT;INSERT INTO Table01 VALUES(4, '王五'); --不指定任何列,必须按顺序插⼊所有列COMMIT;3)使⽤ INSERT INTO SELECT 语句,插⼊多条数据INSERT INTO Table02 SELECT * FROM Table01; --将 Table01 中的所有数据插⼊ Table02 中(注意:可以指定插⼊的列;Table02 必须存在;可指定 Table01 的查询条件)COMMIT;4)另外,还可以使⽤ PL/SQL Developer 中使⽤变量的⽅式(该⽅式不怎么实⽤,不做详细介绍)INSERT INTO Table01 VALUE(&Id, &Name);5)同时插⼊多条(⽀持多表插⼊)INSERT ALLINTO Table01 VALUES(10, '张10')INTO Table01 VALUES(11, '张11')INTO Table02 VALUES(20, '李20') --同时插⼊ Table02SELECT * FROM DUAL;COMMIT;注意:1.INSERT ALL INTO 在效率上,⽐逐条执⾏ INSERT INTO 语句要⾼很多;2.在使⽤ INSERT ALL INTO 语句插⼊数据时,对于主键使⽤序列插⼊式,多条 INTO 会违反约束条件(即对于同⼀个序列的多条 INTO 会产⽣相同的序列号),所以使⽤序列插⼊时,并不适⽤使⽤ INSERT ALL INTO 同时插⼊多条数据!n注意事项:1.在插⼊数值(number)和字符(char)类型时,Oracle ⽀持数值与字符相互转换,例如:字符转数值:INSERT INTO Tab01(id)VALUES('12a');--ORA-01722:⽆效数字INSERT INTO Tab01(id)VALUES('123');--插⼊成功,结果为123INSERT INTO Tab01(id)VALUES('456.56');--插⼊成功,结果为457(四舍五⼊)数值转字符:INSERT INTO Tab01(name)VALUES(123);--插⼊成功,结果为123INSERT INTO Tab01(name)VALUES(123.56);--插⼊成功,结果为123.56提⽰:虽然 Oracle ⽀持这种转换,但是并不建议使⽤该⽅式去写⼊数据,不利于理解和阅读。
oracle update insert delete 语句Oracle是一种强大的关系型数据库管理系统(RDBMS),提供丰富的功能和灵活的查询语言,满足了各种不同的数据管理需求。
在Oracle中,我们可以使用SQL语句进行数据操作,包括更新(UPDATE)、插入(INSERT)和删除(DELETE)。
更新数据(UPDATE)是指修改现有数据的过程,可以根据条件将表中的一行或多行数据进行更新。
在Oracle中,我们可以使用UPDATE语句完成此操作。
下面将详细介绍如何使用UPDATE语句更新数据。
首先,我们需要确定要更新的表和字段。
语法如下:UPDATE table_nameSET column1 = value1, column2 = value2, ...WHERE condition;在这个语法中,table_name是要更新的表的名称,column1、column2等是要更新的字段名称,value1、value2等是要更新的值。
WHERE条件用于指定要更新哪些行的条件。
例如,我们有一个名为customers的表,其中包括字段customer_id、customer_name和customer_age。
现在,我们要将customer_id为1的行中的customer_name字段更新为"John",可以使用以下语句:UPDATE customersSET customer_name = 'John'WHERE customer_id = 1;这将会更新customer_id为1的行,将customer_name字段的值改为"John"。
此外,我们还可以使用表达式或函数来更新数据。
例如,我们想将customer_age增加5岁,可以使用以下语句:UPDATE customersSET customer_age = customer_age + 5;这将会将customer_age字段的值增加5。
实验3 表数据插入、修改和删除1,在对象资源管理器中初始化数据库YGGL中所有表的数据①②③2,在对象资源管理器中修改数据库YGGL中表的数据①在对象资源管理器中删除表Employees的第一行和Salary的第一行。
②在对象资源管理器中将表Employees中编号为020018的记录部门号改为43,使用T-SQL命令插入表数据①向表Employees中插入刚刚删除的一行数据,在“查询分析器中”输入以下SQL语句:USE YGGLXJGOINSERT INTO Employees VALUES('000001','王林','大专','1966-01-23’,1,8,'中山路32-1-508','83355668','2')②向Salary插入刚刚删除的一行数据INSERT INTO Salary(EmployeeID,InCome,OutCome) Values('000001',2100.8,123.09)4.使用SQL命令修改表数据①使用SQL命令修改表Salary中某个记录的字段值UPDATE SalarySET Income=2890WHERE EmployeeID='000001'②将职工收入增加100UPDATE SalarySET Income=Income+100;③使用SQL删除表Employees中编号为000001的职工信息DELETE FROM EmployeesWHERE EmployeeID='000001'④删除所有女性员工的信息DELETE FROM Employees WHERE Sex=0⑤使用TRANCCTE TABLE 语句删除表中所有行TRUNCATE TABLE Salary。
oracle insert delete update 执行逻辑
执行逻辑如下:
Insert(插入):将一条或多条记录插入到数据库表中。
- 语法:INSERT INTO table_name (col1, col2, ...) VALUES (value1, value2, ...);
- 执行逻辑:检查插入的记录是否符合表定义的约束条件,如果符合则将记录插入到表中。
Delete(删除):从数据库表中删除一条或多条记录。
- 语法:DELETE FROM table_name WHERE condition;
- 执行逻辑:按照条件从表中查找需要删除的记录,并将其从表中删除。
Update(更新):修改数据库表中的一条或多条记录。
- 语法:UPDATE table_name SET col1=value1, col2=value2, ... WHERE condition;
- 执行逻辑:按照条件从表中查找需要修改的记录,并将指定字段的值更新为给定的新值。
在执行这些操作时,还需要注意以下一些重要的事项:
- 事务:这些操作通常在一个事务中执行,以确保数据的一致性和完整性。
- 锁:对于更新和删除操作,数据库会进行锁定,以防止其他会话对同一记录进行访问和修改。
- 触发器:在执行这些操作时,可能会触发由数据库中定义的触发器,这些触发器会在特定的操作发生时执行相关的逻辑。
- 日志:数据库会将这些操作的详细信息记录到事务日志中,以便在需要时进行恢复或回滚操作。
实验3 表数据插入、修改和删除实验报告一.实验名称:表数据插入、修改和删除实验报告二.目的和要求1.学会使用T-SQL语句对数据库表进行插入、修改和删除数据操作。
2.了解数据更新操作时要注意数据完整性。
3.了解T-SQL语句对表数据操作的灵活控制功能。
三.实验准备首先了解对表数据的插入、删除、修改都属于表数据的更新操作。
对表数据的操作可以由T-SQL语句实现。
其次要掌握T-SQL中用于对表数据进行插入、修改和删除的命令分别是INSERT、UPDA TE和DELETE(或TRUNCA TE TABLE)。
要特别注意在执行插入、删除、修改等数据更新操作时,必须保证数据完整性。
此外,还要了解使用T-SQL语句在对表数据进行插入、修改及删除时操作灵活,功能强大。
四.实验时间:2011年4月14日五.实验设备和实验环境(1) PC机。
(2) SQL Server 2000。
六.实验内容1.实验题目使用T-SQL语句,向在实验2建立的学生-课程数据库的3个表Student、Course和Sc表中插入多行数据记录,然后使用T-SQL语句进行有限制的修改和删除一些记录。
2.实验步骤(1)使用T-SQL命令分别向数据库的3个表Student、Course和Sc表中插入多行数据记录。
启动查询分析器→在“查询”窗口中输入插入操作的T-SOL语句。
单击快捷工具栏的执行图标,执行上述语句。
并观察数据变化。
在查询窗口输入:insert into student values('0921121001','陈傲','女',20,'math')insert into student values('0921121002','陈旭东','男',22,'math')insert into student values('0921121003','代祥玉','女',21,'math')insert into student values('0921121004','邓枭','男',21,'math')insert into student values('0921121005','董德翔','男',21,'math')insert into student values('0921121006','范聪聪','女',20,'math')insert into student values('0921121007','符文飞','女',20,'math')insert into student values('0921121008','傅小茂','男',21,'math')insert into student values('0921121009','高布凡','男',21,'math')insert into Student values('0921121010','谷林','男',21,'math')select * from student插入的数据如图(1)所示图(1)在查询窗口输入:insert into course values('1','数据库','5',4)insert into course values('2','数学','',2)insert into course values('3','信息系统','1',4)insert into course values('4','操作系统','6',3)insert into course values('5','数据结构','7',4)insert into course values('6','数据处理','',2)insert into course values('7','PASCAL语言','6',4) select * from course插入的数据如图(2)所示图(2)在查询窗口输入:insert into SC values('0921121001','1',85)insert into SC values('0921121001','2',76)insert into SC values('0921121001','3',90)insert into SC values('0921121002','2',95)insert into SC values('0921121002','3',68)insert into SC values('0921121003','3',86)insert into SC values('0921121004','1',75)insert into SC values('0921121005','3',89)insert into SC values('0921121006','2',87)insert into SC values('0921121007','1',63)insert into SC values('0921121008','3',67)select * from SC插入的数据如图(3)所示图(3)最终插入的所有数据如图(4)所示图(4)(2)使用T-SQL命令修改Student、Course和Sc表中的某个记录的字段值。
实验3 表数据插入、修改和删除1、目的与要求(1)学会在对象资源管理器中对数据库表进行插入、修改和删除数据操作。
(2)学会使用T-SQL语句对数据库表进行插入、修改和删除数据操作。
(3)了解数据更新操作时要注意数据完整性。
2、实验内容(1)实验题目。
分别使用对象资源管理器和T-SQL语句,向在实验2中建立的数据库YGGL 的三个表Employees、Departments和Salary中插入多行数据记录,然后修改和删除一些记录。
使用T-SQL语句进行有限制的修改和删除。
(2)实验准备首先,了解对表数据的插入、删除、修改都属于表数据的更新操作。
对表数据的操作可以再对象资源管理器中进行,也可以由T-SQL语句实现。
其次,要掌握T-SQL中用于对表数据的插入、删除和修改的命令分别是INSERT、DELETE和UPDATE.此外,还要了解使用T-SQL语句在对表数据进行插入、修改以及删除时,比在对象资源管理器中操作表数据更为灵活,功能更强大。
在实验2中,用于实验的YGGL数据库中的3个表已经建立,现在要将各表的样本数据添加到表中。
样本数据如表T3.1、表T3.2和表T3.3所示。
表T3.1 Employees表数据样本表T3.2 Departments表数据样本表T3.3 Salary表数据样本3、实验步骤(1)在对象资源管理器中初始化数据库YGGL中所有表的数据。
①在对象资源管理器中展开‘数据库YGGL’节点,选择要进行操作的表‘employees’,右击鼠标,在弹出的快捷菜单上选择“编辑前200行”菜单项,进入“表数据窗口”。
在此窗口中,表中的记录按行显示,每个记录占一行。
用户可通过“表数据窗口”向表中加入表T3.1中的记录,输完一行记录后将光标移到下一行即保存了上一行记录。
②用同样的方法向Departments和Salary表中分别插入表T3.2和T3.3中的记录。
注意:●插入的数据要符合列的类型。
Oracle实验表的插入、修改和删除的原理Oracle实验中,表的插入、修改和删除的原理如下:
1.插入数据:
●当向表中插入数据时,Oracle会根据表的结构(列的数据类型和
约束等)对数据进行验证,确保数据符合表的定义。
●如果要插入的数据与表中的主键或唯一约束冲突,Oracle会抛出
错误。
●插入数据时,可以使用INSERT语句指定要插入的列和对应的数
据值。
如果未指定列名,则必须为表中的每一列提供一个值。
2.修改数据:
●当修改表中的数据时,Oracle会找到要修改的行,并更新相应的
列的值。
●如果修改的数据违反了表中的某些约束(如唯一约束、非空约束
等),Oracle会抛出错误。
●修改数据时,可以使用UPDATE语句指定要修改的列和新值,以
及用于定位要修改的行的条件(通常为WHERE子句)。
3.删除数据:
●当从表中删除数据时,Oracle会找到要删除的行,并将其从表中
删除。
●如果删除的数据违反了表中的某些约束(如外键约束等),
Oracle会抛出错误。
●删除数据时,可以使用DELETE语句指定用于定位要删除的行的条
件(通常为WHERE子句)。
如果要删除表中的所有行,可以使用
TRUNCATE TABLE语句。
这些原理是基于关系数据库管理系统的基本操作,Oracle作为关系数据库管理系统之一,也遵循这些原理。
在实际实验中,需要注意操作的正确性和数据的一致性,以避免数据损坏或错误。