oracle學習筆記(六)

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;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章