当前位置: 移动技术网 > IT编程>数据库>Oracle > oracle的学习Ⅳ(create、insert、update、delete、约束、事务)

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

2020年10月10日  | 移动技术网IT编程  | 我要评论
一、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

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网