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;