当前位置:Gxlcms > 数据库问题 > oracle学习笔记(六)

oracle学习笔记(六)

时间:2021-07-01 10:21:17 帮助过:3人阅读

不加约束

create table t_user(
   id number,--类型是number类型
   name varchar2(20),--varchar2()可以变化
   gender char(2),
   birthday date default sysdate 默认是当前日期
)

加上约束

create table t_user2(

  id number ,

  name varchar2(20) check(length(name)>2),

  gender char(2) check(gender in(‘男‘,‘女‘)),

  birthday date default sysdate

)

-- 建表并插入数据。

create table t_emp as select * from emp;

--建表不插入数据

create table t_emp2 as select * from emp where 1=2;

--建表只插入某些列 如果插入有表达式必须指定列名

create table t_emp3 as select ename,sal,sal*12 totalSal from emp where 1=2;

约束:
表 t_user
id :主键
name :非空
regDate:默认值为当前时间
cardnum :非空、唯一
age :检查,应大于等于0
deptno :外键,引用dept.deptno

创建表t_user:

 create table t_user(
    id number constraint PK_USER_ID primary key,
    name varchar2(20) constraint NOTNULL_USER_NAME not null,
    regDate date default sysdate,
    cardnum varchar2(20) constraint NOTNULL_USER_CARDNUM not null
    constraint UNIQUE_CARDNUM unique,
    age number constraint CHECK_AGE check(age>0),
    depno number constraint FK_USER_DEPTNO references dept(deptno)
 )

查看本表中的所有的约束:
select * from user_constraints where table_name=‘T_USER‘;

-- 创建视图,默认是可以对那种对应真实列的字段进行DML操作。
create view myview
as
select empno, ename, sal, (sal * 12) AS total from emp
-- 只读的视图
create view myview
as
select empno, ename, sal, (sal * 12) AS total from emp
with read only;

-- 创建视图,注意这里有deptno=10的条件。
-- 这时可以通过视图插入deptno=20记录。
create or replace view myview
as
select empno, ename, sal, (sal * 12) AS total, deptno from emp where deptno=10

技术分享

使用视图不可以提高性能,因为视图就一个事先存储好的SQL查询。

创建序列:

create sequence myseq;
修改:
alter sequence myseq
   maxvalue 25
   cache 10
   cycle;//设置循环序列 就是序列到达最大值 25 的时候又从1开始
删除:
drop sequence myseq;
查询:
select myseq.nextval from dual;
select myseq.currval from dual;

版权声明:本文为博主原创文章,未经博主允许不得转载。

oracle学习笔记(六)

标签:oracle

人气教程排行