精华内容
下载资源
问答
  • Oracle设置主键
    千次阅读
    2020-12-22 10:09:56

    请移步原文:https://www.php.cn/oracle/455511.html

     

     

    oracle设置主键的方法:

          1、在创建表时定义主键 ,代码为【constraint TF_B_AIR_CONFIG_PK primary key(TYPE_ID)】;

          2、在创建表后,使用alter table语法设置主键。



    一、什么是主键

         主键(primary key)是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录。

         所谓的复合主键,就是指你表的主键含有一个以上的字段组成。 如果表里没有可以当唯一主键,可以使用复合主键,确定一条记录的唯一性。

    二、创建主键两种方式

         1)第一种, 在创建表时定义主键

         单列主键示例:

    ----创建TF_B_AIR_CONFIG表
    
    create table ECS_STORE.TF_B_AIR_CONFIG(
    
      TYPE_ID            VARCHAR2(20) not null,
    
      PROVINCE_CODE      VARCHAR2(4) not null,
    
      PARAMETER_TYPE     VARCHAR2(2) not null,
    
      LIMIT_NUM          VARCHAR2(4) not null,
    
      EFFECTIVE_FALG     VARCHAR2(2) default '1',
    
      UPDATE_TIME        DATE default sysdate,
    
      constraint TF_B_AIR_CONFIG_PK primary key(TYPE_ID)--单列主键 
    
    )

     

    复合主键示例:

    ----创建TF_B_AIR_CONFIG表
    
    create table ECS_STORE.TF_B_AIR_CONFIG(
    
      TYPE_ID            VARCHAR2(20) not null,
    
      PROVINCE_CODE      VARCHAR2(4) not null,
    
      PARAMETER_TYPE     VARCHAR2(2) not null,
    
      LIMIT_NUM          VARCHAR2(4) not null,
    
      EFFECTIVE_FALG     VARCHAR2(2) default '1',
    
      UPDATE_TIME        DATE default sysdate,
    
      constraint TF_B_AIR_CONFIG_PK primary key(TYPE_ID , PROVINCE_CODE)--复合主键 
    
    )

     

             2)第二种, 在创建表后,使用alter table语法

    ALTER TABLE table_name ADD CONSTRAINT constraint_name PRIMARY KEY (col1, col2,...coln);

    示例

    ----创建TF_B_AIR_CONFIG表
    
    create table ECS_STORE.TF_B_AIR_CONFIG(
    
      TYPE_ID            VARCHAR2(20) not null,
    
      PROVINCE_CODE      VARCHAR2(4) not null,
    
      PARAMETER_TYPE     VARCHAR2(2) not null,
    
      LIMIT_NUM          VARCHAR2(4) not null,
    
      EFFECTIVE_FALG     VARCHAR2(2) default '1',
    
      UPDATE_TIME        DATE default sysdate
    
    )
    --单列主键 
    
    alter table ECS_STORE.TF_B_AIR_CONFIG add constraint TF_B_AIR_CONFIG_PK primary key (TYPE_ID); 
    
    --联合主键 
    
    alter table ECS_STORE.TF_B_AIR_CONFIG add constraint TF_B_AIR_CONFIG_PK primary key (TYPE_ID , PROVINCE_CODE);

     

     

     

    更多相关内容
  • oracle主键设置方法

    千次阅读 2021-05-02 03:29:52
    主键:1.主键约束: 一个表只能有一个主键约束。...3.主键与Unique:不同点在于一个表只能有一个主键约束,但是可以有多个Unique约束;主键所有字段都是not null,unique可以是null;相同点在于都能保证唯一...

    主键:

    1.主键约束: 一个表只能有一个主键约束。主键可以是单个字段,也可以是多个字段。无论是哪种情况,其所有字段都是NOT NULL。

    2.Unique约束:一个表可以有多个Unique约束,Unique的字段可以为NULL。

    3.主键与Unique:不同点在于一个表只能有一个主键约束,但是可以有多个Unique约束;主键所有字段都是not null,unique可以是

    null;相同点在于都能保证唯一性。

    4.主键、Unique与索引:主键约束与Unique约束默认会成为索引。当主键和Unique有多个字段时,有索引前缀性问题,即where语

    句中的条件必须有主键或者unique的第一个字段,否则不会使用索引。

    5. 外键与主键、Unique:外键必须为另外一张表(父表)的主键或者唯一索引。如果要添加记录,而父表中没有则报错。反之,如

    果要删除父表中的记录,而子表中有记录,也会报错。但是如果在创建外键约束时,如果使用on delete cascade,则删除父表中数据时

    ,不报错而直接把子表关联的数据删除。

    如果要删除父表,则需要加上cascade constraints,此时子表的foreign key被去除,表中记录保持不变。

    外键:

    外键是该表是另一个表之间联接的字段

    外键必须为另一个表中的主键

    外键的用途是确保数据的完整性。它通常包括以下几种:

    实体完整性,确保每个实体是唯一的(通过主键来实施).

    oracle主键的设置方法有2种:

    一种是设置自增长主键,另一种是生成唯一序列;

    1.自增长主键

    SQL> create table Prim_key_Increase_Test(

    2 id number(10) primary key,

    3 name varchar2(30)

    4 );

    表已创建。

    SQL> create sequence Prim_key_Incre_Sequence

    2 minvalue 1

    3 nomaxvalue

    4 start with 1

    5 increase by 1

    6 nocycle

    7 nocache;

    increase by 1

    *

    第 5 行出现错误:

    ORA-00933: SQL 命令未正确结束

    SQL> 5

    5* increase by 1

    SQL> c /increase/increment/

    5* increment by 1

    SQL> r

    1 create sequence Prim_key_Incre_Sequence

    2 minvalue 1

    3 nomaxvalue

    4 start with 1

    5 increment by 1

    6 nocycle

    7* nocache

    序列已创建。

    SQL> create trigger Prim_key_trigger before

    2 insert on Prim_key_Increase_Test for each row

    3 begin

    4 select Prim_key_Incre_Sequence.nextval into:New.id from dual;

    5 end;

    6 /

    触发器已创建

    SQL> commit;

    提交完成。

    SQL> insert into Prim_key_Increase_Test(id) values('181');

    已创建 1 行。

    SQL> select * from Prim_key_Increase_Test;

    ID NAME

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

    1

    SQL> insert into Prim_key_Increase_Test(id) values('181');

    已创建 1 行。

    SQL> insert into Prim_key_Increase_Test(id) values('181');

    已创建 1 行。

    SQL> select * from Prim_key_Increase_Test;

    ID NAME

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

    1

    2

    3

    展开全文
  • --主键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 ...

    --主键

    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,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),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),email varchar2(25),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)

    );

    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 seqtab

    start with 2 –从2开始

    increment by 3—每次加3

    nomaxvalue—没有最大值

    minvalue 1—最小值1

    nocycle—不循环

    nocache;--不缓存

    --修改序列 ,不能修改起始值

    alter sequence seqtab

    maxvalue 1000;

    6、创建同义词

    同义词,顾名思义就是说别名、或是另一个名字。

    create synonym scott_emp for scott.emp;

    create public synonym scott_dept for scott.dept;

    select * from scott_emp;

    select * from scott_dept;

    7、创建表空间

    create tablespace HooMS

    datafile 'E:\HooMS.dbf'

    size 5M

    autoextend on next 2M maxsize 10M;

    --创建用户、分配可以操作表空间

    create user hoo

    identified by hoo

    default tablespace HooMS

    temporary tablespace temp;

    --创建表空间

    create tablespace myMS

    datafile 'c:\myMS.dbf'

    size 1M

    autoextend on;

    --扩展表空间--修改表空间大小

    alter database

    datafile 'c:\myMS.dbf'

    resize 2M;

    --扩展表空间--添加数据文件

    alter tablespace myMS

    add datafile 'c:\myMS_2.dbf'

    size 1M;

    --设置dbf文件自动增长

    alter database

    datafile 'c:\myMS_2.dbf'

    autoextend on next 2M maxsize 4M;

    --表空间重命名

    alter tablespace myMS

    rename to hooMS;

    --分离表空间(脱机)

    alter tablespace hooMS

    offline temporary;

    --归档模式下脱机

    alter tablespace hooMS

    offline immediate;

    --使表空间联机

    alter tablespace hooMS online;

    --删除无数据的表空间

    drop tablespace hooMS;

    --删除带数据的表空间

    drop tablespace hooMS

    including contents;

    总结

    以上是编程之家为你收集整理的Oracle建表、索引、主键全部内容,希望文章能够帮你解决Oracle建表、索引、主键所遇到的程序开发问题。

    如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

    本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

    展开全文
  • 下面小编就为大家带来一篇oracle 数据按主键删除慢问题的解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做参考。一起跟随小编过来看看吧
  • Oracle主键和联合主键

    万次阅读 2019-04-03 08:11:59
    一条记录通常都是由多个字段所组成的。 例如,employees表的四行记录: 每一条记录都包含者若干个已经定义好的字段。同一个表的所有记录都有相同的字段定义。 对于关系表,有一个非常重要的约束,就是任意两条...

    在oracle数据库中,一张表中的每一行数据被称为一条记录。一条记录通常都是由多个字段所组成的。

    例如,employees表的四行记录:

    每一条记录都包含者若干个已经定义好的字段。同一个表的所有记录都有相同的字段定义。

    对于关系表,有一个非常重要的约束,就是任意两条记录不能重复。不能重复不是指两条记录不完全相同,而是指能够通过某个字段唯一区分出不同的记录,这个字段被称为主键

    假如我把LIST_NAME字段作为主键,那么通过名字就能确定唯一的一条记录。但是,这样设定,就没有办法存储相同名字的同学了,因为主键具有唯一性。

    由于主键的作用十分重要,如何选取主键会对业务开发产生重要影响。如果我们以员工的身份证号作为主键,似乎能唯一定位记录。但是,身份证号也是一种业务场景,如果身份证号升位了,或者需要变更,作为主键,不得不修改的时候,就会对业务产生严重影响。

    所以,选取主键的一个基本原则是:不使用任何业务相关的字段作为主键。

    因此,身份证号、手机号、邮箱地址这些看上去可以唯一的字段,均不可用作主键。

    作为主键最好是完全业务无关的字段,我们一般把这个字段命名为id

    常见的可作为id字段的类型有:自增整数类型:数据库会在插入数据时自动为每一条记录分配一个自增整数; 全局唯一标识符:GUID(全称:Globally Unique Identifier),是一种由算法生成的二进制长度为128位的数字标识符,类似于8f55d96b-8acc-4636-8cb8-76bf8abc2f57。GUID算法通过网卡MAC地址、时间戳和随机数保证任意计算机在任意时间生成的字符串都是不同的,大部分编程语言都内置了GUID算法,可以自己预算出主键。

    例如:C#

    name space GUIDTest {

              class Program{staticvoid Main(string[]args)

              {

                Console.Write Line(System.Guid.New Guid());Console.Read Key();}

              }

    }

    JAVA

     

    Public class GUID{

                public static void main(String[]args)

                {

                          UUID uuid=UUID.randomUUID();

                           System.out.println(""+uuid.toString()+"");

                 }

    }

    对于大部分应用来说,通常自增类型的主键就能满足需求。我在employees表中定义的主键也是自增类型。

    Oracle数据库实际上还允许通过多个字段唯一标识记录,即两个或更多的字段都设置为主键,这种主键被称为联合主键。联合主键的列不能超过32个。主键可以在创建表时定义或者通过ALTER TABLE语法定义。

    对于联合主键,允许有一列重复,只要不是所有主键列都重复即可:

    创建表时添加联合主键:示例:

    CREATE TABLE TEST(

         NUM_ID number(10),

         TYPE_ID number(10),

         MORE_ID number(10),

         CONSTRAINT PK_TEST PRIMARY KEY (NUM_ID, TYPE_ID,MORE_ID) -- 联合主键

    );

     

    如果我们把上述表的NUM_ID、TYPE_ID和MORE_ID这三列作为联合主键,那么上面的3条记录都是允许的,因为没有三列主键组合起来是相同的。

    所以,在没有必要的情况下,我们尽量不使用联合主键,因为它给关系表带来了复杂度的上升。

     

    展开全文
  • oracle如何设置主键

    2021-05-02 03:30:03
    oracle设置主键的方法:一、什么是主键主键(primary key)是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录。所谓的复合主键,就是指你表的主键含有一个以上的字段组成。 如果表里没有可以当唯一主键,...
  • 到此这篇关于Navicat Premium中Oracle创建主键自增的方法的文章就介绍到这了,更相关Navicat Premium主键自增内容请搜索软件开发网以前的文章或继续浏览下面的相关文章希望大家以后多多支持软件开发网!
  • 1、创建表的同时创建主键约束(1)无命名 create table student ( studentid int primary key not null, studentname varchar(8), age int);(2)有命名 create table students ( studentid int , studentname varchar(8...
  • oracle怎样设置主键?_数据库

    千次阅读 2021-05-07 04:58:07
    oracle设置主键的要领:1、在建立表时定义... oracle设置主键的要领:一、什么是主键主键(primary key)是表中的一个或多个字段,它的值用于唯一地标识表中的某一条纪录。所谓的复合主键,就是指你表的主键含有一个以...
  • oracle 设置主键SQL

    2021-09-12 09:28:53
    --一个主键 ALTER TABLE tableName ADD CONSTRAINT ...--多个主键(若表中已经存在主键,需要删除后才能设置组合主键) ALTER TABLE tableName ADD CONSTRAINT tableName_PK PRIMARY KEY ("主键1", "主键2"); ...
  • 小知识点:dual是一伪表,是一张只有一字段,一行记录的表。不需要从具体的表来...--1、创建序列create sequence seq_testincrement by 1-- 每次加几start with 1-- 从1开始计数nomaxvalue-- 不设置最大值no...
  • create table a( id varchar(20) not null primary key, name varchar(30) ); create table b( id varchar(20) not null primary key ); ...id varchar(20) not null primary key ...alter table b add constraint a_id ...
  • --主键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 ...
  • 表格1:tid(主键)//这里没有外键表2:sid(主键)//这里也没有外键表3:TidSidiid(primary key)foreign key(Tid,Sid) references table1(tid).table2(sid)In table3 i want to make a composite foreign key or ...
  • 修改字段名称alter table xgj rename column old_name to new_name;修改字段类型alter table tablename modify (column datatype ...栗子假设表xgj,有一字段为name,数据类型char(20)。create table xgj( id nu...
  • 主键和外键是两种类型的约束;主键是能唯一的标识表中的每一行,就是说这一列非空且值不重复,可以指定为主键;作用是用来强制约束表中的每一行数据的唯一性;外键是b表中的某一列引用的值来源于a表中的主键列。也是...
  • 1、主键约束作用:确保表中每一行数据是唯一的,要求非空且唯一2、一张表中只能设置个主键约束;主键约束可以由多个字段构成(联合主键或复合主键)。1、在创建表时设置主键约束CREATE TABLE table_name (column1 ...
  • Oracle数据库设置主键自增 一,sql语句创建 oracle数据库与mysql数据库的主键自增设置是不同的。 mysql主键自增很简单,在创建主键的时候在主键字段后增加auto_increment就可以实现自增。 但是oracle相比下了两步...
  • Oracle如何添加主键约束

    千次阅读 2021-05-08 00:32:47
    这种方式的效果alter的方式是一样的 以上内容就是来自于小编为大家分享的关于Oracle如何添加主键约束方面的知识,同时也希望小编所为大家分享的知识能够为大家起到帮助,那么如果大家还想要了解更关于其他方面的...
  • NOVALIDATE禁用主键的验证,在视图中这是默认设置,因此会自动包含;但是如果使用它会更清晰,因为在可爱的双重否定中,disable novalidate禁用禁用主键的功能。rely是可选的;它指定在创建视图时是否考虑主键。 rely...
  • Oracle创建主键的三种方式

    千次阅读 2021-03-05 10:11:58
    Oracle中创建主键,可以有几种方式。第一种,在建表的时候同时指定主键,SQL> create table t_pk_01 (id number, constraint pk_id...
  • Oracle生成唯一主键

    2020-12-14 10:40:36
    -- 初始值 为TEST_USER表创建一个主键ID字段自动增长的触发器 CREATE OR REPLACE TRIGGER TRIGGER_TEST_USER_ID BEFORE INSERT -- 添加数据前 ON TEST_USER -- 触发器作用的对象 FOR EACH ROW -- 指定创建的是行级...
  • oracle主键和复合主键(联合主键

    千次阅读 2019-09-02 17:57:03
    性能上的一些区别 1.主键和复合主键,查询性能相同(索引高度相同,恰当的...2.主键和复合组件,(update,insert)性能不同(因为复合主键会用更的块来创建索引,所以update,insert性能低) 复合主键的原理 ...
  • 一个表中不能有多个独立的主键,但是一个表中可以有联合主键(即多个字段组合)。 一、查看主键 SELECT * FROM USER_CONSTRAINTS WHERE CONSTRAINT_TYPE='P' AND TABLE_NAME='你要查看的表名' AND OWNER=USER; ...
  • Oracle 添加主键和索引

    千次阅读 2021-05-08 00:35:31
    数据的主键和索引一般情况下都是必须的,特别是表有大量数据的时候,索引和主键更是必不可少,这样可以提供数据的查询效率;一、创建表的同时创建主键约束(1)无命名create table student (studentid int primary key...
  • Oracle数据库主键自增

    2021-05-13 11:17:48
    在学习mysql时,我们很容易通过auto_increment就能实现主键自增的功能,但是在Oracle数据库中,是没有这关键字的,所以也不能通过这样来实现主键自增。下面我就为大家介绍两种实现主键自增的方法。 两种方法的...
  • Oracle创建主键自增表(sql语句实现)及触发器应用1、创建表复制代码 代码如下:createtableTest_Increase(useridnumber(10)NOTNULLprimarykey,/*主键,自动增加*/usernamevarchar2(20));2、创建自动增长序列复制代码 ...
  • Oracle数据库联合主键

    千次阅读 2018-09-13 01:25:03
    而且,一张表只能包含一个主键。 2、作用:  数据表的联合主键组合不允许重复,即同一行的数据,联合主键所属的列数据组合不能相同。  用来通过多个字段值去确定本条数据的唯一性 3、规...
  • 1:近期项目上把原本使用的mysql数据库换成了oracle...2:网上很说法是使用oracle的触发器。这种处理方式,需要给每张表添加一触发器,显然不合适。CREATE SEQUENCE loginlog_squenceINCREMENT BY 1NOMAXVALU...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 110,775
精华内容 44,310
关键字:

oracle设置多个主键