CREATE TABLE person
(
pid VARCHAR2(18) ,
name VARCHAR2(200) NOT NULL ,
age NUMBER(3) NOT NULL ,
birthday DATE ,
sex VARCHAR2(2) DEFAULT '男',
) ;
此时,需要为表中添加若干个约束,添加约束的语法如下:
ALTER TABLE 表名称 ADD COSTRAINT 约束名称 约束类型(约束字段)
关于约束类型的命名一定要统一。
PRIMARY KEY:主键字段_PK
UNIQUE :字段_UK
CHECK:字段_CK
FOREIGN KEY:父字段_子字段_FK
eg:为person表添加该有的约束。
ALTER TABLE person ADD CONSTRAINT person_pid_PK PRIMARY KEY(pid);
ALTER TABLE person ADD CONSTRAINT person_name_UK UNIQUE(pid);
ALTER TABLE person ADD CONSTRAINT person_age_CK CHECK(age BETWEEN 0 AND 150);
ALTER TABLE person ADD CONSTRAINT person_sex_CK CHECK(sex IN ('男','女','中'));
DROP TABLE book ;
CREATE TABLE book
(
bid NUMBER,
bname VARCHAR(30) ,
bprice NUMBER(5,2) ,
pid VARCHAR2(18)
) ;
ALTER TABLE book ADD CONSTRAINT book_pid_PK PRIMARY KEY(bid) ;
ALTER TABLE book ADD CONSTRAINT person_book_pid_FK FOREIGN KEY(pid) REFERENCES person(pid) ON;
DELETE CASCADE ;
既然可以增加约束,那么就可以删除约束,删除约束的时候要指定约束的名称。
ALTER TABLE 表名称 DROP CONSTRAINT 约束名称
eg:删除person表中的age和sex上的约束。
ALTER TABLE person DROP CONSTRAINT person_age_CK ;
ALTER TABLE person DROP CONSTRAINT person_sex_CK ;
ALTER TABLE book DROP CONSTRAINT person_book_pid_FK ;
ROWNUM(重点)
ROWNUM:表示行号,实际上是一个列,但是这个列是一个伪列,此列可以在每张表中出现。
eg:在查询雇员表上,加入ROWNUM
SELECT ROWNUM,empno,ename,job,sal,hiredate FROM emp ;
ROWNUM可以自动编号,
如果只想显示前五行,
条件中ROWNUM<=5
SELECT ROWNUM,empno,ename,job,sal,hiredate FROM emp
WHERE ROWNUM<=5 ;
查询中间记录:
如果现在要想进行中间的截取操作,则只能采用子查询,
例如现在假设每页显示5条,第2页应该显示6~10条,那么对于数据库操作来讲,
它再查询的时候应该首先查询出1~10条,之后再在查询的结果中取出后5条。
SELECT ROWNUM ,empno,ename,job,sal,hiredate
FROM emp WHERE ROWNUM<=5;
SELECT *
FROM(SELECT ROWNUM rn,empno,ename,job,sal,hiredate
FROM emp WHERE ROWNUM<=10) temp
WHERE temp.rn>5;//6-10的记录
SELECT *
FROM(SELECT ROWNUM rn,empno,ename,job,sal,hiredate
FROM emp WHERE ROWNUM<=15) temp
WHERE temp.rn>10;//11-14的记录