欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

oracle的学习Ⅳ(create、insert、update、delete、约束、事务)

程序员文章站 2022-09-05 13:18:23
一、create(DDL)方法一: 通过查询建表create table tablename as select;create table t1 as select * from emp;// emp查询的结果赋给t1create table t2 as select ename,sal from emp where deptno=20;create table t3 as select deptno,avg(sal) avgsal from emp group by deptno;crea...

一、create(DDL)

方法一: 通过查询建表

create table tablename as select;

create table t1 as select * from emp;		// emp查询的结果赋给t1
create table t2 as select ename,sal from emp where deptno=20;
create table t3 as select deptno,avg(sal) avgsal from emp group by deptno;
create table t4 as select * from emp where 1=2;		// 复制emp表结构到t4

方法二:

create table tablename
(columnname datatype [constraint],);

表名与列名命名要求: 字母、下划线 开头 ,知名见意,最长不要超过30个字符。

常用数据类型: 数值型 number(a[,b])、字符型 char(n) ,varchar2(n)、日期型 date dd-mon-yy

要注意的是这里使用的varchar2定义的是一个长字符串,而char定义的是一个固定的字符串,当然varcharvarchar2可实现一样的效果但oracle里面对varchar2的支持更好,所以更好使用varchar2

create table student
(s_id number(12),
 s_name varchar2(20));

二、insert(DML)

一次添加一条记录

insert into tablename[(列名1……)] values(值1,);

insert into dept(deptno,dname,loc) values(10,'a','linyi');

insert into dept(dname,loc,deptno) values('a','linyi',10);	
// 对dept插入新值,值对应好其目标字段就可忽略字段顺序

insert into dept values(10,'a','linyi');

一次添加多条

insert into tablename[(列名1……)] select;

insert into dept(deptno,dname) select 12,'c' from dual union select 13,'d' from dual;	
// 两次查询结果的并,插入到dept表内

三、update(DML)

update tablename set columname1=新值[……][where];

update emp set sal=sal*1.1;			// 给emp表里面的全部sal乘1.1

update emp set sal=sal*1.1 where deptno=10;  // 给emp表里面部门号为10的全部sal乘1.1

四、delete(DML)

delete from tablename [where];

delete from emp;		// 删掉emp表内的所有记录
delete from emp where deptno=10;	// 删掉emp表内deptno为10的记录

五、约束

约束:用来保证表中数据的准确性。 包含有主键、外键、唯一性、非空、检查

主键约束

primary key列值不能重复 不能为空。一个表最多只能有一个主键约束 。

create table student
(s_id number(12) primary key,	// 一个表内只能有一个主键,但一个主键可对应多个列
 s_name varchar2(20));

唯一性约束

unique列值不能重复,可以包含多个空值 。

create table student
(s_id number(12) primary key,
 s_name varchar2(20) unique );		// 可有多个null,因为null != null

非空约束

not null列值不能为空。

create table student
(s_id number(12) primary key,
 s_name varchar2(20) unique not null );	// 这里的unique和not null就类似于primary key

检查约束

check(条件表达式) : 列值必须满足指定条件表达式的需求,null不在其检查范围内。

create table student
(s_id number(12) ,                      // 列级约束
 s_name varchar2(20) unique not null,
 s_gender char(1) check( s_gender in('f','m'))// m为男,f为女,这里的null可以插入
 primary key(s_id)		// 表级约束
 );

外键约束

foreign key(约束列) references 引用表(引用列)外键约束列列的取值必须在引用表引用列的列值范围内,外键为约束列,约束列所在的表为从表,引用列所在的表为主表

create table course
(c_id varchar2(12) primary key, 
 c_name varchar2(12)
);

create table grade
(s_id number(12) references student(s_id), 
 c_id varchar2(12) references course(c_id), 
 score number(4,1),
 primary key(s_id,c_id)                         //  表级约束
);

六、事务

oracle

事务是一个完整的操作,当操作完成后,数据才会完全呈现。DML(insert、update、delete)语句不是完整的操作,需要一个确认(提交commit,回滚rollback)的过程;而DDL(create、alter、drop)语句,每一个都是一个完整的操作。(例如:在执行DDL时会在DDL的前后添加autocommit,则会把DDL值前未commit的数据commit)。要注意的是在使用exit退出sql命令窗口时DML语句会autocommit,而强制退出则会rollback

与mysql的区别

sqlserver中需要显示的开启事务gegin tran,commit,rollback。若不含有transaction,其中insert、update、delete执行完后就自动提

七、其他

“@+绝对地址” 可以执行sql的文本文件

@d:/createTables.txt		// 文件的执行

本文地址:https://blog.csdn.net/weixin_45969777/article/details/109001140

相关标签: 数据库 oracle