『ORACLE』 内置约束(11g)

not null约束只能在列级定义;可以指定not null约束的名称,如不指定则自动生成名称

SQL> create table t1 (x number not null, y number constraint nn_t111_y not null);

Table created.

SQL> select constraint_name,constraint_type,search_condition from user_constraints where table_name = upper(‘t1‘);

CONSTRAINT_NAME              C  SEARCH_CONDITIO
------------------------------ -- ---------------------
SYS_C0011402                    C "X" IS NOT NULL
NN_T111_Y                          C "Y" IS NOT NULL

SQL> create table student1 (sno number(5) not null, sname varchar2(20) not null constraint uk_student_sname1 unique,idcard varchar2(18),createtime
date default sysdate not null,constraint uk_student_idcard1 unique(idcard));

Table created.

SQL> create table student2 (sno number(5) not null, sname varchar2(20) not null unique,idcard varchar2(18),createtime date default sysdate not null,

constraint uk_student_idcard2 unique(idcard));

Table created.

SQL> select table_name,column_name,constraint_name from user_cons_columns where table_name like upper(‘student_‘);

TABLE_NAME COLUMN_NAME CONSTRAINT_NAME
--------------- --------------- ---------------
STUDENT1 SNO SYS_C0011404
STUDENT1 SNAME SYS_C0011405
STUDENT1 CREATETIME SYS_C0011406
STUDENT1 SNAME UK_STUDENT_SNAM
E1

STUDENT1 IDCARD UK_STUDENT_IDCA
RD1

STUDENT2 SNO SYS_C0011409
STUDENT2 SNAME SYS_C0011410
STUDENT2 CREATETIME SYS_C0011411
STUDENT2 SNAME SYS_C0011412
STUDENT2 IDCARD UK_STUDENT_IDCARD2

主键约束

1、行级定义主键,系统分配主键名称

create table t_pk1
(sno number(5) primary key,
sname varchar2(20),
idcard varchar2(18),
createtime date
);

2、表级定义主键,自定义主键名曾

create table t_pk2
(sno number(5),
sname varchar2(20),
idcard varchar2(18),
createtime date,
constraint pk_t_pk2_sno primary key(sno)
);

3、表级定义主键,系统分配主键名称

create table t_pk3
(sno number(5),
sname varchar2(20),
idcard varchar2(18),
createtime date,
primary key(sno)
);

4、行级定义主键,自定义主键名称,并且指定索引使用的表空间
create table t_pk4
(sno number(5) constraint pk_t_pk4_sno primary key using index tablespace example,
sname varchar2(20),
idcard varchar2(18),
createtime date
);
5、表级定义主键,自定义主键名称,并且指定索引使用的表空间
create table t_pk5
(sno number(5),
sname varchar2(20),
idcard varchar2(18),
createtime date,
constraint pk_t_pk5_sno primary key(sno) using index tablespace example
);

SQL> select table_name,column_name,constraint_name from user_cons_columns
2 where table_name like upper(‘t_pk_‘);

查看主键情况

TABLE_NAME COLUMN_NAME CONSTRAINT_NAME
--------------- --------------- ---------------
T_PK1 SNO SYS_C0011414
T_PK2 SNO PK_T_PK2_SNO
T_PK3 SNO SYS_C0011416
T_PK4 SNO PK_T_PK4_SNO
T_PK5 SNO PK_T_PK5_SNO

查看主键自动创建索引情况

SQL> select index_name,uniqueness,tablespace_name
2 from user_indexes
3 where table_name like upper(‘t_pk_‘);

INDEX_NAME UNIQUENES TABLESPACE_NAME
------------------------------ --------- ------------------------------
SYS_C0011414 UNIQUE USERS
PK_T_PK2_SNO UNIQUE USERS
SYS_C0011416 UNIQUE USERS
PK_T_PK5_SNO UNIQUE EXAMPLE
PK_T_PK4_SNO UNIQUE EXAMPLE

清理环境

drop table t_pk1 purge;
drop table t_pk2 purge;
drop table t_pk3 purge;
drop table t_pk4 purge;
drop table t_pk5 purge;

命令行增加主键,自定义主键名称

table t_pk6
(sno number(5),
sname varchar2(20),
idcard varchar2(18),
createtime date
);
alter table t_pk6 add constraint pk_t_pk6_sno primary key(sno);

命令行增加主键,自定义主键名称,并且指定自动创建的索引表空间

create table t_pk7
(sno number(5),
sname varchar2(20),
idcard varchar2(18),
createtime date
);
alter table t_pk7 add constratint pk_t_pk7_sno primary key(sno) using index tablespace example;

时间: 2024-08-01 10:33:13

『ORACLE』 内置约束(11g)的相关文章

『ORACLE』 创建表(11g)

CREATE TABLE语句 create table [schema.] 表名 (column datatype [DEFAULT expr][, ...]); 在插入的过程中,为列指定一个默认值 ...hire_date DATE DEFAULT SYSDATE,... 默认值必须满足列的数据类型定义 create table hire_dates (id number(8),hire_date date default sysdate); create table dept (deptno

『ORACLE』 PLSQL-case语句(11g)

语法: CASE selector WHEN exp1 then res1 WHEN exp2 then res2 WHEN exp3 then res3 ... [ELSE resN] end; SQL> declare 2 mygrade char(1):='A'; 3 res varchar2(20); 4 begin 5 res := 6 CASE mygrade 7 WHEN 'A' THEN 'The mark is 90-100' 8 WHEN 'B' THEN 'The mark

Python『list』内置方法

list.append(元素) # 以列表形式追加元素 list.clear() # 清空列表 list.copy() # 拷贝列表(新变量) list.count() # 统计元素出现的次数 list.extend(元素) # 以迭代方式追加元素 list.index() # 返回元素索引位置 list.insert(索引) # 指定位置插入元素 list.pop(索引) # 删除指定位置的元素并返回元素 list.remove(元素) # 删除指定元素 list.reverse() # 反转

『ORACLE』 约束实验(11g)

create table student (   sno                  NUMBER(5)            not null,   sname                VARCHAR2(20),   idcard               VARCHAR2(18),   createtime           DATE                 default SYSDATE,   nno                  NUMBER(2),   co

『ORACLE』 数据泵Data Pump中expdp导出(11g)

[[email protected] ~]$ mkdir datadump[[email protected] ~]$ cd datadump/[[email protected] datadump]$ pwd/home/oracle/datadump SQL> create or replace directory dir_dp as '/home/oracle/datadump'; Directory created. SQL> grant read,write on directory

『ORACLE』 清理监听日志(11g)

停止监听服务进程(tnslsnr)记录日志.lsnrctl  set log_status off; 将监听日志文件(listener.log)复制一份,以listener.log.yyyymmdd格式命名cp listener.log listener.log.20170521 将监听日志文件(listener.log)清空. cat /dev/null > listener.log 开启监听服务进程(tnslsnr)记录日志lsnrctl set log_status on; 对于这种lis

『ORACLE』 永久表空间创建设置(11g)

SQL> create tablespace ML01 datafile '/u01/app/oracle/oradata/enmo1/ML.dbf' size 15M autoextend on maxsize 25M; Tablespace created. SQL> alter database datafile '/u01/app/oracle/oradata/enmo1/ML.dbf' autoextend on next 2M;

『ORACLE』 对永久表空间进行DML操作(11g)

SQL> create tablespace ts_users datafile   '/u01/app/oracle/oradata/enmo1/ts01.dbf' size 10m autoextend on maxsize 20m,  '/u01/app/oracle/oradata/enmo1/ts01.bak.dbf' size 10m autoextend on maxsize 20m; Tablespace created. SQL> select tablespace_name

『ORACLE』 SQL语句简单应用(五)(11g)

not null  非空  字段+not null unique  唯一 primary key  主键(确保数据不能重复) foreign key  外键 check  必须 drop purge彻底删除 级联删除:删除一个部门,部门里的员工跟着删除--->on delete cascade 制空:把部门下的员工转到NULL,删除部门--->on delete set null 不能动:先删员工,再删部门 references 参照 constraint 约束 用子查询创建的表除了null,