做了项目,往往忙于琐事,疏于学习;出了项目,往往蒙头学习,忘了学以致用的道理。
时隔1个多月,再次开始我的Oracle源码系列博文。
--Oracle数据库管理-从入门到精通呢
--第6章-索引和约束
--约束部分
DROP TABLE bookCategory;
--代码6.3 创建表并指定主键
CREATE TABLE bookCategory(
cate_id INT PRIMARY KEY, --图书分类Id,主键
cate_name VARCHAR2(20), --图书分类名称
--图书分类描述
cate_desc VARCHAR2(500)
);
SELECT constraint_name cons_name, constraint_type cons_type, status FROM user_constraints WHERE table_name = 'BOOKCATEGORY';
DROP TABLE bookCategory;
--代码6.4 在列级别使用Contraint关键字
CREATE TABLE bookCategory(
cate_id INT CONSTRAINT pk_cate_id PRIMARY KEY, --图书分类Id,主键
cate_name VARCHAR2(20) CONSTRAINT nn_cate_name NOT NULL, --图书分类名称,指定非空约束
--指定分类描述
cate_description VARCHAR2(200)
);
DROP TABLE bookCategory;
--代码6.5 在表级别使用Contraint关键字
CREATE TABLE bookCategory(
cate_code CHAR(10),
cate_name VARCHAR2(20),
cate_description VARCHAR2(200),
--定义行外约束
CONSTRAINT pk_cate_pd PRIMARY KEY (cate_code,cate_name) --指定复合主键
)
--代码6.6 在列级别使用REFERENCES创建外键
DROP TABLE bookCategory; --删除bookCategory表,并重新创建
CREATE TABLE bookCategory(
cate_id INT CONSTRAINT pk_cate_id PRIMARY KEY, --图书分类Id,主键
cate_name VARCHAR2(20) CONSTRAINT nn_cate_name NOT NULL, --图书分类名称,指定非空约束
--指定分类描述
cate_description VARCHAR2(200)
);
DROP TABLE books --删除books表,并重新创建
CREATE TABLE books(
book_id INT CONSTRAINT pk_book_id PRIMARY KEY, --指定图书表的主键
book_name VARCHAR2(50), --指定图书名称
--指定分类id
cate_id REFERENCES bookCategory(cate_id)
);
SELECT constraint_name cons_name, constraint_type cons_type, status FROM user_constraints WHERE table_name = 'BOOKS';
DROP TABLE books --删除books表,并重新创建
CREATE TABLE books(
book_id INT CONSTRAINT pk_book_id PRIMARY KEY, --指定图书表的主键
book_name VARCHAR2(50), --指定图书名称
cate_id INT,
--使用表级别的语法创建books表
CONSTRAINT fk_cate_id FOREIGN KEY (cate_id) REFERENCES bookCategory (cate_id)
ON DELETE CASCADE --定义外键约束并指定级联删除
);
--代码6.7 在表级别创建外键
DROP TABLE books --删除books表,并重新创建
CREATE TABLE books(
book_id INT CONSTRAINT pk_book_id PRIMARY KEY, --指定图书表的主键
book_name VARCHAR2(50), --指定图书名称
cate_id INT,
--使用表级别的语法创建books表
CONSTRAINT fk_cate_id FOREIGN KEY (cate_id) REFERENCES bookCategory (cate_id)
--定义外键约束并指定级联置空
ON DELETE SET NULL
);
select * from bookCategory;
--索引与外键的示例
--插入几个图书目录
INSERT INTO bookCategory VALUES(1,'计算机图书','计算机软件、数据库、编程类图书');
INSERT INTO bookCategory VALUES(2,'经管类图书','经济管理、财务会计、统计分析图书');
INSERT INTO bookCategory VALUES(3,'文学艺术类','小说、绘图、音乐、电影');
--插入来自all_objects中的图书信息
INSERT INTO books SELECT ROWNUM+2,object_name,decode(mod(rownum,2),0,1,2) FROM all_objects;
select * from books where rownum<100;
truncate table books;
insert into books values(168,'不忘初心、方得始终',3);
insert into books values(169,'学好Oracle,走遍天下都不怕!',1);