日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

constraints

發布時間:2024/1/18 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 constraints 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 、約束的類型

Table 5-1 Types of Constraints

Constraint TypeDescriptionSee Also

NOT NULL

Allows or disallows inserts or updates of rows containing a null in a specified column.

"NOT NULL Integrity Constraints"

Unique key

Prohibits multiple rows from having the same value in the same column or combination of columns but allows some values to be null.

"Unique Constraints"

Primary key

Combines a NOT NULL constraint and a unique constraint. It prohibits multiple rows from having the same value in the same column or combination of columns and prohibits values from being null.

"Primary Key Constraints"

Foreign key

Designates a column as the foreign key and establishes a relationship between the foreign key and a primary or unique key, called thereferenced key.

"Foreign Key Constraints"

Check

Requires a database value to obey a specified condition.

"Check Constraints"

REF

Dictates types of data manipulation allowed on values in a REF column and how these actions affect dependent values. In an object-relational database, a built-in data type called aREF encapsulates a reference to a row object of a specified object type. Referential integrity constraints onREF columns ensure that there is a row object for theREF.

Oracle Database Object-Relational Developer's Guide to learn aboutREF constraints


2、NOT NULL:? 非空約束

?非空約束要求表的一個列沒有空值,默認情況下,表的所有行是可以為空的,null的數據類型為字符型,至于說是varchar還是char未知

2.1、非空約束的創建

建表時創建非空約束??????

???? SQL> create table rice (id number,????????????????????????

??????????????? name varchar2(2) not null);???

?????? 表已創建。

建表后創建非空約束

???? SQL> create table rice1 (id number,???????????????????????????????????????

???????????????????????????????? ? name varchar2(2) );

? 表已創建。

SQL> alter table rice1 modify name varchar2(2) not null;

表已更改。

? SQL> desc rice1

?名稱???????????????????????????????????????????????????????????????????????????? 是否為空? 類型

?------------------------------------------------------------------------------ -------- ----

?ID??????????????????????????????????????????????????????????????????????????????????? NUMBER

?NAME????????????????????????????????????????????????????????????????????????? NOT NULL VARCHAR2(2)

刪除非空約束

? SQL> alter table rice1 modify name varchar2(2) null;
表已更改。

SQL> desc rice1
?名稱????????????????????????????????????????????????????????????????????????????????????????????????????? 是否為空? 類型
?----------------------------------------------------------------------------------------------------------------- -------- -------
?ID???????????????????????????????????????????????????????????????????????????????????????????????????????????????? NUMBER
?NAME?????????????????????????????????????????????????????????????????????????????????????????????????????????????? VARCHAR2(2)

有非空約束的表,插入空值
SQL> insert into rice values(1,'');
insert into rice values(1,'')
????????????????????????? *
第 1 行出現錯誤:
ORA-01400: 無法將 NULL 插入 ("SCOTT"."RICE"."NAME")

2.3 什么時候創建非空約束
?默認情況下,一個列上是可以包含空值的,為了保證那一列上不在具有空值,可以創建非空約束。
? (1)列必須是非空的情況
?? (2)
  • You want to allow index scans of the table, or allow an operation that requires indexing all rows.

    Oracle Database indexes do not store keys whose values are all NULL. Therefore, for the preceding kinds of operations, at least one indexed column must have aNOTNULL constraint.

????? 我對這句話我總是很不理解,你想通過索引掃描整個表,必須添加非空約束


舉例:

?????????? SQL> create table rice(id number not null , name varchar2(5));

??????? 表已創建。

??????? SQL> create table rice1(id number? , name varchar2(5));

??????? 表已創建

??????? SQL> desc rice
????? ?名稱???????????????????????????????????????????????????????????????????????????????????????是否為空? 類型

???? ? --------------------------------------------------------------------------------------------------------- -------?

???? ID???????????????????????????????????????????????????????????????????????????????????????? NOT NULL NUMBE???

???? ?NAME?????????????????????????????????????????????????????????????????????????????????????VARCHAR2(5)

??????????SQL >desc rice1????

?????????? 名稱????????????????????????????????????????????????????????????????????????????????????????????????????? 是否為空? 類型?????????

??????? ?----------------------------------------------------------------------------------------------------------------- -------- --------

????????????????? ID?????????????????????????????????????????????????????????????????????????????????????????????????????? NUMBER??????????????????????????

????????????????? NAME????????????????????????????????????????????????????????????????????????????????????????????? VARCHAR2(5)?

SQL>? begin

? 2?? for i in 1..1000 loop

? 3?? insert into rice values(i,'ai');?

4?? commit;

? 5?? insert into rice1 values(i,'bi');

? 6?? commit;

? 7?? end loop;?

?8?? end;

? 9?? /

PL/SQL 過程已成功完成。

SQL> create index ind_id on rice(id);

索引已創建。

SQL> create index ind_id1 on rice1(id);

索引已創建。

?

SQL>? select /*+ index(rice ind_id)*/count(*) from rice;

執行計劃

----------------------------------------------------------

Plan hash value: 3112229557

-------------------------------------------------------------------

| Id? | Operation??????? | Name?? | Rows? | Cost (%CPU)| Time???? |

-------------------------------------------------------------------

|?? 0 | SELECT STATEMENT |??????? |???? 1 |???? 8?? (0)| 00:00:01 ||?? 1 |?

SORT AGGREGATE? |??????? |???? 1 |??????????? |????????? ||?? 2 |??

?INDEX FULL SCAN| IND_ID |? 1000 |???? 8?? (0)| 00:00:01 |

-------------------------------------------------------------------

SQL>? select /*+ index(rice ind_id1)*/count(*) from rice1;

執行計劃

----------------------------------------------------------

Plan hash value: 120591672

--------------------------------------------------------------------

| Id? | Operation????????? | Name? | Rows? | Cost (%CPU)| Time???? |

--------------------------------------------------------------------

|?? 0 | SELECT STATEMENT?? |?????? |???? 1 |???? 3?? (0)| 00:00:01 ||?? 1 |?

?SORT AGGREGATE??? |?????? |???? 1 |??????????? |????????? ||?? 2 |??

?TABLE ACCESS FULL| RICE1 |? 1000 |???? 3?? (0)| 00:00:01 |

--------------------------------------------------------------------

結論:表rice上有非空約束,要求走索引,走了索引,但是rice2上沒有非空約束,要求走索引沒有走索引


3、Unique key: 唯一約束

(1)唯一約束要求一列或者組合列上是唯一的,沒有重復的,唯一約束適合在任何列或組合列上建,當然這些列或組合列值不能重復。

(2)唯一約束和主鍵約束是不同的,因為空值永遠滿足唯一約束,而空值卻不滿足于主鍵約束

唯一約束的限制:

  • None of the columns in the unique key can be of LOB, LONG, LONG RAW, VARRAY, NESTED TABLE,OBJECT,REF,TIMESTAMPWITHTIMEZONE, or user-defined type. However, the unique key can contain a column ofTIMESTAMPWITHLOCALTIMEZONE.

  • A composite unique key cannot have more than 32 columns.

  • You cannot designate the same column or combination of columns as both a primary key and a unique key.

  • You cannot specify a unique key when creating a subview in an inheritance hierarchy. The unique key can be specified only for the top-level (root) view.


3.1建立唯一約束

建表時建立唯一約束

????? SQL> create table rice(email varchar2(7)

??????????????????????? constraint e_notnull not null ,

???????????????????????? constraint e_uk unique(email));

???? 表已創建。

????? SQL> insert into rice values('a');
????? 已創建 1 行。

????? SQL> insert into rice values('a');
??????? insert into rice values('a')
???????? *
??????? 第 1 行出現錯誤:
?????? ORA-00001: 違反唯一約束條件 (SCOTT.E_UK)


建表后建立唯一約束

???????????? SQL> create table rice1(id number,name varchar(2));
??????????? 表已創建。

?????????? SQL> alter table rice1 add constraint c_idd unique(id);
????????? 表已更改。

刪除唯一約束??????
???????????? SQL> alter table rice1 drop constraints c_idd;
??????????? 表已更改。


? 3.2 唯一約束可以插入多個空值 ? ??????

???????? SQL> drop table rice;??????????

??? 表已刪除。

SQL> create table rice(id number constraint c_id not null,

?????????????????????? name char(5) ,

??????????????????????? constraint c_name unique(name));

表已創建。

????? SQL> insert into rice values(1,'a');

已創建 1 行。

SQL> insert into rice values(1,'');

已創建 1 行。

SQL> insert into rice values(1,'');

已創建 1 行。

SQL> insert into rice values(2,'');

已創建 1 行。

SQL> select *From rice;?????

?? ID NAME

---------- -----????

???? 1 a??????

?? 1??????

?? 1?????

??? 2


3.3、查看約束:

SQL>? select OWNER,CONSTRAINT_NAME,CONSTRAINT_TYPE,TABLE_NAME,DEFERRABLE,DEFERRED From dba_constraints WHERE table_name='RICE';

OWNER???????????????????? CONSTRAINT_NAME??????????????? C TABLE_NAME???????????????????? DEFERRABLE???? DEFERRED
---------------------------------------------- ------------------------------ - ------------------------------ -------------- ---------
SCOTT???????????????????????????????????? C_ID?????????????????????????? C RICE?????????????????? NOT DEFERRABLE IMMEDIATE
SCOTT????????????????????????????????? C_NAME?????????????????????? U RICE?????????????????? NOT DEFERRABLE IMMEDIATE

3.4、對比唯一約束和主鍵約束

????????? SQL> truncate table rice;

SQL> alter table rice add constraints pk_id1 primary key(id1)
? 2? ;

SQL>? select OWNER,CONSTRAINT_NAME,CONSTRAINT_TYPE,TABLE_NAME,DEFERRABLE,DEFERRED From dba_constraints WHERE table_name='RICE';

OWNER??????????????????????????????? CONSTRAINT_NAME??????????????? C TABLE_NAME???????????????????? DEFERRABLE???? DEFERRED
--------------------------------- ------------------------------ - ------------------------------ -------------- ---------
SCOTT?????????????????????????????????? C_ID?????????????????????????? C RICE?????????????????? NOT DEFERRABLE IMMEDIATE
SCOTT????????????????????????????????? PK_ID1???????????????????????? P RICE?????????????????? NOT DEFERRABLE IMMEDIATE
SCOTT???????????????????????????????? C_NAME???????????????????????? U RICE?????????????????? NOT DEFERRABLE IMMEDIATE

主鍵約束顯示為p 唯一約束顯示為p

?? id1 列建主鍵約束

?? id列是非空約束

?? name 是唯一約束

SQL> insert into rice values(1,'a',1);

已創建 1 行。

SQL> select *From rice;

??????? ID NAME???????? ID1
---------- ----- ----------
???????? 1 a????????????? 1

主鍵約束不能為空

SQL> insert into rice values(1,null,null);
insert into rice values(1,null,null)
?????????????????????????????? *
第 1 行出現錯誤:
ORA-01400: 無法將 NULL 插入 ("SCOTT"."RICE"."ID1")

主鍵是唯一的,不能重復

SQL> insert into rice values(1,null,1);
insert into rice values(1,null,1)
*
第 1 行出現錯誤:
ORA-00001: 違反唯一約束條件 (SCOTT.PK_ID1)

唯一約束列可以插入空值
???????????????? SQL> insert into rice values(1,null,2);

?????????????? 已創建 1 行。

唯一約束不能重復(空值比較特殊)

SQL> insert into rice values(1,'a',2);
insert into rice values(1,'a',2)
*
第 1 行出現錯誤:
ORA-00001: 違反唯一約束條件 (SCOTT.C_NAME)


3.5 唯一索引和唯一約束的區別

(1)創建方法不一樣

?SQL> create table rice(id number,id1 number);
表已創建。

SQL> create unique index u_id on rice(id);
索引已創建。

SQL> alter table rice add constraint c_id1 unique(id1);
表已更改。


(2)數據庫在創建唯一約束時強制創建或者重復使用列上的索引,如果之前的列上沒有索引,那么強制創建的索引是唯一索引,如果列上已存在索引,就重用存在的索引,不管此索引是否唯一。


建唯一約束自動創建唯一索引

QL> drop table rice;

表已刪除。

QL> create table rice(id number,id1 number);

表已創建。

QL> alter table rice add constraints c_unique? unique (id);

表已更改。

SQL>? select OWNER,CONSTRAINT_NAME,CONSTRAINT_TYPE,TABLE_NAME,DEFERRABLE,DEFERRED From dba_constraints WHERE table_name='RICE';

OWNER????????????????????????????????? CONSTRAINT_NAME??????????????? C TABLE_NAME???????????????????? DEFERRABLE???? DEFERRED
-------------------------------------- ------------------------------ - ------------------------------ -------------- --------
SCOTT??????????????????????????????????? C_UNIQUE?????????????????????? U RICE?????????????????? NOT DEFERRABLE IMMEDIATE
SQL>? select INDEX_NAME,INDEX_TYPE,UNIQUENESS,STATUS From user_indexes where table_name='RICE';

INDEX_NAME???????????????????? INDEX_TYPE????????????????? UNIQUENES STATUS
------------------------------ --------------------------- --------- --------
C_UNIQUE?????????????????????? NORMAL????????????????????? UNIQUE??? VALID

在列id上建立唯一索引,在列id1上建立普通索引,然后在兩個列上個建立唯一約束,查看

SQL> alter table rice drop constraint c_unique;
已更改。

SQL> create unique index id_uniqe on rice(id);
索引已創建。

SQL> create? index id_nouniqe on rice(id1);
索引已創建。

SQL> alter table rice add constraint c_id unique(id);
表已更改。

SQL> alter table rice add constraint c_id1 unique(id1);
表已更改。

SQL>? select INDEX_NAME,INDEX_TYPE,UNIQUENESS,STATUS From user_indexes where table_name='RICE';
INDEX_NAME???????????????????? INDEX_TYPE????????????????? UNIQUENES STATUS
------------------------------ --------------------------- --------- --------
ID_NOUNIQE???????????????????? NORMAL????????????????????? NONUNIQUE VALID
ID_UNIQE?????????????????????? NORMAL????????????????????? UNIQUE??? VALID


SQL>? select OWNER,CONSTRAINT_NAME,CONSTRAINT_TYPE,TABLE_NAME,DEFERRABLE,DEFERRED From dba_constraints WHERE table_name='RICE';

OWNER CONSTRAINT_NAME??????????????? C TABLE_NAME???????????????????? DEFERRABLE???? DEFERRED
----- ------------------------------ - ------------------------------ -------------- ---------
SCOTT C_ID1????????????????????????? U RICE?????????????????????????? NOT DEFERRABLE IMMEDIATE
SCOTT C_ID?????????????????????????? U RICE?????????????????????????? NOT DEFERRABLE IMMEDIATE

創建唯一約束重用列上以前存在的索引,在刪約束的時候,不會自動刪除存在的索引,如果是創建索引的時候,自動創建的唯一索引,在刪除唯一約束的時候,自動刪除唯一索引。

SQL> alter table rice drop constraints c_id;
表已更改。

SQL> alter table rice drop constraints c_id1;
表已更改。


SQL>? select INDEX_NAME,INDEX_TYPE,UNIQUENESS,STATUS From user_indexes where table_name='RICE';

INDEX_NAME???????????????????? INDEX_TYPE????????????????? UNIQUENES STATUS
------------------------------ --------------------------- --------- --------
ID_NOUNIQE???????????????????? NORMAL????????????????????? NONUNIQUE VALID
ID_UNIQE?????????????????????? NORMAL????????????????????? UNIQUE??? VALID

結論:1、唯一約束是可以插入多個空值的

??????????? 2、唯一約束和唯一索引是不一樣的


4、Primary key:主鍵約束

(1)主鍵唯一確定一行,一個表上只能有一個主鍵,主鍵可以確定主鍵列上是沒有重復值,那一列或組合列不是空值。

(2)創建主鍵約束會隱式創建一個唯一索引和非空約束

?(3)如果在創建主鍵約束前,列上就已經存在索引,那么會重復使用存在的索引,如果不存在索引,那么會在那一列上建立一個唯一索引和約束同名。

?????? 在刪除主鍵約束時,如果是在創建主鍵是自動創建的唯一索引,刪除約束時同時刪除索引,如果創建主鍵約束時,重復使用已存在索引,刪除約束時,索引仍然存在。


4.1創建主鍵

建表時創建主鍵

SQL> create table rice (id number primary key ,name varchar2(5));
表已創建。
SQL> insert into rice values(1,'a');
已創建 1 行。

SQL> insert into rice values(1,'a');
insert into rice values(1,'a')
*
第 1 行出現錯誤:
ORA-00001: 違反唯一約束條件 (SCOTT.SYS_C0013515)


SQL> insert into rice values('','a');
insert into rice values('','a')
?????????????????????? *
第 1 行出現錯誤:
ORA-01400: 無法將 NULL 插入 ("SCOTT"."RICE"."ID")

刪除主鍵

SQL> alter table rice drop constraints SYS_C0013515;
表已更改。


建表后創建主鍵

方法一:

?????? SQL> alter table rice add constraints pk_id? primary key(id);
?????? 表已更改。

也可以通過

方法二:

????? SQL> create table rice1(id number,name varchar(10));
?????? 表已創建。

?????? SQL> create unique index pk_id1 on rice1(id);
??????? 索引已創建。

?????? SQL> alter table rice1 add? constraints pk_id1 primary key(id );
?????? 表已更改。

兩種方法的卻別是: 在表比較大的時候可以通過方法二先創建唯一索引 加上online,這樣可以不鎖表,減少對表的讀寫堵塞,不影響業務。


SQL> select si.PROPERTY,ui.index_name
? 2? from sys.ind$ si,dba_indexes ui,dba_objects uo
? 3? where si.obj#=uo.OBJECT_ID
? 4? and ui.index_name=uo.OBJECT_NAME
? 5? and ui.table_name in ('RICE','RICE1');

? PROPERTY INDEX_NAME
---------- ------------------------------
????? 4097 PK_ID
???????? 1 PK_ID1

Pk_id 對應的16進制為1001,有1000+1,即索引性質:unique+ The index was created by a constraint,而PK_id1? 則為unique索引。



5、Foreign key:外鍵約束

當兩張表有有相同的一列或者多列的時候,可以通過外鍵來連接兩個表的關系,也可以叫做參照完整性約束,一個表的約束列必須參照另一個表相同列中定義的值。

外鍵可以使依賴另外一張表的某個列或多列,也可以是依賴本張表的某個列

The relational model permits the value of foreign keys to match either the referenced primary or unique key value, or be null


5.1外鍵的創建


SQL> create table t1 as select *From emp;
表已創建。

SQL> create table t2 as select *From dept;
表已創建。

SQL> select *From t1;
???? EMPNO ENAME????? JOB????????????? MGR HIREDATE????????????? SAL?????? COMM???? DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
????? 7369 SMITH????? CLERK?????????? 7902 17-12月-80??????????? 800??????????????????? 20
????? 7499 ALLEN????? SALESMAN??????? 7698 20-2月 -81?????????? 1600??????? 300???????? 30
????? 7521 WARD?????? SALESMAN??????? 7698 22-2月 -81?????????? 1250??????? 500???????? 30
????? 7566 JONES????? MANAGER???????? 7839 02-4月 -81?????????? 2975??????????????????? 20
????? 7654 MARTIN???? SALESMAN??????? 7698 28-9月 -81?????????? 1250?????? 1400???????? 30
????? 7698 BLAKE????? MANAGER???????? 7839 01-5月 -81?????????? 2850??????????????????? 30
????? 7782 CLARK????? MANAGER???????? 7839 09-6月 -81?????????? 2450??????????????????? 10
????? 7839 KING?????? PRESIDENT??????????? 17-11月-81?????????? 5000??????????????????? 10
????? 7844 TURNER???? SALESMAN??????? 7698 08-9月 -81?????????? 1500????????? 0???????? 30
????? 7900 JAMES????? CLERK?????????? 7698 03-12月-81??????????? 950??????????????????? 30
????? 7902 FORD?????? ANALYST???????? 7566 03-12月-81?????????? 3000??????????????????? 20
????? 7934 MILLER???? CLERK?????????? 7782 23-1月 -82?????????? 1300??????????????????? 10
已選擇12行。

SQL> select *From t2;
??? DEPTNO DNAME????????? LOC
---------- -------------- -------------
??????? 10 ACCOUNTING???? NEW YORK
??????? 20 RESEARCH?????? DALLAS
??????? 30 SALES????????? CHICAGO
??????? 40 OPERATIONS???? BOSTON


SQL> alter table t1 add constraint? fk_t2 foreign key(deptno) references t2(deptno);
alter table t1 add constraint? fk_t2 foreign key(deptno) references t2(deptno)
?????????????????????????????????????????????????????????????????????? *
第 1 行出現錯誤:
ORA-02270: 此列列表的唯一關鍵字或主鍵不匹配


SQL> alter table t2 add constraint pk_t2 primary key(deptno);
表已更改。

SQL> alter table t1 add constraint? fk_t1 foreign key(deptno) references t2(deptno);
表已更改。

SQL> update t1 set deptno=null where deptno=10;
已更新3行。

SQL> select *From t1;

???? EMPNO ENAME????? JOB????????????? MGR HIREDATE????????????? SAL?????? COMM???? DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
????? 7369 SMITH????? CLERK?????????? 7902 17-12月-80??????????? 800??????????????????? 20
????? 7499 ALLEN????? SALESMAN??????? 7698 20-2月 -81?????????? 1600??????? 300???????? 30
????? 7521 WARD?????? SALESMAN??????? 7698 22-2月 -81?????????? 1250??????? 500???????? 30
????? 7566 JONES????? MANAGER???????? 7839 02-4月 -81?????????? 2975??????????????????? 20
????? 7654 MARTIN???? SALESMAN??????? 7698 28-9月 -81?????????? 1250?????? 1400???????? 30
????? 7698 BLAKE????? MANAGER???????? 7839 01-5月 -81?????????? 2850??????????????????? 30
????? 7782 CLARK????? MANAGER???????? 7839 09-6月 -81?????????? 2450
????? 7839 KING?????? PRESIDENT??????????? 17-11月-81?????????? 5000
????? 7844 TURNER???? SALESMAN??????? 7698 08-9月 -81?????????? 1500????????? 0???????? 30
????? 7900 JAMES????? CLERK?????????? 7698 03-12月-81??????????? 950??????????????????? 30
????? 7902 FORD?????? ANALYST???????? 7566 03-12月-81?????????? 3000??????????????????? 20
????? 7934 MILLER???? CLERK?????????? 7782 23-1月 -82?????????? 1300

已選擇12行。



結論:(1)外鍵參考的表上的列必須有主鍵

?????????? (2)外鍵可以為空

?

5.2? 外鍵和主表的引用鍵在刪除的時候會有一些矛盾,比如,在刪除主表的引用鍵的行,或者修改主表引用鍵

DML Statements Allowed by Update and Delete No Action

DML StatementIssued Against Parent TableIssued Against Child Table

INSERT

Always OK if the parent key value is unique

OK only if the foreign key value exists in the parent key or is partially or all null

UPDATE NO ACTION

Allowed if the statement does not leave any rows in the child table without a referenced parent key value

Allowed if the new foreign key value still references a referenced key value

DELETE NO ACTION

Allowed if no rows in the child table reference the parent key value

Always OK

DELETE CASCADE

Always OK

Always OK

DELETE SET NULL

Always OK

Always OK

?

1)刪除主鍵,外鍵數據也級聯刪除

SQL> create table t1 (id number

??????????????????????????????????? ?,name varchar2(10),

???????????????????????????????????? constraints pk_id primary key(id));
表已創建。


SQL> create table t2(id number,

?????????????????????????????????? course varchar2(5),

constraints fk_id foreign key (id) references t1(id) on delete cascade);

表已創建。

SQL> insert into t1 values(1,'a');

已創建 1 行。

SQL> insert into t1 values(2,'b');

已創建 1 行。

SQL> insert into t1 values(3,'c');

已創建 1 行。

SQL> insert into t2 values(2,'maths');

已創建 1 行。

SQL> insert into t2 values(3,'maths');

已創建 1 行。

SQL> commit;

提交完成。


SQL> select *from t1;

??????? ID NAME
---------- --------------------
???????? 1 a
???????? 2 b
???????? 3 c

SQL> select *from t2;

??????? ID COURSE
---------- ----------
???????? 2 maths
???????? 3 maths

SQL> update t1 set id=null where id=2;
update t1 set id=null where id=2
????????????? *
第 1 行出現錯誤:
ORA-01407: 無法更新 ("SCOTT"."T1"."ID") 為 NULL


SQL> delete t1 where id=2;

已刪除 1 行。

SQL> select *From t1;

??????? ID NAME
---------- --------------------
???????? 1 a
???????? 3 c

SQL> select *From t2;

??????? ID COURSE
---------- ----------
???????? 3 maths

(2)主表刪除,外鍵表設置成空

SQL> create table t1 (id number,

????????????????????????????????????????? name varchar2(10)? ,

?????????????????????????????????????????? constraints pk_id primary key(id));

表已創建。

SQL> create table t2(id number,

?????????????????????????????????????????? course varchar2(5),

?????????????????????????????????????? constraints fk_id foreign key (id) references t1(id) on delete set null);

表已創建。

?

SQL>? insert into t1 values(1,'a');

已創建 1 行。

SQL>? insert into t1 values(2,'b');

已創建 1 行。

SQL>? insert into t1 values(3,'c');

已創建 1 行。

SQL>? insert into t2 values(2,'maths');

已創建 1 行。

SQL>? insert into t2 values(3,'maths');

已創建 1 行。

SQL> commit;

提交完成。


SQL> select *from t1;

??????? ID NAME
---------- --------------------
???????? 1 a
???????? 2 b
???????? 3 c

SQL> select *from t2;

??????? ID COURSE
---------- ----------
???????? 2 maths
???????? 3 maths

SQL> delete t1? where id=2;

已刪除 1 行。

SQL> select *from t1;

??????? ID NAME
---------- --------------------
???????? 1 a
???????? 3 c

SQL> select *from t2;

??????? ID COURSE
---------- ----------
?????????? maths
???????? 3 maths


SQL> roll
回退已完成。
SQL> update t1 set id=4 where id=3;
update t1 set id=4 where id=3
*
第 1 行出現錯誤:
ORA-02292: 違反完整約束條件 (SCOTT.FK_ID) - 已找到子記錄

?

5.3 鎖和外鍵

在大多數情況下,用戶需要在外鍵(foreign key)上創建索引。但有一種情況例外,當外鍵所引用的主鍵(primary key)或唯一鍵(unique key)從不更新或刪除時,外鍵上可以不創建索引。?如果不在外鍵上建立索引,那么對主鍵更新時會對外鍵表瞬時產生一個4號鎖,會阻止外鍵表的dml操作。?

如果外鍵上沒有定義索引,對父表的主鍵執行 DML 操作時必須獲得子表上的共享行排他表級鎖(share row exclusive table lock)(也稱為share-subexclusive table lock,SSX)。此鎖能夠阻止其他事務對子表執行 DML 操作。SSX 鎖在獲得后立即釋放。如果父表中有多個主鍵值被更新或刪除,對每行執行 DML 操作時都需要對子表進行一次加鎖及解鎖操作。
 如果外鍵上定義了索引,則對父表的主鍵執行 DML 操作時只需獲得子表上的行共享表級鎖(row share table lock)(也稱為 subshare table lockSS)。此鎖不允許其他事務排他地對子表加鎖,但允許對父表及子表執行 DML 操作。如果對子表進行更新操作的同時有可能存在對父表的更新或刪除操作,則適宜采取本節講述的鎖機制。對父表的插入,更新,及刪除操作無需獲得子表上的鎖,但更新及刪除操作需要等待子表索引上的行級鎖。

??????????????? ?如果子表的外鍵約束定義中指定了 ON DELETE CASCADE 選項,則刪除主表數據時將導致相關的子表數據同時被刪除。在這種情況下,Oracle 采用的鎖機制與用???????????????戶先手工地刪除子表數據,再刪除相關的主表數據時采用的鎖機制相同。

6、Check: 檢查約束
check約束是建立一列或者一組列上,要求條件為真,才能插入。

?

建表時創建check約束

SQL> create table t1(id number check(id>1 and id<10),

??????????????????????????????????? id1 number check(id1 in (1,2)));

表已創建。

SQL> insert into t1 values(11,1)
? 2? ;
insert into t1 values(11,1)
*
第 1 行出現錯誤:
ORA-02290: 違反檢查約束條件 (SCOTT.SYS_C0013556)


SQL> insert into t1 values(10,1)
? 2? ;
insert into t1 values(10,1)
*
第 1 行出現錯誤:
ORA-02290: 違反檢查約束條件 (SCOTT.SYS_C0013556)

SQL> insert into t1 values(9,1)
? 2? ;

已創建 1 行。

?

指定約束名:

SQL> create table t2(x varchar2(2),constraints ckeck_x check(x='f'or x='m'));

表已創建。

?

刪除約束:

SQL> alter table t2 drop constraints? ckeck_x;

表已更改。

SQL> insert into t2 values('m');

已創建 1 行。

commit;

建表后創建約束:

SQL> alter table t2 add constraints ckeck_a check(x in ('a','b'));
alter table t2 add constraints ckeck_a check(x in ('a','b'))
?????????????????????????????? *
第 1 行出現錯誤:
ORA-02293: 無法驗證 (SCOTT.CKECK_A) - 違反檢查約束條件


SQL> select *From t2;

X
--
m

因為表中已經存在數據,再建約束和以前的約束不一樣,所以會報錯


SQL> alter table t2 add constraints ckeck_a check(x in ('a','b')) novalidate;

表已更改。

SQL> insert into t2 values('y');
insert into t2 values('y')
*
第 1 行出現錯誤:
ORA-02290: 違反檢查約束條件 (SCOTT.CKECK_A)


SQL> insert into t2 values('a');

已創建 1 行。

這時可以加novalidate,使得約束對已存在的數據不檢測,只檢查新添加進來的數據。

?

7、REF:

?

?

8 約束的狀態?

你可以指定一個約束用來約束現有數據或是以后新插入的數據

If you change the state of any single constraint from ENABLE NOVALIDATE to ENABLE VALIDATE, then the operation can be performed in parallel, and does not block reads, writes, or other DDL operations.

?

你不能讓外鍵引用一個關閉的主鍵或者唯一鍵

Modified DataExisting DataSummary

ENABLE

VALIDATE

Existing and future data must obey the constraint. An attempt to apply a new constraint to a populated table results in an error if existing rows violate the constraint.

ENABLE

NOVALIDATE

The database checks the constraint, but it need not be true for all rows. Thus, existing rows can violate the constraint, but new or modified rows must conform to the rules.

DISABLE

VALIDATE

The database disables the constraint, drops its index, and prevents modification of the constrained columns.

DISABLE

NOVALIDATE

The constraint is not checked and is not necessarily true.

If you enable a unique or primary key constraint, and if no index exists on the key, then Oracle Database creates a unique index. Unless you specifyKEEP INDEX when subsequently disabling the constraint, this index is dropped and the database rebuilds the index every time the constraint is reenabled.

如果你打開唯一索引或者主鍵約束,在那一列上沒有索引,那么oracle會創建一個唯一索引。除非你在關閉約束的時候指定keep index。這個索引會隨著約束關閉而刪除,隨著約束的啟用而打開

?

(1)enable+validate? 對表中現有數據以及后來的數據都會檢測,如果有違反約束的,就會報錯。

(2)enable+novalidate 對表中已經存在的數據不檢測,對以后的數據insert 或者update會檢測

(3)disable+validate 數據庫關閉約束,刪除約束列上的索引,阻止修改約束列的值,但是約束是合法的,多用在數據倉庫中,可以讓你節省索引的空間

(4)disable+novalidate 約束不會檢測

You cannot drop a table whose primary key is being referenced by a foreign key even if the foreign key constraint is inDISABLENOVALIDATE state. Further, the optimizer can use constraints inDISABLENOVALIDATE state.

?

SQL> create table t1(id number check(id>1 and id<10),

??????????????????????????????????? id1 number check(id1 in (1,2)));

表已創建。

?

SQL> select constraint_name,constraint_type,STATUS ,VALIDATED,DEFERRABLE from dba_constraints where table_name='T1';

CONSTRAINT_NAME??????????????? C STATUS?? VALIDATED???? DEFERRABLE
------------------------------ - -------- ------------- --------------
SYS_C0013557?????????????????? C ENABLED? VALIDATED???? NOT DEFERRABLE
SYS_C0013556?????????????????? C ENABLED? VALIDATED???? NOT DEFERRABLE

SQL> alter table t1 disable constraints SYS_C0013557;

表已更改。

SQL> select *From t1;

??????? ID??????? ID1
---------- ----------
???????? 9????????? 1

SQL> select constraint_name,constraint_type,STATUS ,VALIDATED,DEFERRABLE from dba_constraints where table_name='T1';

CONSTRAINT_NAME??????????????? C STATUS?? VALIDATED???? DEFERRABLE
------------------------------ - -------- ------------- --------------
SYS_C0013556?????????????????? C ENABLED? VALIDATED???? NOT DEFERRABLE
SYS_C0013557?????????????????? C DISABLED NOT VALIDATED NOT DEFERRABLE

如果你在關閉約束的時候,沒有指定約束的狀態,關閉約束同時狀態也變成not validate

SQL> alter table t1 disable validate constraints SYS_C0013557;

表已更改。

SQL> select constraint_name,constraint_type,STATUS ,VALIDATED,DEFERRABLE from dba_constraints where table_name='T1';

CONSTRAINT_NAME??????????????? C STATUS?? VALIDATED???? DEFERRABLE
------------------------------ - -------- ------------- --------------
SYS_C0013556?????????????????? C ENABLED? VALIDATED???? NOT DEFERRABLE
SYS_C0013557?????????????????? C DISABLED VALIDATED???? NOT DEFERRABLE

SQL> update t1 set id1=1 where id=2;
update t1 set id1=1 where id=2
*
第 1 行出現錯誤:
ORA-25128: 不能對帶有禁用和驗證約束條件 (SCOTT.SYS_C0013557) 的表進行插入/更新/刪除

?

說明 約束列disable+validate狀態不能修改約束列的值

?

SQL> select INDEX_NAME,STATUS From dba_indexes where table_name='T1';

INDEX_NAME???????????????????? STATUS
------------------------------ --------
PK_T1????????????????????????? VALID

SQL> select constraint_name,constraint_type,STATUS ,VALIDATED,DEFERRABLE from dba_constraints where table_name='T1';

CONSTRAINT_NAME??????????????? C STATUS?? VALIDATED???? DEFERRABLE
------------------------------ - -------- ------------- --------------
PK_T1????????????????????????? P ENABLED? VALIDATED???? NOT DEFERRABLE

SQL> alter table t1 disable constraints pk_t1;

表已更改。

SQL> select INDEX_NAME,STATUS From dba_indexes where table_name='T1';

未選定行

SQL> select constraint_name,constraint_type,STATUS ,VALIDATED,DEFERRABLE from dba_constraints where table_name='T1';

CONSTRAINT_NAME??????????????? C STATUS?? VALIDATED???? DEFERRABLE
------------------------------ - -------- ------------- --------------
PK_T1????????????????????????? P DISABLED NOT VALIDATED NOT DEFERRABLE

?

說明:關閉約束會刪除索引

SQL> alter table t1 disable constraints pk_t1 keep index;

表已更改。

SQL> select INDEX_NAME,STATUS From dba_indexes where table_name='T1';

INDEX_NAME???????????????????? STATUS
------------------------------ --------
PK_T1????????????????????????? VALID

SQL> select constraint_name,constraint_type,STATUS ,VALIDATED,DEFERRABLE from dba_constraints where table_name='T1';

CONSTRAINT_NAME??????????????? C STATUS?? VALIDATED???? DEFERRABLE
------------------------------ - -------- ------------- --------------
PK_T1????????????????????????? P DISABLED NOT VALIDATED NOT DEFERRABLE

SQL> insert into t1 select *from emp;
insert into t1 select *from emp
*
第 1 行出現錯誤:
ORA-00001: 違反唯一約束條件 (SCOTT.PK_EMPNO)

結論:通過keep index 命令可以保留索引,在開啟約束的時候可以不用建索引,但是保留索引,索引是唯一索引保證了索引的唯一性

?

9、延遲約束

每一個約束要么是延遲的,要么是非延遲的,這種狀態決定了約束的合法性,

如果是非延遲約束,會在每個語句執行時候檢測合法性,如果違反約束則回滾。

如果是延遲約束,可以分為兩種,一種是INITIALLY IMMEDIATE 一種是INITIALLY DEFERRED,延遲約束允許用戶使用set constraints 使用約束在commited的時候檢測約束。延遲約束只是讓你暫時關閉約束,進行更改可能違反約束的數據,直到沒有違反約束。

????? 你不能更改延遲性約束,除非刪除重建。 不能把延遲性約束通過alter 變成no deferred

??????? INITIALLY IMMEDIATE:會在語句執行的時候檢測約束

???????? INITIALLY DEFERRED:在語句執行的時候不檢測,但是在commite的時候會檢測約束,如果違反約束會回退。

建立延遲約束:

SQL> create table tt(id number ,constraints un_id unique(id) initially deferred deferrable);

表已創建。

SQL>? select TABLE_NAME, constraint_name,constraint_type,STATUS ,VALIDATED,DEFERRABLE,DEFERRED from dba_constraints where table_name='TT';
TABLE_NAME CONSTRAINT CO STATUS?????????? VALIDATED????????????????? DEFERRABLE?????????????????? DEFERRED
---------- ---------- -- ---------------- -------------------------- ---------------------------- ------------------
TT???????? UN_ID????? U? ENABLED????????? VALIDATED????????????????? DEFERRABLE?????????????????? DEFERRED

?

SQL> select INDEX_NAME,INDEX_TYPE ,UNIQUENESS from dba_indexes where table_name='TT';

INDEX_NAME?????????????????????????????????????????????????? INDEX_TYPE???????????????????????????????????? UNIQUENESS
------------------------------------------------------------ ------------------------------------------------------ ----
UN_ID??????????????????????????????????????????????????????? NORMAL???????????????????????????????????????? NONUNIQUE

SQL> insert into t1 values(1);
insert into t1 values(1)
??????????? *
第 1 行出現錯誤:
ORA-00947: 沒有足夠的值


SQL> insert into tt values(1);

已創建 1 行。

SQL> insert into tt values(1);

已創建 1 行。

SQL> commit;
commit
*
第 1 行出現錯誤:
ORA-02091: 事務處理已回退
ORA-00001: 違反唯一約束條件 (SCOTT.UN_ID)

?


SQL> create table tt1(id number ,constraints un_id1 unique(id) initially immediate deferrable);

表已創建。

SQL>? select TABLE_NAME, constraint_name,constraint_type,STATUS ,VALIDATED,DEFERRABLE,DEFERRED from dba_constraints where table_name='TT1';

TABLE_NAME CONSTRAINT CO STATUS?????????? VALIDATED????????????????? DEFERRABLE?????????????????? DEFERRED
---------- ---------- -- ---------------- -------------------------- ---------------------------- ------------------
TT1??????? UN_ID1???? U? ENABLED????????? VALIDATED????????????????? DEFERRABLE?????????????????? IMMEDIATE


SQL> select INDEX_NAME,INDEX_TYPE ,UNIQUENESS from dba_indexes where table_name='TT1';

INDEX_NAME?????????????????????????????????????????????????? INDEX_TYPE???????????????????????????????????? UNIQUENESS
------------------------------------------------------------ ------------------------------------------------------ --------
UN_ID1?????????????????????????????????????????????????????? NORMAL???????????????????????????????????????? NONUNIQUE

?

SQL> insert into tt1 values(1);

已創建 1 行。

SQL> insert into tt1 values(1);
insert into tt1 values(1)
*
第 1 行出現錯誤:
ORA-00001: 違反唯一約束條件 (SCOTT.UN_ID1)


結論:延遲約束,上的索引都是非唯一索引;

?

?


SQL> create table t1(id number not null deferrable);

表已創建。

SQL> create table t2(id number not null );

表已創建。

SQL> create index id_t1 on t1(id);

索引已創建。

SQL> create index id_t2 on t2(id);

索引已創建。

SQL> insert into t1 values(1);

已創建 1 行。

SQL> select *from t1;

??????? ID
----------
???????? 1

SQL> select *from t2;

??????? ID
----------
???????? 1

SQL> set autot trace
SQL> select? count(*) from t2;


執行計劃
----------------------------------------------------------
?? 0????? SELECT STATEMENT Optimizer=ALL_ROWS (Cost=2 Card=1)
?? 1??? 0?? SORT (AGGREGATE)
?? 2??? 1???? INDEX (FAST FULL SCAN) OF 'ID_T2' (INDEX) (Cost=2 Card=1
????????? )


SQL> select? count(*) from t1;


執行計劃
----------------------------------------------------------
?? 0????? SELECT STATEMENT Optimizer=ALL_ROWS (Cost=3 Card=1)
?? 1??? 0?? SORT (AGGREGATE)
?? 2??? 1???? TABLE ACCESS (FULL) OF 'T1' (TABLE) (Cost=3 Card=1)


?

結論:非空的非延遲約束+索引在select country(*) from t 時會走索引;如果是非空的延遲約束存在+索引是不會走索引的;

?

遺留問題:(1)外鍵和鎖的試驗

??????????????????? (2)關閉主鍵約束保留唯一索引,仍然可以保證唯一性,但是不能保證空值,那么關閉約束的意義在哪?

?

總結

以上是生活随笔為你收集整理的constraints的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

欧美与欧洲交xxxx免费观看 | 成人久久18免费网站麻豆 | 亚洲精品国偷自产在线99热 | 久久 国产一区 | 久久久精选 | 国产男女无遮挡猛进猛出在线观看 | 九九热精品在线 | 91av成人| 国产精品一区二区三区视频免费 | 日日夜夜亚洲 | 国产亚洲激情视频在线 | 俺要去色综合狠狠 | 去看片| 91久久奴性调教 | 18av在线视频 | 国产综合精品一区二区三区 | 国产成人香蕉 | 又粗又长又大又爽又黄少妇毛片 | 国产精品99久久久久人中文网介绍 | 开心激情婷婷 | 日韩av影视 | 国产 日韩 在线 亚洲 字幕 中文 | 二区在线播放 | 久久免费在线观看 | 96视频免费在线观看 | 香蕉在线影院 | 色福利网| a成人v在线| 国产又粗又猛又爽又黄的视频免费 | 色综合狠狠干 | 麻豆一精品传二传媒短视频 | 超碰在线网 | 日韩av影片在线观看 | 高清av网 | 国产电影一区二区三区四区 | 欧美电影在线观看 | 国产高清在线a视频大全 | 久久精品91久久久久久再现 | 中文字幕av一区二区三区四区 | 久久97久久 | 狠狠操天天操 | 欧美国产一区二区 | 手机在线欧美 | 久久视频在线观看中文字幕 | 日韩影视大全 | 又黄又爽又湿又无遮挡的在线视频 | 国产99久久久国产 | 免费看国产a | 欧美日韩在线看 | 色婷婷欧美| 国产免费片 | 狠狠搞,com| 久草久草视频 | 夜夜视频资源 | 在线观看午夜 | 人成电影网| av不卡免费看 | 国产黄影院色大全免费 | 99久久精品久久久久久动态片 | 日韩欧美区 | 中文字幕在线精品 | 97在线观看免费观看高清 | 一级片视频在线 | 日韩欧美久久 | 免费婷婷| 亚洲狠狠干 | 97偷拍视频 | 在线观看网站黄 | 日韩精品视频第一页 | 三级免费黄色 | 伊人资源站 | 97超碰资源总站 | 二区三区在线观看 | 激情亚洲综合在线 | 黄av在线| 韩日视频在线 | 午夜久久精品 | 天天色天天草天天射 | 99精品免费久久久久久久久 | 婷婷成人综合 | www.激情五月.com | 欧美在线观看禁18 | 三级av片 | 国产 视频 高清 免费 | 亚洲在线高清 | 国产精品久久久久久久久久久久冷 | 日韩精品网址 | 操操操av | 碰超在线 | 天天综合天天综合 | 日韩免费成人 | 欧美精品三级 | 色香com.| 日韩h在线观看 | 免费av小说 | 精品视频网站 | 久久久免费 | 成人黄色小说网 | 中文字幕一区在线观看视频 | 久久私人影院 | 97精品国产一二三产区 | 四虎影视精品永久在线观看 | 韩国一区二区av | 国产亚洲欧美一区 | 国产日韩欧美视频在线观看 | 91 中文字幕 | 91片黄在线观看动漫 | 日本特黄一级 | 日韩一级黄色av | 国外成人在线视频网站 | 久久综合色8888 | 波多野结衣一区三区 | 国产一二三精品 | 在线免费观看一区二区三区 | 狠狠色丁香婷婷综合欧美 | 色综合久久久久综合 | 日韩 在线a | 手机av电影在线 | 精品国内自产拍在线观看视频 | 日本中文一级片 | 成人欧美日韩国产 | 国产在线不卡一区 | 亚洲天堂毛片 | 热久久视久久精品18亚洲精品 | 色婷婷在线观看视频 | 丁香九月激情综合 | 国内外成人免费在线视频 | 九九爱免费视频在线观看 | 日韩一区二区三区免费视频 | 亚洲一区二区三区四区在线视频 | 久99久精品视频免费观看 | 精品久久久久久久久久久久久久久久 | 久久视频国产精品免费视频在线 | 精品久久九九 | 欧美精品xx| 国产成人黄色在线 | 国产精品青青 | 久久精品一区二区三 | a级国产片 | 国产尤物一区二区三区 | 亚洲欧美日韩在线一区二区 | 91最新在线观看 | 亚洲精品久久久久中文字幕二区 | avlulu久久精品 | av中文天堂在线 | 日韩欧美高清不卡 | www.色爱 | 亚洲春色成人 | 亚洲精品成人av在线 | 天天干婷婷 | 精品国产一区二区三区久久久蜜月 | 人人要人人澡人人爽人人dvd | 中文字幕在线免费97 | 日本三级人妇 | 国产日韩欧美精品在线观看 | 久久久一本精品99久久精品66 | 日本不卡一区二区三区在线观看 | 91在线在线观看 | 干综合网 | 免费视频在线观看网站 | 国产 欧美 日产久久 | 日韩精品视频免费看 | 成人黄大片| 中文字幕亚洲精品日韩 | 激情五月网站 | 久久伊人国产精品 | 国产精品18久久久 | 丁香影院在线 | 香蕉手机在线 | 五月婷亚洲 | 视频一区二区国产 | 狠狠狠色丁香婷婷综合久久88 | 亚洲精品一区二区三区四区高清 | 日韩免费在线观看视频 | 三级黄色a| 日韩av中文在线 | 国产丝袜一区二区三区 | 首页国产精品 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 久久成人国产精品一区二区 | 波多野结衣视频一区二区 | 久久理论电影网 | 狠狠综合久久av | 天天插天天狠天天透 | 国产麻豆精品一区二区 | 久草精品在线播放 | 国产剧情av在线播放 | 高清av免费观看 | 美女在线观看av | 国产一区二区午夜 | 最近日本字幕mv免费观看在线 | 国产精品欧美一区二区 | 精品在线视频观看 | 激情五月网站 | 粉嫩av一区二区三区入口 | 天天干天天想 | 看片网站黄色 | 久久99国产一区二区三区 | 四虎亚洲精品 | 最近中文字幕完整视频高清1 | 久久精品视频免费观看 | 国产破处视频在线播放 | 伊人资源视频在线 | 五月天久久久久 | 国产精品热 | 中文国产成人精品久久一 | 在线观看91| 亚洲区二区 | 丁香六月色 | 97超碰中文字幕 | 亚洲精品91天天久久人人 | 911国产在线观看 | 国产原创91| 久久美女电影 | 国产小视频在线看 | 国产精品乱码久久久久久1区2区 | 成 人 免费 黄 色 视频 | 91九色视频网站 | 久久久观看 | 天天操天天爱天天爽 | av免费看网站 | 国产精品毛片一区二区在线看 | 992tv人人草| 韩国av免费| 国产专区视频在线观看 | 日本精品久久久久中文字幕5 | 在线观看不卡视频 | 国产成人一区二区三区影院在线 | 国产视频美女 | 日韩一区二区免费在线观看 | 黄网站色视频免费观看 | 久草在线网址 | 99riav1国产精品视频 | 人人澡人人澡人人 | 丁香婷婷自拍 | 久久免费高清视频 | 亚洲欧美日韩不卡 | 四虎在线视频 | 91av视频播放 | 很黄很污的视频网站 | 久久99视频免费 | 四虎成人在线 | 免费男女羞羞的视频网站中文字幕 | 91在线精品秘密一区二区 | 亚洲欧美国内爽妇网 | 最新日韩在线观看视频 | 色激情五月| 69国产精品视频 | 日韩av手机在线看 | 欧美精品生活片 | 欧美日本啪啪无遮挡网站 | 国产精品福利无圣光在线一区 | 97超碰成人在线 | 视频直播国产精品 | 久草视频视频在线播放 | 91热爆视频 | 婷婷色 亚洲| 久久久性 | 国产一区二区三区四区在线 | 激情视频在线高清看 | 成人午夜影院在线观看 | 免费看的黄色小视频 | 国产手机在线观看 | 久久精品一级片 | 欧美日韩国产一区二区三区 | 久久婷婷视频 | 国产免费区 | 综合激情婷婷 | 国产拍在线| 蜜桃av久久久亚洲精品 | 国产看片网站 | 国产美女免费观看 | 国产精品系列在线观看 | 国产精品九九九 | 久久激情五月丁香伊人 | 国产精品99久久久久久人免费 | 狠狠干天天操 | 天天爽夜夜操 | 色五月成人 | 午夜av在线免费 | 亚洲精品综合在线观看 | 一区二区三区免费在线播放 | 超碰人人国产 | 国产999精品久久久影片官网 | 久久av观看| 成人av影视| 精品一区 在线 | 99视频偷窥在线精品国自产拍 | 欧美在线视频一区二区三区 | 国产麻豆精品95视频 | 九色精品免费永久在线 | 亚洲免费观看在线视频 | 看片黄网站 | 日韩在线播放欧美字幕 | 国产aa精品 | 国产精品专区在线观看 | 97免费在线观看视频 | 国产精品青青 | 亚洲国产成人精品电影在线观看 | 天操夜夜操 | 91九色国产蝌蚪 | 成在线播放 | 黄色毛片视频免费观看中文 | 在线免费看黄色 | 亚洲 中文 欧美 日韩vr 在线 | 国产精品福利一区 | 九九热免费在线视频 | 国产资源网 | 黄色片网站大全 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 人人干人人干人人干 | 欧美国产精品久久久久久免费 | av电影一区二区 | 丁香六月婷婷开心婷婷网 | 国产精品久久久久久久久久白浆 | 精品久久久久久久久久久院品网 | 日日爱网站 | 欧美日韩免费网站 | 亚洲手机天堂 | 中文伊人| 国产精品久久综合 | 日韩xxx视频| 激情五月婷婷综合网 | 日韩av电影中文字幕 | 国产精品麻豆视频 | 国产不卡在线观看视频 | 天天曰天天爽 | 天天综合天天做天天综合 | 黄色一级网 | 黄色免费在线看 | 亚洲最大在线视频 | 欧美a在线免费观看 | 免费精品在线 | 日韩国产精品一区 | 国产精品久久久久久久免费大片 | 久久国产精品视频观看 | av三级在线免费观看 | 亚洲丝袜中文 | 99久热精品| www.色午夜 | 久久精品www人人爽人人 | 亚洲精品色视频 | 精品在线播放视频 | 国产精品久久久久国产a级 激情综合中文娱乐网 | 久久99视频免费观看 | 特级毛片在线免费观看 | 久久综合久久综合久久综合 | 精品久久一区二区 | 国产精品美| 中国一级片在线播放 | 伊人久久国产精品 | 一区二区三区四区五区六区 | 亚洲精品美女久久久 | 91精品欧美 | 日韩激情中文字幕 | 激情丁香婷婷 | 日韩欧美高清在线 | 国产视频在线看 | 一区二区不卡视频在线观看 | 不卡日韩av | 久久免费福利 | 色婷婷综合久色 | 久久黄色免费 | 黄www在线观看 | 日韩电影中文,亚洲精品乱码 | 2023亚洲精品国偷拍自产在线 | 九九九视频在线 | 亚洲,国产成人av | 91人人爽人人爽人人精88v | 精品福利视频在线 | 亚洲国产999 | 亚洲一区视频免费观看 | 国产黄a三级三级三级三级三级 | 中文字幕在线观看你懂的 | 日本在线中文在线 | 亚洲色综合 | 人人草天天草 | 国产精品日韩在线观看 | 欧美日韩免费网站 | 亚洲 欧美 变态 国产 另类 | 国产精品福利久久久 | 98精品国产自产在线观看 | 人人射人人 | 天天干夜夜想 | 国产精品久久久久永久免费看 | 亚洲在线视频免费 | 久久亚洲专区 | 日韩毛片精品 | 91精品影视 | 久久综合中文色婷婷 | 国产九色视频在线观看 | 亚洲最大成人免费网站 | 欧美极度另类性三渗透 | 国语黄色片 | 人人狠狠综合久久亚洲婷 | 在线视频 精品 | 成人免费观看在线视频 | 在线国产视频 | 久久视了| 亚洲综合色视频在线观看 | 亚洲精品videossex少妇 | 三级动图 | 久久福利在线 | 波多野结衣精品在线 | 精品国产黄色片 | 久久99精品国产99久久6尤 | 亚洲精品美女在线观看播放 | 1024手机在线看 | 尤物九九久久国产精品的分类 | 午夜视频在线观看网站 | 日韩在线高清免费视频 | 欧美日韩在线观看一区二区 | 亚洲久在线 | 干狠狠 | 中文字幕高清视频 | 久插视频 | 精品麻豆入口免费 | 极品久久久久久久 | 韩日视频在线 | 亚洲国产精品一区二区尤物区 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 人人爱天天操 | 有码视频在线观看 | 色www.| 91av手机在线观看 | 美女视频黄色免费 | 亚洲区精品视频 | 在线中文字幕观看 | www.夜夜操 | 99久久久国产免费 | www四虎影院 | 色网站中文字幕 | 中文字幕中文字幕中文字幕 | 日韩欧美一区二区三区视频 | av丝袜制服| 国产.精品.日韩.另类.中文.在线.播放 | 久草在线视频首页 | 国产小视频免费在线观看 | 日韩成人免费电影 | 日韩av福利在线 | a在线一区 | 免费在线播放av电影 | 四虎成人精品永久免费av | 成人黄色在线电影 | 天天搞天天干 | 日本久久高清视频 | 日本激情视频中文字幕 | 免费在线91 | 91精品推荐 | 超级碰碰碰碰 | 在线综合 亚洲 欧美在线视频 | 激情在线五月天 | 五月婷婷综 | 欧美一级久久久 | 免费黄色在线网站 | 欧美色操| 激情喷水| 最近日本mv字幕免费观看 | 国产精品久久久久久久久久久免费 | 在线高清av | 免费高清看电视网站 | 亚洲国产成人久久 | 久久久亚洲成人 | 日韩成人在线免费观看 | 精品亚洲视频在线 | 在线观看中文字幕dvd播放 | 亚洲麻豆精品 | 99热高清 | 国产一区免费观看 | 亚洲国产中文字幕在线视频综合 | 日本精品视频网站 | 国产高潮久久 | av电影不卡 | 色婷婷av一区 | av在线播放中文字幕 | 亚洲一级二级三级 | 国产精品久久免费看 | 99色在线视频 | 永久免费毛片在线观看 | 国产精品成久久久久三级 | 亚洲精品小视频在线观看 | 97日日碰人人模人人澡分享吧 | 欧美激情精品久久 | 成人黄色国产 | 麻豆视频免费 | 九九九国产 | www久久久久 | 成人av网址大全 | 热re99久久精品国产66热 | 亚洲视频综合 | 亚洲 欧美 精品 | 国产精品精品视频 | 五月在线视频 | 日韩一区在线免费观看 | 五月天婷婷免费视频 | 99视频+国产日韩欧美 | 99久久精品一区二区成人 | 91麻豆精品国产91久久久久久 | 色视频在线免费观看 | 99久久婷婷 | 国产福利中文字幕 | 国产999精品视频 | 欧美成人精品三级在线观看播放 | 麻豆影视在线播放 | 亚洲在线国产 | 天天摸天天舔天天操 | 国产亚洲婷婷 | 精品久久久久久久久中文字幕 | 91成年人视频 | 在线看片中文字幕 | 99久久精品国产一区二区三区 | 色综合天天综合网国产成人网 | 91av免费在线观看 | 日韩av不卡在线 | 久久综合九色综合久久久精品综合 | 丝袜美腿在线视频 | 日韩美在线观看 | 国产精品99久久久久的智能播放 | 91热精品视频| 国产原创在线 | 色97在线 | 激情欧美xxxx | 精品免费一区 | 亚洲国产精品999 | 日本性久久 | 久久成人午夜视频 | 国产一级视频在线 | 免费十分钟 | 亚洲精品动漫成人3d无尽在线 | 久久99精品久久久久久清纯直播 | 奇米网777 | 国产精品电影一区二区 | 国产精品日韩精品 | 黄色亚洲大片免费在线观看 | 91精品视频一区二区三区 | 人人澡超碰碰 | 久久国产精品成人免费浪潮 | 久久免费毛片视频 | 欧美激情视频一区 | 久久中国精品 | 射久久| 国产小视频国产精品 | 天天干,天天干 | 国产亚洲精品久久久久久久久久久久 | 国产成人精品a | 国产精品二区三区 | 天堂av在线免费观看 | 亚洲国产精品小视频 | 五月婷婷狠狠 | 免费能看的av | 一本到视频在线观看 | 97国产大学生情侣酒店的特点 | 国产精品男女啪啪 | 日韩黄色在线观看 | 天天射天天搞 | 在线免费av电影 | 亚洲成人高清在线 | 免费视频一二三区 | 欧美日韩国产页 | 国产精品国内免费一区二区三区 | 麻豆免费视频网站 | 色婷婷九月 | 91精品国产91热久久久做人人 | 狠狠的干狠狠的操 | 国产视频在线看 | 久久论理 | 麻豆国产露脸在线观看 | 一区二区视频在线观看免费 | 四虎影视www | 欧美国产日韩一区二区三区 | 伊人婷婷久久 | 欧美日韩大片在线观看 | 国产黑丝一区二区 | 黄视频网站大全 | 精品国产一区二区三区久久久久久 | 日韩精品第1页 | 亚洲精品一区二区久 | 97超碰福利久久精品 | 天堂视频中文在线 | 色婷婷综合激情 | 一区二区欧美在线观看 | 天天干夜夜操视频 | 国产香蕉视频在线观看 | 激情视频在线高清看 | 一区二区影视 | 黄色一级免费 | 中文字幕免费在线看 | 日韩国产精品久久 | 九九导航| 久久97久久97精品免视看 | 日本动漫做毛片一区二区 | 99草在线视频 | 天堂网一区二区 | 久久久这里有精品 | 国产精品 日韩 | 欧美精品久久天天躁 | 免费情缘 | 久久人人爽爽人人爽人人片av | 天天操天操| www在线观看视频 | 视频国产| 97福利视频 | 日本不卡123区 | 国产黄a三级三级三级三级三级 | 久久亚洲在线 | 在线视频18在线视频4k | 久久精品久久久精品美女 | 国产剧情一区二区 | 在线看v片| 毛片激情永久免费 | 久草视频在线资源站 | 色婷婷伊人 | 国产黄色大片 | 最新久久久 | 日本精品一区二区三区在线播放视频 | 91av视屏 | 欧美a级免费视频 | 玖玖爱国产在线 | 色噜噜狠狠狠狠色综合久不 | 一级黄色在线免费观看 | 高清不卡一区二区在线 | 麻豆视频大全 | 97超碰人人模人人人爽人人爱 | 久久久久免费网 | 久久综合九色综合久久久精品综合 | 日本精品午夜 | 96久久欧美麻豆网站 | 涩涩资源网 | 人人插人人费 | 又湿又紧又大又爽a视频国产 | 97精品国产97久久久久久免费 | 欧美美女视频在线观看 | 日本中文在线播放 | 久久婷婷网 | 在线国产不卡 | 欧美a影视 | 涩涩成人在线 | 久久久久久久久久久久久影院 | 91网址在线观看 | 一区二区三区日韩在线观看 | 欧美日韩视频免费看 | av线上看| 免费在线观看国产黄 | 成人毛片一区 | 人人天天夜夜 | 高清av影院 | 国产成人亚洲在线观看 | 91尤物在线播放 | 日韩欧美亚州 | 久热爱 | 国产女人40精品一区毛片视频 | 波多野结衣一区 | 国产婷婷精品av在线 | 久久黄色免费 | 欧美极度另类 | 狠狠干电影 | www.玖玖玖| 国产精品久久久久久一二三四五 | 成人少妇影院yyyy | 欧美大片在线看免费观看 | 伊人中文在线 | 国产视频美女 | 国产亚洲视频在线免费观看 | 国产在线免费av | 欧洲色综合 | 在线国产欧美 | 精品国产欧美一区二区 | 日韩欧美视频在线播放 | 国产一级久久 | 免费看三级网站 | 久久99精品国产99久久6尤 | 免费看片成年人 | 伊人电影在线观看 | 人人爽人人做 | 九色视频自拍 | 久久激情精品 | 97色婷婷成人综合在线观看 | 婷婷色网址| 久久黄色网址 | 日韩久久精品一区二区 | 五月天激情婷婷 | 亚洲精品国产成人 | 91精品国产自产91精品 | 国产小视频在线播放 | 亚洲国产一二三 | h网站免费在线观看 | 日韩网站在线看片你懂的 | 四虎在线免费观看 | 国产网站色 | 精品国产美女 | 在线免费成人 | 久久爱资源网 | 99久久综合国产精品二区 | 亚洲精品黄 | 成人av午夜 | 欧美成人黄色片 | 天堂av最新网址 | 国产黄色片一级 | 国产成人亚洲精品自产在线 | 狠狠狠色丁香婷婷综合久久五月 | 日韩精品aaa | 三级免费黄色 | 中文字幕在线日 | 免费男女羞羞的视频网站中文字幕 | 日本成人免费在线观看 | 亚洲三级黄色 | av在线一二三区 | 亚洲人成人在线 | 777xxx欧美| 午夜少妇一区二区三区 | 在线岛国av | 五月婷婷播播 | 欧美日韩精品在线免费观看 | 激情小说网站亚洲综合网 | 国产精品久久久久久久久久 | 国产成人av电影在线 | 欧美一级久久久 | 9在线观看免费高清完整版在线观看明 | 热九九精品 | 日韩精品视频免费在线观看 | a v在线观看 | 91成人精品一区在线播放69 | av电影 一区二区 | 午夜精品一区二区三区可下载 | 亚洲国产日韩精品 | 在线播放一区 | 国产精品久久久久一区二区三区 | 99精品一区 | 久久久久久久免费观看 | 午夜 在线 | 日韩国产欧美视频 | 久久久不卡影院 | 婷婷激情久久 | 99精品国自产在线 | 亚洲国产中文字幕 | 91精品国产亚洲 | 丁香婷婷色综合亚洲电影 | 超碰97久久 | 视频在线一区 | 激情五月婷婷激情 | 伊人国产在线观看 | 国产资源精品 | 黄色视屏免费在线观看 | www.天天操.com| 欧美另类xxx| 91久久国产综合精品女同国语 | 不卡国产视频 | 免费看av在线 | 精品国产三级a∨在线欧美 免费一级片在线观看 | 一级黄色片在线免费看 | 国产精品一区二 | 五月婷婷激情五月 | 国产亚洲高清视频 | 日韩激情视频在线观看 | 亚洲午夜久久久久久久久 | 国产91在线播放 | 亚洲天天| 亚洲全部视频 | 1024久久 | 国产精品久久片 | 日韩av影片在线观看 | 少妇视频在线播放 | 亚洲日本韩国一区二区 | 中文字幕在线观 | 91精品国产高清自在线观看 | 在线欧美日韩 | www一起操 | 久久国产免费视频 | 97精品国产97久久久久久久久久久久 | 久久国产经典 | 欧美一区日韩一区 | 欧美日本中文字幕 | 日韩欧美视频在线播放 | 93久久精品日日躁夜夜躁欧美 | 欧美激情综合色综合啪啪五月 | 蜜臀av一区二区 | 69精品在线 | 日韩不卡高清 | 91av在线免费 | 久久久不卡影院 | 日韩高清在线一区 | 久久99国产精品自在自在app | 国产精品久久久久久a | 99视频精品免费视频 | 丰满少妇在线观看网站 | 久久久久国产一区二区 | 五月婷婷另类国产 | 91经典在线 | 综合久久精品 | 国产 欧美 在线 | 天天色欧美 | 97精品国产手机 | 黄色特级一级片 | 91av视频在线观看免费 | 91爱爱中文字幕 | 精品自拍网 | av中文字幕不卡 | www.夜色.com| 久免费 | 成人av网站在线 | 玖玖精品在线 | 中国一级片在线播放 | 五月婷婷激情综合 | 开心婷婷色 | 激情视频二区 | 一区二三国产 | 欧美午夜性生活 | 五月激情六月丁香 | 91av手机在线 | 中文字幕乱码电影 | 国产亚洲片 | 色综合天天狠狠 | 久久在线一区 | 91免费高清视频 | 99精品视频在线观看免费 | 手机在线看永久av片免费 | 久久人人爽爽人人爽人人片av | 少妇做爰k8经典 | 亚洲精品在 | 久久深夜福利免费观看 | 国产黄色大片 | 精品人妖videos欧美人妖 | 天堂网一区二区三区 | 成人av资源网站 | 天天操天天干天天摸 | 精品国产一区二区三区男人吃奶 | 久久精品99| 亚洲涩涩网站 | 91高清完整版在线观看 | 亚洲黄色区 | 亚洲精品乱码白浆高清久久久久久 | 亚洲电影图片小说 | 国产精品夜夜夜一区二区三区尤 | 国产精品久久久久久久久久白浆 | 成 人 黄 色 视频 免费观看 | 丁香婷婷在线 | 国产中文字幕在线视频 | 一级片视频免费观看 | 激情中文字幕 | 久久看看 | 一区二区理论片 | 免费看片网页 | 欧美精品首页 | 精品视频国产一区 | 福利视频一区二区 | 麻豆精品国产传媒 | 在线观看国产一区 | 福利视频午夜 | 久影院 | 免费 在线 中文 日本 | 夜夜夜夜操 | 91视频免费国产 | 欧美91在线| 在线国产视频 | 天天操伊人 | 日韩电影在线一区二区 | 国产麻豆精品传媒av国产下载 | 亚洲视频在线视频 | 五月婷婷开心中文字幕 | 中文字幕久久精品一区 | 在线黄色国产 | 国产精品成人免费精品自在线观看 | 精品一二三四在线 | 国产 日韩 欧美 自拍 | 一本一本久久a久久精品综合妖精 | 超碰在线97免费 | 天天干天天射天天爽 | av成人在线观看 | 五月天色网站 | 九九久 | 成人永久免费 | 国内精品久久久久影院一蜜桃 | 日韩精品在线播放 | 中文资源在线官网 | 伊人色播 | 欧美日韩国产在线精品 | 日本大尺码专区mv | 天天骚夜夜操 | 亚洲一区二区三区精品在线观看 | 五月激情丁香图片 | 亚洲国产97在线精品一区 | 亚洲视频www | 成人黄色电影在线播放 | 最近中文字幕免费 | 一区二区不卡高清 | 欧美日本中文字幕 | 日本午夜免费福利视频 | 在线国产日本 | 久久精彩免费视频 | 国产高清亚洲 | 久久色在线观看 | 天天看天天操 | 99日韩精品| 中文字幕 国产视频 | 免费无遮挡动漫网站 | 国产高清不卡一区二区三区 | 丝袜制服天堂 | 亚洲日本黄色 | 欧美一级网站 | 看全黄大色黄大片 | 国产在线黄色 | 久久国产午夜精品理论片最新版本 | 国产一区91 | 夜色资源网 | 久久高清精品 | 欧美男女爱爱视频 | 亚洲 欧美 变态 国产 另类 | 夜夜夜夜操 | 国色天香永久免费 | 毛片美女网站 | 黄色一级大片在线观看 | 日韩欧美一区二区三区免费观看 | a黄色一级片 | 综合网天天色 | 波多野结衣在线中文字幕 | 三级小视频在线观看 | 亚洲国产高清视频 | 国产精品成人自产拍在线观看 | 在线视频 影院 | 人人干人人添 | 国产永久免费高清在线观看视频 | 亚洲欧洲av在线 | 欧美最新大片在线看 | 一本色道久久综合亚洲二区三区 | 久草在线视频免费资源观看 | 日韩高清成人 | 久草在线看片 | 亚州精品在线视频 | 激情影院在线观看 | 免费视频一二三区 | 久久久久成人精品 | 日韩高清免费在线观看 | 人人射人人射 | 国产精品 中文字幕 亚洲 欧美 | 综合久色 | 亚洲精品视频免费 | 久久99精品久久久久久清纯直播 | av福利在线导航 | 久久久福利影院 | 国产福利一区在线观看 | 色综合久久久久久久 | 精品在线观看一区二区三区 | 久草在线最新免费 | 国产精品男女 | 国产专区一 | 久久精品视频在线播放 | 日韩精品视频网站 | 中文字幕免费高清在线 | 婷婷四房综合激情五月 | 97超碰总站 | 一区二区三区四区五区在线视频 | 亚州黄色一级 | 四虎国产精品成人免费4hu | 黄色电影小说 | 国产成人一区二区三区久久精品 | 国产一区在线不卡 | 久久精品5| 狠狠地操 | 人人狠狠综合久久亚洲 | 婷婷网站天天婷婷网站 | 在线视频 区 | 手机成人av | 国产精品9999久久久久仙踪林 | 久草视频免费 | 国产精品一区二区在线免费观看 | 永久免费毛片 | 超碰在线97国产 | 久久精品网站视频 | 91经典在线 | 欧美乱淫视频 | 超碰国产在线播放 | 9在线观看免费高清完整 | 黄色片网站大全 | 天天干天天天天 | 9免费视频 | 国产精品久久久久久婷婷天堂 | 亚洲国产精品久久久久婷婷884 | 国产96在线视频 | 久久99久久久久久 | 成人91在线| 精品久久久久久综合 | 中文字幕精| 欧美久草视频 | 国产视频一区二区在线播放 | 丁香婷婷色综合亚洲电影 | 国产精品久久久久久久久久久免费看 | 视频在线一区二区三区 | 人人干人人干人人干 | 狠狠操狠狠 | 中文字幕在线播放一区 | 日本久久久亚洲精品 | 亚洲国产精品电影 | 就要干b | 久久国产精品第一页 | 99精品久久只有精品 | 欧洲精品视频一区二区 | 99免费在线 | 夜夜夜草 |