db2数据库创建一张表,并为该表加上主键递增的性能和中间表的创建的sql语句

创建角色表

CREATE TABLE NBCTXP.TBL_NBC_NONBANKROLE (
    ID BIGINT NOT NULL,
    ROLENAME VARCHAR(50),
    CREATETIME TIMESTAMP,
    UPDATETIME TIMESTAMP,
    CONSTRAINT P_ID PRIMARY KEY (ID)
);

CREATE INDEX SQL150130091455900 ON NBCTXP.TBL_NBC_NONBANKROLE (ID);

让主键递增1
Alter table NBCTXP.TBL_NBC_NONBANKROLE alter column ID set generated always as identity (start with 1,increment by 1)

创建角色表和用户表的中间表

CREATE TABLE NBCTXP.TBL_NBC_NONBANKUR (
    USERID BIGINT NOT NULL,
    ROLEID BIGINT NOT NULL,
    CONSTRAINT PK_UR PRIMARY KEY (USERID,ROLEID),
    CONSTRAINT FK_UID FOREIGN KEY (USERID) REFERENCES NBCTXP.TBL_NBC_NONBANKUSER(ID),
    CONSTRAINT FK_RID FOREIGN KEY (ROLEID) REFERENCES NBCTXP.TBL_NBC_NONBANKROLE(ID)
);

CREATE INDEX PK_UR ON NBCTXP.TBL_NBC_NONBANKUR (USERID,ROLEID);

时间: 2024-10-11 00:46:00

db2数据库创建一张表,并为该表加上主键递增的性能和中间表的创建的sql语句的相关文章

删除指定表的所有索引,包括主键索引,唯一索引和普通索引 ,适用于sql server 2005,

原文:删除指定表的所有索引,包括主键索引,唯一索引和普通索引 ,适用于sql server 2005, --删除指定表中所有索引 --用法:declare @tableName varchar(100) --set @tableName='表名' --表名 ,根据实际情况替换 --exec sp_dropindex @tableName if exists(select 1 from sysobjects where id = object_id('dropindex') and xtype =

向Mysql主键自增长表中添加数据并返回主键

表level,其主键为lid 1.select max(id) from table 查询语句:SELECT MAX(lid) FROM LEVEL 返回插入主键 2.select LAST_INSERT_ID(id) from table 查询语句:SELECT LAST_INSERT_ID(lid) FROM LEVEL; 返回主键列表,最后一个值为插入主键 3.select @@identity from table 查询语句:SELECT @@identity FROM level 返回

数据库中一个表中如何设置两个主键

其实做法很简单. 在规定中数据库的唯一性中, 一张表中最多一个主键. 如果想设置两个主键,那么只有在联合的表中或者是讲两个字段联合起来, 例如 表student(sno, sname, age) 表course(cno, sname, grade) 主键具有唯一性,一张表最多一个主键, 但是可以将2个字段联合起来设置为主键. 1.选中表- 2.设计表- 3.选中字段(多个按住ctr) 4.右键设置为主键. 5.哦了,再去刷新一下.如果之前输入的数据会报错(很正常),是因为主键已经变了.只需要把数

SQl查询数据库表名、表的列名、数据类型、主键

1.获取所有数据库名:     2.Select Name FROM Master..SysDatabases order by Name   3.  4.2.获取所有表名:   5.   (1)  6.Select Name FROM SysObjects Where XType='U' orDER BY Name   7.           XType='U':表示所有用户表;   8.           XType='S':表示所有系统表;  9.   (2)  10.SELECT n

一张表里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把mysql重启,再insert一条记录,这条记录的ID是18还是15 ?

转:https://blog.csdn.net/xzp_12345/article/details/79458586 一般情况下,我们创建的表的类型是InnoDB,如果新增一条记录(不重启mysql的情况下),这条记录的id是18:但是如果重启(文中提到的)MySQL的话,这条记录的ID是15.因为InnoDB表只把自增主键的最大ID记录到内存中,所以重启数据库或者对表OPTIMIZE操作,都会使最大ID丢失. 但是,如果我们使用表的类型是MylSAM,那么这条记录的ID就是18.因为MylSA

Sqlserver获取所有数据库名,表信息,字段信息,主键信息,以及表结构等。[转]

--获取所有数据库名: SELECT name FROM master..sysdatabases WHERE name NOT IN ( 'master', 'model', 'msdb', 'tempdb', 'northwind','pubs' ) --获取某数据库的所有表: SELECT name FROM YiDianTongV2..sysobjects Where xtype='U' ORDER BY name --获取所有表名 --XType='U':表示所有用户表; --XTyp

(19)ASP.NET Core EF创建模型(包含属性和排除属性、主键、生成的值)

1.什么是Fluent API? EF中内嵌的约定将POCO类映射到表.但是,有时您无法或不想遵守这些约定,需要将实体映射到约定指示外的其他对象,所以Fluent API和注解都是一种方法,这两种方法是用来配置EF在映射属性时绕开约定.Code first fluent API最常访问通过重写OnModelCreating方法在派生DbContext. 2.包含属性和排除属性 按照约定,数据模型中都包含一个getter和一个setter公共属性. 2.1包含属性 包含属性官网解释有点难以理解,我

Yii2 联表查询数据丢失,即出现主键覆盖情况的解决方法

前段时间做项目,遇到一个问题,用yii2的AR连表查询数据的时候,理应该查出来更多的数据,但是实际得到的只有部分数据: 例如,有这么一个查询: $query = OperaHotelRoom::find() ->select(['a.ID','a.ROOM_NAME','a.PARENT_ROOM_TYPE']) ->joinWith('runHotel b') ->from('opera_hotel_room a') ->where(['a.HOTEL_ID' => 197

大表百万条以上记录非主键索引删除大量数据的操作方法

众所周知,上百万表数据类似上述写法,哪怕where条件命中索引,执行时间也不会低于10分钟:考虑对数据的操作会引起两表的排他锁,造成业务被暂停!从服务器资源的影响:IOPS升高,IO争用造成CPU等待(高CPU):删除表存在的大量空间碎片,造成的空间浪费及性能低下 这种需求可以采用中间表rename方法,将要保留的数据写入中间表,写入完成后将原表删除,并将中间表改名为原始表: 具体操作步骤如下: 1.SHOW CREATE TABLE ooo_scrm_customer;   2.创建同ooo_