Oracle 外键约束
oracle中查询表的信息,包括表名,字段名,字段类型,主键(精)

通过搜索摸索,总结了一下 oracle 中查询表的信息,包括表名,字段名,字段类型,主键, 外键唯一性约束信息,索引信息查询 SQL 如下,希望对大家有所帮助:1、查询出所有的用户表select * from user_tables 可以查询出所有的用户表select owner,table_name from all_tables; 查询所有表,包括其他用户表通过表名过滤需要将字母作如下处理select * from user_tables where table_name = upper('表名 '因为无论你建立表的时候表名名字是大写还是小写的, create 语句执行通过之后,对应的 user_tables表中的 table_name字段都会自动变为大写字母, 所以必须通过内置函数 upper 将字符串转化为大写字母进行查询, 否则, 即使建表语句执行通过之后, 通过上面的查询语句仍然查询不到对应的记录。
2、查询出用户所有表的索引select * from user_indexes3、查询用户表的索引 (非聚集索引 :select * from user_indexes where uniqueness='NONUNIQUE'4、查询用户表的主键 (聚集索引 :select * from user_indexes where uniqueness='UNIQUE'5、查询表的索引select t.*,i.index_type from user_ind_columns t,user_indexes i where t.index_name = i.index_name andt.table_name='NODE'6、查询表的主键select cu.* from user_cons_columns cu, user_constraints au wherecu.constraint_name = au.constraint_name andau.constraint_type = 'P' AND cu.table_name = 'NODE'7、查找表的唯一性约束(包括名称,构成列:select column_name from user_cons_columns cu, user_constraints au wherecu.constraint_name=au.constraint_name andcu.table_name='NODE'8、查找表的外键select * from user_constraints c where c.constraint_type = 'R' andc.table_name='STAFFPOSITION'查询外键约束的列名:select * from user_cons_columns cl where cl.constraint_name = 外键名称查询引用表的键的列名:select * from user_cons_columns cl where cl.constraint_name = 外键引用表的键名9、查询表的所有列及其属性方法一:select * from user_tab_columns where table_name=upper('表名 ';方法二:select cname,coltype,width from col where tname=upper('表名 ';;10. 查询一个用户中存在的过程和函数select object_name,created,status from user_objectswhere lower(object_type in ('procedure','function';11. 查询其它角色表的权限select * from role_tab_privs ;。
oracle表依赖关系

Oracle表依赖关系介绍在Oracle数据库中,表之间的依赖关系是非常重要的。
了解表之间的依赖关系可以帮助我们更好地理解数据库结构,优化查询性能以及进行表的维护和修改。
本文将深入探讨Oracle表之间的依赖关系,并介绍如何查询和管理这些依赖关系。
查询表依赖关系在Oracle数据库中,可以使用以下方法查询表的依赖关系:1. 使用ALL_DEPENDENCIES视图Oracle提供了一个ALL_DEPENDENCIES视图,用于查询表之间的依赖关系。
该视图包含了所有的依赖关系信息,包括依赖的表名、依赖的列名等。
以下是一个查询表依赖关系的示例SQL语句:SELECT owner, name, type, referenced_owner, referenced_name, referenced_type FROM all_dependenciesWHERE referenced_name = 'TABLE_NAME';其中,TABLE_NAME是要查询依赖关系的表名。
2. 使用DBA_DEPENDENCIES视图除了ALL_DEPENDENCIES视图外,还可以使用DBA_DEPENDENCIES视图查询表的依赖关系。
DBA_DEPENDENCIES视图包含了数据库中所有对象的依赖关系信息,不仅限于表。
以下是一个查询表依赖关系的示例SQL语句:SELECT owner, name, type, referenced_owner, referenced_name, referenced_type FROM dba_dependenciesWHERE referenced_name = 'TABLE_NAME';3. 使用USER_DEPENDENCIES视图如果只查询当前用户的表依赖关系,可以使用USER_DEPENDENCIES视图。
USER_DEPENDENCIES视图只包含当前用户拥有的对象的依赖关系信息。
oracle常用约束类型

oracle常用约束类型
Oracle数据库中常用的约束类型如下:
1. 主键约束(PRIMARY KEY):主键约束确保表中的每一行具有唯一标识,并且不允许主键字段为空。
一个表只能有一个主键。
2. 唯一约束(UNIQUE):唯一约束确保表中指定字段的值是唯一的,但允许空值。
可以在一个表中为多个字段设置唯一约束。
3. 外键约束(FOREIGN KEY):外键约束用于维护表之间的引用完整性。
一个表的外键引用另一个表的主键或唯一约束字段,在参照完整性下,一个表中的外键值必须与被引用表中的主键或唯一约束字段中的某个值相匹配,或者是NULL。
4. 检查约束(CHECK):检查约束用于确保表中的字段值满足特定条件。
例如,可以要求一个字段的值在一个指定的范围内,或符合一定的格式。
5. 非空约束(NOT NULL):非空约束用于保证特定字段的值不能为空。
当一个字段设置了非空约束,插入或更新记录时,需要为这个字段提供非空值。
外键约束(20171015)

外键约束先要理清几个概念:1)候选键(Candidate Key):关系中的一个属性组,其值能唯一标识一个元组,若从该属性组中去掉任何一个属性,它就不具有这一性质了,这样的属性组称作候选键(候选码)。
2)主键(Primary Key):当有多个候选键时,可以选定一个作为主键,选定的候选键称为主键(主码)。
主键唯一标识表中的每行记录。
主键约束有如下特点:每个表中只能有一个主键,主键可以是一列,也可以是多列的组合;主键值必须唯一并且不能为空,对于多列组合的主键,某列值可以重复,但列的组合值必须唯一。
3)外键(Foreign Key):关系R中的一个属性组,它不是R的候选键,但它与另一个关系S 的候选键相对应,则称这个属性组为R的外键(外码)。
关系R称为参照关系(参照表、从表),关系S称为被参照关系(被参照表、主表)。
外键是指一个表(从表)中的一列或列组合,它虽不是该表的主键,但却是另一个表(主表)的主键。
通过外键约束可以为相关联的两个表建立联系,实现数据的引用完整性,维护两表之间数据的一致性关系。
特殊情况下,参照关系和被参照关系可以是同一个关系。
即,特殊情况下,从表和主表可以是同一个表。
参照[引用]关系(Referencing Relation)、子表、从表、外键表、参照[引用]表,这些作为同一术语的同义词使用。
被参照[被引用]关系(Referenced Relation)、父表、主表、主键表、被参照[被引用]表、查找表,这些作为同一术语的同义词使用。
请注意,在英语国家讲数据库的英语文献中,relation有时指“表”,有时指两表之间的联系(relationship)。
指两表之间的relationship时也常用link[链接]。
relationship和relation通常都翻译为关系,但在数据库中两者含义不同。
relationship [关系;联系;关联],在数据库中指不同表之间的数据彼此联系的方法。
oracle的cascade用法

Oracle的Cascade用法介绍Cascade是一个数据库操作相关的概念,在Oracle数据库中有着重要的作用。
Cascade用法的核心思想是当一个操作(比如删除或更新)作用于一个对象时,自动地将该操作作用于与该对象相关联的其他对象。
本文将介绍Oracle数据库中Cascade的详细用法,包括删除Cascade和更新Cascade。
删除Cascade删除Cascade是指当我们删除一个对象时,自动删除与该对象相关联的其他对象。
在Oracle数据库中,我们可以通过设置外键约束来实现删除Cascade的功能。
设置外键约束外键约束是指表之间关系的表达方式。
在Oracle数据库中,我们可以使用ALTER TABLE语句来添加外键约束。
ALTER TABLE child_table ADD CONSTRAINT fk_constraintFOREIGN KEY (foreign_key_column)REFERENCES parent_table(primary_key_column)ON DELETE CASCADE;上述代码中,child_table是子表,parent_table是父表,foreign_key_column是子表中引用父表的列,primary_key_column是父表的主键列。
通过设置ON DELETE CASCADE,当我们删除父表中的某一行数据时,系统会自动删除子表中所有与该行相关联的数据。
示例下面通过一个示例来演示删除Cascade的用法。
创建表首先,我们创建两个表,一个是父表(departments),一个是子表(employees)。
CREATE TABLE departments(department_id NUMBER PRIMARY KEY,department_name VARCHAR2(100));CREATE TABLE employees(employee_id NUMBER PRIMARY KEY,employee_name VARCHAR2(100),department_id NUMBER,CONSTRAINT fk_departmentFOREIGN KEY (department_id)REFERENCES departments(department_id));插入数据然后,我们向这两个表中插入一些数据。
Oracle中查看所有的表,用户表,列名,主键,外键

在Oracle中查看所有的表:select * from tab/dba_tables/dba_objects/cat;看用户建立的表 :selecttable_name from user_tables; //当前用户的表selecttable_name from all_tables; //所有用户的表selecttable_name from dba_tables; //包括系统表select * from user_indexes //可以查询出所有的用户表索引查所有用户的表在all_tables主键名称、外键在all_constraints索引在all_indexes但主键也会成为索引,所以主键也会在all_indexes里面。
具体需要的字段可以DESC下这几个view,dba登陆的话可以把all换成dba1、查找表的所有索引(包括索引名,类型,构成列):select t.*,i.index_type from user_ind_columnst,user_indexesi where t.index_nam e = i.index_name and t.table_name = i.table_name and t.table_name = 要查询的表2、查找表的主键(包括名称,构成列):select cu.* from user_cons_columns cu, user_constraints au where cu.constraint _name = au.constraint_name and au.constraint_type = 'P' and au.table_name = 要查询的表3、查找表的唯一性约束(包括名称,构成列):selectcolumn_name from user_cons_columns cu, user_constraints au where cu. constraint_name = au.constraint_name and au.constraint_type = 'U' and au.table _name = 要查询的表4、查找表的外键(包括名称,引用表的表名和对应的键名,下面是分成多步查询):select * from user_constraints c where c.constraint_type = 'R' and c.table_name = 要查询的表查询外键约束的列名:select * from user_cons_columns cl where cl.constraint_name = 外键名称查询引用表的键的列名:select * from user_cons_columns cl where cl.constraint_name = 外键引用表的键名5、查询表的所有列及其属性select t.*,MENTS from user_tab_columnst,user_col_comments c where t.t able_name = c.table_name and t.column_name = c.column_name and t.table_na me = 要查询的表。
oracle 查询外键的建表语句

oracle 查询外键的建表语句要查询外键的建表语句,你需要使用Oracle数据库中的系统表来获取外键约束的信息。
在Oracle中,可以使用以下SQL语句来查询外键的建表语句:sql.SELECT.'ALTER TABLE ' || c.table_name || ' ADD CONSTRAINT ' || c.constraint_name || ' FOREIGN KEY (' || c.column_name || ') REFERENCES ' || r_pk.table_name || ' (' ||r_pk.column_name || ');' AS foreign_key_sql.FROM.user_cons_columns c.JOIN.user_constraints fk ON c.constraint_name =fk.constraint_name.JOIN.user_constraints pk ON fk.r_constraint_name = pk.constraint_name.JOIN.user_cons_columns r_pk ON pk.constraint_name =r_pk.constraint_name.WHERE.fk.constraint_type = 'R'。
ORDER BY.c.table_name, c.position;这个SQL查询会返回所有外键约束的建表语句,包括外键的名称、所属表、参考表、参考列等信息。
你可以根据实际情况修改查询条件,比如替换`user_cons_columns`和`user_constraints`为相应的表所有者前缀(如`all_cons_columns`和`all_constraints`),以便查询所有者拥有的表的外键信息。
oracle windows操作语句

oracle windows操作语句Oracle是一种关系型数据库管理系统,广泛应用于企业级应用程序开发中。
在Windows操作系统上,可以使用Oracle SQL Developer或SQL*Plus等工具执行Oracle数据库操作语句。
下面列举了十个常用的Oracle Windows操作语句。
1. 创建表(CREATE TABLE)CREATE TABLE语句用于创建数据库中的表。
例如,创建一个名为“employees”的表,包含id、name和age三个字段:```sqlCREATE TABLE employees (id NUMBER,name VARCHAR2(100),age NUMBER);```2. 插入数据(INSERT INTO)INSERT INTO语句用于向表中插入数据。
例如,向“employees”表插入一条记录:```sqlINSERT INTO employees (id, name, age)VALUES (1, 'John', 25);```3. 更新数据(UPDATE)UPDATE语句用于更新表中的数据。
例如,将“employees”表中id为1的记录的年龄改为30:```sqlUPDATE employeesSET age = 30WHERE id = 1;```4. 删除数据(DELETE)DELETE语句用于删除表中的数据。
例如,删除“employees”表中id为1的记录:```sqlDELETE FROM employeesWHERE id = 1;```5. 查询数据(SELECT)SELECT语句用于从表中查询数据。
例如,查询“employees”表中的所有记录:```sqlSELECT * FROM employees;```6. 创建索引(CREATE INDEX)CREATE INDEX语句用于在表上创建索引,以提高查询性能。
SQLServer主键、外键、唯一等约束

SQLServer主键、外键、唯⼀等约束主键(primary key)约束、外键(foreign key)约束、唯⼀(unique)约束、检查(check)约束、默认值(default)约束实例Oracle 有如下类型的约束:NOT NULL(⾮空)、UNIQUE Key(唯⼀约束)、PRIMARY KEY(主键约束)、FOREIGN KEY(外键约束)、CHECK约束Oracle使⽤SYS_Cn格式命名约束.创建约束:在建表的同时创建、建表后创建约束的类型有如下⼏种:C (check constraint on a table)P (primary key)U (unique key)R (Referential AKA Foreign Key)V (with check option, on a view)O (with read only, on a view)1、创建约束CREATE TABLE students(student_id VARCHAR2(10) NOT NULL,student_name VARCHAR2(30) NOT NULL,college_major VARCHAR2(15) NOT NULL,status VARCHAR2(20) NOT NULL,state VARCHAR2(2),license_no VARCHAR2(30)) TABLESPACE student_data;2、创建主键:ALTER TABLE students ADD CONSTRAINT pk_students PRIMARY KEY (student_id)USING INDEX TABLESPACE student_index;Alter table table_name add constrants BID primary key (bookno);ALERT TABLE table_name MODIFY( column1 PRIMARY KEY);3、创建Unique约束:ALTER TABLE students ADD CONSTRAINT uk_students_license UNIQUE (state, license_no)USING INDEX TABLESPACE student_index;4、创建Check约束:定义每⼀记录都要满⾜的条件,条件表达式不允许有:CURRVAL, NEXTVAL, LEVEL, ROWNUM,SYSDATE, UID, USER, USERENV 函数:ALTER TABLE students ADD CONSTRAINT ck_students_st_lic CHECK ((state IS NULL AND license_no IS NULL) OR (state IS NOT NULL AND license_no is NOT NULL));添加check约束(check_1为约束名,dept_salary为字段名 ) alter table emp add constraint check_1 check(dept_salary>0); 5、创建外键约束:ALTER TABLE students ADD CONSTRAINT fk_students_state FOREIGN KEY (state) REFERENCES state_lookup (state);6. 创建不能为空约束 not nullalter table table_name modify(name not null);alter table table_name modify name1 varchar2(20) not null;实例1:⾸先创建学⽣信息表studentinfo和学⽣成绩表testinfo。
oracle数据库约束、索引,enable和disable用处

oracle数据库约束、索引,enable和disable⽤处1.数据库索引索引:索引是对数据库表中⼀列或多列的值进⾏排序的⼀种结构索引分类:主键索引(PRIMAY KEY)、唯⼀索引(UNIQUE)、常规索引(INDEX)、全⽂索引(FULLTEXT)常规索引 CREATE INDEX 索引名 ON 表名 (字段名)唯⼀索引 CREATE UNIQUE INDEX 索引名 ON 表名 (字段名)2.数据库约束约束:数据库约束时防⽌⾮法记录的规则约束分类:主键约束(Primay Key Coustraint):唯⼀性,⾮空性,⼀个表只能有主键,创建主键时会⾃动创建主键索引ALTER TABLE 表名 ADD CONSTRAINT 主键名 PRIMARY KEY (字段名)唯⼀约束(Unique Counstraint):唯⼀性,可以空,但只能有⼀个空,⼀张表可以有多个唯⼀约束,创建唯⼀约束时会⾃动创建唯⼀索引ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE (字段)检查约束(Check Counstraint):对该列数据的范围、格式的限制(如:年龄、性别等)ALTER TABLE 表名 CHECK (字段约束)默认约束(Default Counstraint):该数据的默认值ALTER TABLE 表名 ALTER 字段名 SET DEFAULT '默认值'外键约束(Foreign Key Counstraint):需要建⽴两表间的关系并引⽤主表的列ALTER TABLE 表名1 ADD CONSTRAINT 外键名 FOREING KEY (表1字段) REFENCES 表名2(表2字段)3.disable与enable约束控制约束的约束,控制表的约束时禁⽌还是激活状态disable:禁⽌状态,相当于该列没有约束,使⽤disable默认为Novalidateenable:激活状态,默认新创建的约束状态是激活状态,使⽤enable默认为ValidateValidate Novalidate已有记录新增/删除记录已有记录新增/删除记录Enable Yes(表⽰需要受到约束条件限制)Yes No YesDisable Yes No No No。
创建主键、外键和唯一约束

6 CONSTRAINT dept_deptno_pk PRIMARY KEY(deptno));
外键约束FOREIGN KEY
SQL> CREATE TABLE emp(
2 empno NUMBER(4),
--插入测试数据
INSERT INTO STUDENTINFO VALUES('001','ZHANGSAN',1,'03-1月-86','南京市玄武区');
INSERT INTO STUDENTINFO VALUES('002','LISI',1,'05-12月-86','南京市玄武区');
3 ename VARCHAR2(10) NOT NULL,
4 job VARCHAR2(9),
5 mgr NUMBER(4),
6 hiredate DATE,
7 sal NUMBER(7,2),
8 comm NUMBER(7,2),
9 deptno NUMBER(7,2) NOT NULL,
INSERT INTO TESTINFO VALUES('001','05',70);
Oracle 有如下类型的约束:
NOT NULL
UNIQUE Key
PRIMARY KEY
FOREIGN KEY
CHECK
Oracle使用SYS_Cn格式命名约束.
创建约束:
INSERT INTO TESTINFO VALUES('001','02',90.5);
零点起飞学Oracle之使用约束

外键的主要作用是保证数据的参照完整性。最终保证
数据库的完整性。本小节将讲述参照完整性的定义, 并阐述外键定义及使用。 1.参照完整性 在两个表之间,一个表中的记录依附于另一个表的记 录而存在,称为表之间的参照完整性。参照完整性总 是存在着真实的业务背景。例如,在employeenew表 中,存储了每位员工的信息;在jobs表中存储了员工 职位信息。employeenew中的每条记录都依附于jobs表 中记录的存在而存在,即建立了两个表之间的参照完 整性。
索引可以使用户快速找到表中的特定信息。当用户在
数据表的某列(或某些列)上创建了主键、而在检索 数据时又使用了该索引列,Oracle可以很快的捕获符 合条件的记录。而不必采用全表逐条扫描的方式。有 关索引的详细信息,将在以后的章节讲解。
【示例11-13】在Oracle中,创建了主键之后,都会存
2.查看外键信息
同样可以在视图user_constraints和user_cons_columns中
获取外键的详细信息。 【示例11-17】在视图user_cosntraints中获取表 employeenew的约束信息。
3.验证外键约束的作用
当尝试向表employeenew中插入数据,可以验证外键
主键用来唯一地标识表中的一行数据,它规定在主键
列上的数据不能重复,并且不能为空。如果在某个列 上指定了主键约束,那么就不需要在该列上再指定not null约束和unique约束。创建主键时,有以下注意事项。 主键列的数据类型:我们设臵主键时,主键列的数据 类型不一定是数值型,也可以使其他的,如字符型。 主键不一定只有一列:在表的设计视图中,选择可以 要定义为主键的一个或多个字段。 自增的数值型主键:设臵主键时,可以采用自增的列 作为主键,实现自动编号,速度快,对于检索非常有 利。
oracle建表的时候同时创建主键,外键,注释,约束,索引

oracle建表的时候同时创建主键,外键,注释,约束,索引--主键create table emp (id number constraint id_pr primary key ,name1 varchar(8));create table emp9 (id number ,name1 varchar(8) ,constraint aba_pr primary key(id,name1));--外键create table emp1(id number references emp(id),name varchar(8));--复合外键create table emp0(id number ,name varchar(8) ,constraint fk_nam1e foreign key(id,name) references emp9(id,name1));--主键另外写法create table emp2(id number,name varchar(8),id1 number, constraint pk_id primary key(id),constraint fk_name foreign key(id1) references emp(id))--check 约束的写法create table emp4(id number check(id in(1,2 ,3)),name varchar(8));不带约束名称的:create table userInfo (id number(6) primary key,--主键name varchar2(20) not null,--⾮空sex number(1),age number(3) default 18,birthday date,address varchar2(50),email varchar2(25) unique,--唯⼀tel number(11),deptno number(2) references dept(deptno)—外键);带约束名称:create table userInfo (id number(6) constraint id_pk primary key,name varchar2(20) constraint name_nn not null,sex number(1),age number(3) default 18,birthday date,address varchar2(50),email varchar2(25) constraint email_uqe unique,tel number(11),deptno number(2) constraint dept_deptno_ref references dept(deptno));列模式:create table userInfo (id number(6),name varchar2(20),sex number(1),age number(3) default 18,birthday date,address varchar2(50),email varchar2(25),tel number(11),deptno number(2),constraint id_pk primary key (id),--也可以两个以上,联合主键constraint dept_deptno_ref foreign key (deptno) references dept(deptno),constraint emial_name_uqe unique (email, name));Alter模式:alter table userInfo add(msn varchar2(20));alter table userInfo modify(msn varchar2(25));alter table userInfo drop(msn);alter table userInfo drop constraint id_pk;alter table userInfo add constraint id_pk primary key (id);3、创建视图create table v$_dept_viewasselect deptno, dname from dept;--重新编译视图alter view v$_dept_view compile;提⽰:视图⼀般是⼀个表或多个表的查询或⼦查询,这样可以减少代码量,但同时增加了对数据库视图的维护程度,如:某个表字段被删除或是修改,视图也要重新创建或修改,同时占⽤了数据库的⼀部分空间;视图就是⼀个虚拟的表格;4、创建索引普通索引:create index idx_dpt_dname on dept(dname);联合索引:create index idx_dept_dname_deptno on dept(dname, deptno);--唯⼀索引create unique index idx_emp_ename on scott.emp(ename);--反向键索引create index idx_emp_rev_no on scott.emp(empno) reverse;--位图索引create bitmap index idx_emp_name on scott.emp(dname);--索引组织表,⼀定要有主键create table tab (id int primary key,name varchar2(20)) organization index;--索引组织表的insert效率⾮常低--分区表索引create index idx_name on table(col) local/global;--索引分区提⽰:当给表创建主键或唯⼀键约束时,系统也会创建⼀个约束给该字段;同样创建索引也会占⽤数据库空间;索引在访问、查询的时候效率有提⾼,但是在修改表的时候效率就会降低;5、创建序列create sequence seq;select seq.nextval from dual;insert into tab values(sql.nextval, ‘music’);create sequence seqtabstart with 2 –从2开始increment by 3—每次加3nomaxvalue—没有最⼤值minvalue 1—最⼩值1nocycle—不循环nocache;--不缓存--修改序列,不能修改起始值alter sequence seqtabmaxvalue 1000;6、创建同义词同义词,顾名思义就是说别名、或是另⼀个名字。
Oracle查找表的主键,外键,唯一性约束,索引

Oracle:查找表的主键,外键,唯一性约束,索引1、查找表的所有索引(包括索引名,类型,构成列):select t.*,i.index_type from user_ind_columns t,user_indexes i where t.index_name = i.index_name and t.table_name = i.table_name and t.table_name = 要查询的表2、查找表的主键(包括名称,构成列):select cu.* from user_cons_columns cu, user_constraints au where cu.constraint_name =au.constraint_name and au.constraint_type = 'P' and au.table_name = 要查询的表3、查找表的唯一性约束(包括名称,构成列):select column_name from user_cons_columns cu, user_constraints au where cu.constraint_name = au.constraint_name and au.constraint_type = 'U' and au.table_name = 要查询的表4、查找表的外键(包括名称,引用表的表名和对应的键名,下面是分成多步查询):select * from user_constraints c where c.constraint_type = 'R' and c.table_name = 要查询的表查询外键约束的列名:select * from user_cons_columns cl where cl.constraint_name = 外键名称查询引用表的键的列名:select * from user_cons_columns cl where cl.constraint_name = 外键引用表的键名5、查询表的所有列及其属性select t.*,MENTS from user_tab_columns t,user_col_comments c where t.table_name = c.table_name and t.column_name = c.column_name and t.table_name = 要查询的表。
Oracle中表及约束

改变对象名称
使用RENAME语句改变对象名称,可以修改表、视图、 语句改变对象名称,可以修改表、视图、 使用 语句改变对象名称 序列或者同义词的名称
RENAME old_name TO new_name;
必须是对象的所有者
练习
现在有一张国家表, 现在有一张国家表,里面只有一个国家名称字段 表中数据如下:中国、美国、巴西、荷兰。 ,表中数据如下:中国、美国、巴西、荷兰。 使用查询显示如下结果: 使用查询显示如下结果: 中国-美国 中国-巴西 中国-荷兰 美国-中国 美国-巴西 美国-荷兰
数据完整性
分类: 分类: – 域完整性;(控制一列的约束条件)
• 实现CHECK
– 实体完整性;(一行有唯一标识)
• PRIMARY KEY
– 参照完整性。(主表和从表的数据一致性)
• FOREIGN KEY
什么是约束
删除. 删除
约束是在表上强制执行的数据校验规则 约束是在表上强制执行的数据校验规则. 强制执行的数据校验规则 当表中数据有相互依赖性时, 当表中数据有相互依赖性时,可以保护相关的数据不被
使用子查询创建表
使用子查询创建表的语法 CREATE TABLE table [column(, column...)] AS subquery; 新表的字段列表必须与子查询中的字段列表匹配 字段列表可以省略
说明: 说明:
如果现在子查询的写的是: SELECT * FROM emp,表示将表结构和表中的数 , 据全部复制 如果现在子查询写的是: SELECT * FROM emp WHERE 1=2,加入了一 , 个永远不可能成立的条件, 个永远不可能成立的条件,则此时表示的只是复制表结构 ,不复制表中的数据
oracle的cascade用法

oracle的cascade用法Oracle的Cascade用法Oracle是一种关系型数据库管理系统,它提供了许多强大的功能和工具,其中之一就是Cascade。
Cascade是Oracle中的一种级联操作,它可以在一个表中的某个记录被删除或更新时,自动地删除或更新与之相关的其他表中的记录。
本文将介绍Cascade的用法和实现方法。
Cascade的用途Cascade的主要用途是维护数据库中的数据完整性。
在一个关系型数据库中,不同的表之间可能存在着各种各样的关系,比如主键、外键、一对多关系等等。
当一个表中的某个记录被删除或更新时,如果与之相关的其他表中的记录没有被同步删除或更新,就会导致数据不一致,从而破坏了数据库的完整性。
Cascade就是为了解决这个问题而设计的。
Cascade的实现方法在Oracle中,Cascade的实现方法主要有两种:级联删除和级联更新。
下面分别介绍这两种方法的用法和实现。
1. 级联删除级联删除是指在一个表中删除某个记录时,自动地删除与之相关的其他表中的记录。
在Oracle中,可以通过设置外键约束来实现级联删除。
外键约束是指在一个表中定义一个列,该列的值必须与另一个表中的某个列的值相等。
当一个表中的某个记录被删除时,如果该记录在另一个表中有相关的记录,就会触发外键约束,从而自动地删除与之相关的记录。
下面是一个示例,假设有两个表:订单表和订单详情表。
订单表中有一个主键列order_id,订单详情表中有一个外键列order_id,它与订单表中的order_id列相对应。
当一个订单被删除时,与之相关的订单详情也应该被删除。
可以通过以下语句来设置外键约束:ALTER TABLE order_details ADD CONSTRAINT fk_order_id FOREIGN KEY (order_id) REFERENCES orders (order_id) ON DELETE CASCADE;这条语句的意思是在订单详情表中添加一个外键约束,该约束指向订单表中的order_id列,并且在删除订单时自动地删除与之相关的订单详情。
oracle查询约束条件

Oracle查询约束条件1. 什么是约束条件?在数据库中,约束条件是一组规则,用于限制表中数据的完整性和一致性。
它们定义了数据的有效性和关系,以确保数据的正确性和可靠性。
2. 为什么使用约束条件?使用约束条件可以确保数据库中的数据符合特定的规则和要求,从而提高数据的质量和可靠性。
约束条件可以帮助我们避免无效、不一致或不符合业务规则的数据插入或更新到数据库中。
3. 常见的约束条件类型3.1 主键约束主键约束是用于唯一标识表中每一行数据的列或一组列。
它确保了主键列的值是唯一且不为空的。
在Oracle中,可以使用以下语法创建主键约束:ALTER TABLE table_nameADD CONSTRAINT constraint_name PRIMARY KEY (column1, column2, ...);3.2 外键约束外键约束用于建立表与表之间的关系。
它定义了一个列或一组列,这些列的值必须与另一个表的主键或唯一键的值匹配。
在Oracle中,可以使用以下语法创建外键约束:ALTER TABLE table_nameADD CONSTRAINT constraint_name FOREIGN KEY (column1, column2, ...) REFERENCES referenced_table_name (referenced_column1, referenced_column2, ...);3.3 唯一约束唯一约束用于确保表中的某个列或一组列的值是唯一的。
在Oracle中,可以使用以下语法创建唯一约束:ALTER TABLE table_nameADD CONSTRAINT constraint_name UNIQUE (column1, column2, ...);3.4 非空约束非空约束用于确保表中的某个列不接受空值。
在Oracle中,可以使用以下语法创建非空约束:ALTER TABLE table_nameMODIFY column_name NOT NULL;3.5 默认约束默认约束用于在插入新行时为某个列提供默认值。
oracle add constraint用法

oracle add constraint用法Oracle中使用ADD CONSTRAINT语句来添加约束。
具体用法如下:1. 添加主键约束:ALTER TABLE table_nameADD CONSTRAINT pk_constraint PRIMARY KEY (column1, column2, ...);2. 添加唯一约束:ALTER TABLE table_nameADD CONSTRAINT unique_constraint UNIQUE (column1, column2, ...);3. 添加外键约束:ALTER TABLE child_tableADD CONSTRAINT fk_constraint FOREIGN KEY(child_column)REFERENCES parent_table (parent_column);4. 添加检查约束:ALTER TABLE table_nameADD CONSTRAINT check_constraint CHECK (condition);注意:在使用ADD CONSTRAINT添加约束时,表中已存在的数据必须满足新约束条件,否则会出现错误。
如果要向已存在的表中添加约束并对不满足条件的数据进行修改,可以使用ENABLE NOVALIDATE选项来添加约束,但这可能会导致将来的数据插入或更新违反约束。
示例:1. 添加主键约束:ALTER TABLE employeesADD CONSTRAINT pk_employees PRIMARY KEY (employee_id);2. 添加唯一约束:ALTER TABLE employeesADD CONSTRAINT unique_emp_email UNIQUE (email);3. 添加外键约束:ALTER TABLE ordersADD CONSTRAINT fk_orders_customers FOREIGN KEY (customer_id)REFERENCES customers (customer_id);4. 添加检查约束:ALTER TABLE employeesADD CONSTRAINT check_salary CHECK (salary > 0);。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Oracle 外键约束
外键FOREIGN KEY约束是几种约束是最复杂的,外键约束可以使两个表进行关联。
外键是指引用另一个表中的某个列或某几个列,或者本表中另一个列或另几个列的列。
被引用的列应该具有主键约束,或者惟一性约束。
在外键的定义中,涉及到外键表、外键列、被引用表和被引用列等几个概念。
如果成功地创建了外键约束,那么系统将要求外键列中的数据必须来自被引用列中的数据。
被引用列中不存在的数据不能存储于外键列中。
在一般情况下,当删除被引用表中的数据时,该数据也不能出现在外键列中。
如果外键列存储了将要在被引用表中删除的数据,那么对被引用表删除数据的操作将失败。
最典型的外键约束是HR模式中的EMPLOYEES和DEPARTMENT表,在该外键约束中,外键表EMPLOYEES中的外键列DEMPARTMENT_ID将引用被引用表DEPARTMENTS 中的DEMPARTMENT_ID列。
例如,在以下的示例中,将以HR身份连接到数据库,并创建一个新表ADMINISTRATION_EMP,并为其添加到DEPATRMENT表的外键约束:SQL> connect hr/hr
已连接。
SQL> create table administration_emp
2 as select * from hr.employees
3 where department_id=10;
表已创建。
SQL> alter table administration_emp
2 add constraint admin_dep_fk
3 foreign key(department_id)
4
references departments(department_id);
表已更改。
为验证创建的外键约束的有效性,可以向ADMINISTRATION_EMP表添加一条记录,并且它的DEPARTMENT_ID列值不存在DEPARTMENTS表中,那么插入操作将会因为违反外键约束而失败:
SQL> insert into administration_emp(
2 employee_id,last_name,email,hire_date,job_id,department_id)
3 values(120,'刘丽','li@',sysdate,'HR_REP',360);
insert into administration_emp(
*
第 1 行出现错误:
ORA-02291: 违反完整约束条件(HR.ADMIN_DEP_FK) - 未找到父项关键字
注意在一个表上创建外键约束时,被引用表必须已经存在,并且必须为该表的引用列定义惟一性约束或主键约束。
如果外键表的外键列与被引用表中的被引用列名相同,如上面的示例所示,则为外键表定义外键列时可以简化为如下的形式:
SQL> alter table administration_emp
2 add constraint admin_dep_fk
3 foreign key(department_id)
4 references departments;
在定义外键FOREIGN KEY约束时,还可以通过关键字ON指定引用行为的类型。
当尝试删除被引表中的一条记录时,通过引用行为可以确定如何处理外键表中的外键列。
引用类型包括3种:
●在定义外键约束时,如果使用了CASADE关键字,那么当被引用表中被引用列的
数据被删除时,外键表中对应的数据也将被删除。
●在定义外键约束时,如果使用了关键字SET NULL,那么当被引用表中被引用列的
数据被删除时,外键表中外键列将被设置为NULL。
要使这个关键字起作用,在外
键列必须支持NULL值。
●在定义外键约束时,如果使用了关键字NO ACTION,那么当删除被引用表中被引
用列的数据时将违反外键约束,该操作将被禁止执行,这也是外键的默认引用类型。
例如,下面的实例将演示外键的级联删除。
(1)以HR身份连接到数据库,创建一个新的引用表,并为其添加主键约束。
SQL> connect hr/hr
已连接。
SQL> create table admin_dept
2 as select * from hr.departments
3 where department_id=10;
表已创建。
SQL> alter table admin_dept
2 add primary key(department_id);
表已更改。
(2)使用ON DELETE CASADE关键字修改ADMINISTRATION_EMP表的外键约束。
SQL> alter table administration_emp
2 add constraint admin_dept_fk
3 foreign key(department_id)
4 references admin_dept on delete cascade;
表已更改。
(3)查看ADMINISTRATION_EMP表中的数据。
SQL> select employee_id,last_name,job_id,salary,department_id
2 from administration_emp;
EMPLOYEE_ID LAST_NAME JOB_ID SALARY DEPARTMENT_ID
----------------- --------------------- ---------- ---------- -------------
200 Whalen AD_ASST 4400 10 (4)在指定外键行为类型为ON DELETE CASADE后,在删除被引用表ADMIN_DEPT 中编号为10的行时,系统将会级联删除ADMINISTRA TION_EMP表中所有的记录。
SQL> delete admin_dept
2 where department_id=10;
已删除 1 行。
SQL> select employee_id,last_name,job_id,salary,department_id
2 from administration_emp;
未选定行
与其他约束相同,如果想要删除外键约束,可以使用如下的ALTER TABLE语句形式:alter table administration_emp
drop constraint admin_dept_fk;。