您的位置:首页 > 数据库 > Oracle

oracle数据的完整性约束

2017-05-25 08:08 309 查看
创建一个用户

set sqlprompt "_USER > "

create user jsx identified by 123; //创建用户jsx

grant all privileges to jsx; //给用户授权

SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='JSX';   //查看用户权限

SELECT * FROM USER_SYS_PRIVS; //200

SELECT * FROM SESSION_PRIVS; //208

ALTER USER SCOTT ACCOUNT UNLOCK;//IDENTIFIED BY 123;可选解锁scott用户

//创建books表

CREATE TABLE books(

bookid NUMBER(6) PRIMARY KEY,

booknum VARCHAR2(6),

bookname VARCHAR2(60),

author VARCHAR(50),

publish VARCHAR2(50),

bookprice NUMBER(8,2),

category CHAR(10),

booktime DATE DEFAULT SYSDATE

)

STORAGE(INITIAL 200K NEXT 200K PCTINCREASE 20 MAXEXTENTS 15)

TABLESPACE users;

//创建orders表

CREATE TABLE orders(

order_id VARCHAR2(20) CONSTRAINT O_PK PRIMARY KEY,

order_data DATE DEFAULT SYSDATE,

qty INTEGER,

payterms VARCHAR2(12),

book_id NUMBER(6) CONSTRAINT O_FK REFERENCES books(bookid)

);

//创建表空间

CREATE TABLESPACE indx1 DATAFILE 'D:\indx1.dbf' SIZE 20M;

//创建authors表 定义主键约束

CREATE TABLE authors(

author_id VARCHAR2(15) CONSTRAINT A_PK PRIMARY KEY 

USING INDEX TABLESPACE indx1,

author_fname varchar2(20) NOT NULL,

author_lname VARCHAR2(40) NOT NULL,

phone CHAR(20) NOT NULL,

addr VARCHAR2(50),

city VARCHAR2(20),

state CHAR(10),

zip CHAR(10)

);

//创建bookauthors表 定义外键约束 均为列级约束   主键约束均为表级约束

CREATE TABLE bookauthors(

author_id VARCHAR2(15) REFERENCES authors(author_id),

book_id NUMBER(6) REFERENCES books(bookid),

author_ord NUMBER,

royalty INTEGER,

CONSTRAINT BA_PK PRIMARY KEY(author_id,book_id)

);

添加和删除约束

CREATE TABLE employees(

emp_id CHAR(10),

lname VARCHAR2(30),

fname VARCHAR2(20),

job_id NUMBER(6),

job_lv INTEGER,

pub_id CHAR(4),

hiredate DATE

);

CREATE TABLE jobs(

jobid NUMBER(6) PRIMARY KEY,

jobname VARCHAR2(20) NOT NULL,

minlvl INTEGER,

maxlvl INTEGER

);

添加主键约束

ALTER TABLE employees ADD CONSTRAINT E_PK PRIMARY KEY(emp_id);

添加外键约束

ALTER TABLE employees ADD CONSTRAINT E_FK FOREIGN KEY(job_id) 

REFERENCES jobs(jobid)

ON DELETE CASCADE;

添加非空约束

ALTER TABLE employees MODIFY lname CONSTRAINT E_NK1 NOT NULL;

ALTER TABLE employees MODIFY fname CONSTRAINT E_NK2 NOT NULL;

删除约束

ALTER TABLE employees DROP CONSTRAINT E_NK1;

删除E_PK主键约束

ALTER TABLE employees DROP CONSTRAINT E_PK;

重新添加E_PK主键约束

ALTER TABLE employees ADD CONSTRAINT E_PK PRIMARY KEY(emp_id);

第二种方法删除主键约束

ALTER TABLE employees DROP PRIMARY KEY;

约束的状态和延迟检查  禁用启用约束

alter table employees disable constraint e_nk2;

alter table employees modify constraint e_nk2 enable;

alter table employees disable primary key cascade;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: