1.创建一个表
不加约束
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;
版权声明:本文为博主原创文章,未经博主允许不得转载。