创建和修改主键 (SQL)】的更多相关文章

添加主键, ALTER TABLE [表名:OrderInfo] Add PRIMARY KEY ([列名:ProductID, UserID...])  多个列则是组合主键 删除主键, ALTER TABLE [表名:OrderInfo] DROP PRIMARY KEY 修改主键,先执行删除 ALTER TABLE [表名:OrderInfo] DROP PRIMARY KEY 语句删除现有主键, 然后执行 ALTER TABLE [表名:OrderInfo] Add PRIMARY KEY…
原文:SQL 修改主键约束 今天在学习数据库的时候遇到一个关于如何修改主键约束的问题,抄录下来以供备用. --修改主键约束用SQL --获取主键约束名字 declare @csname varchar(100) set @csname='' select @csname=name FROM sysobjects WHERE xtype='PK' AND parent_obj=object_id('表名') --删除约束 exec('alter table 表名 drop constraint '…
项目需求,有张表,原有三个联合主键,现在需要再加一个字段进去,而恰恰这个字段可以为空的.去数据库捞了一把,还好数据都不为空: SQL> select count(*) from t_wlf_record t where t.acceptinvitetime is null; COUNT(*) ---------- 那么我们需要先把这个字段修改为非空字段: alter table T_WLF_RECORD modify ACCEPTINVITETIME not null; 接着才能修改主键约束,约…
详见:sqlserver修改主键为自增 先删除id字段, 执行下面sql即可: alter table sms_rec add id int IDENTITY (1,1) PRIMARY KEY…
Oracle主键常用的分为UUID和自增长int两种,下面简单说下各自的优缺点: UUID的优点 1.生成方便,不管是通过sys_guid() 还是java的uuid都能很方便的创建UUID. 2.适合批量数据中的插入和更新操作. 3.跨服务器数据合并非常方便. INT自增长的优点 1.占用空间小 2.性能好,UUID跟int比起来不在一个级别上 3.容易记忆 他们各自的优点就是彼此的缺点 适用范围: 一般在分布式环境中使用UUID作为唯一主键,至于其他项目本人强烈建议使用int作为主键. PS…
1.创建自增主键 CREATE TABLE tb_python (ID INTEGER PRIMARY KEY AUTOINCREMENT,TITLE TEXT,URL TEXT); 2.清空表 SQLite3数据库中包含自增列时,会自动建立一个名为 sqlite_sequence 的表.这个表包含两个列:name和seq.name记录自增列所在的表,seq记录当前序号.所以要想使自增列的序号归零,则需要修改 sqlite_sequence表. DELETE FROM tb_python; DE…
根据mongodb官方文档介绍,如果在插入(insert)操作时,没有指定主键id,那么它会自动给插入行自动附上一个主键id.看起来不错,但是详细看看,就会发现这个id值有点复杂. 如下图: mongdb把这个id称为ObjectId. 所以,如果我们想创建跟mysql的那种自动递增的主键,应该怎么操作呢? 如下图,就是我们想实现的效果图: 创建自动递增主键 利用mogodb命令行 /*part 1: 创建计数器表*/ db.counters.insert({_id: "userid"…
--删除主键 alter table 表名 drop constraint 主键名 --添加主键 alter table 表名 add constraint 主键名 primary key(字段名1,字段名2……) --添加非聚集索引的主键 alter table 表名 add constraint 主键名 primary key NONCLUSTERED(字段名1,字段名2……) 新建表: create table [表名] ( ,) PRIMARY KEY , ) default \'默认值…
--删除主键 alter table 表名 drop constraint 主键名--添加主键alter table 表名 add constraint 主键名 primary key(字段名1,字段名2……)--添加非聚集索引的主键alter table 表名 add constraint 主键名 primary key NONCLUSTERED(字段名1,字段名2……) 新建表: create table [表名] ( [自动编号字段] int IDENTITY (1,1) PRIMARY…
--删除主键alter table 表名 drop constraint 主键名--添加主键alter table 表名 add constraint 主键名 primary key(字段名1,字段名2……)--添加非聚集索引的主键alter table 表名 add constraint 主键名 primary key NONCLUSTERED(字段名1,字段名2……) 新建表: create table [表名] ( [自动编号字段] int IDENTITY (1,1) PRIMARY K…
一.sql新增后返回主键 1,返回自增的主键: INSERT INTO 表名 (字段名1,字段名2,字段名3,…) VALUES (值1,值2,值3,…) SELECT @@IDENTITY 2,返回主键也可以返回别的字段看需要:inserted.id这里的id可以是其他字段就是一个字段名,比如还可以返回inserted.name INSERT INTO 表名 (字段名1,…) OUTPUT inserted.id VALUES (值1,…) 二.sql 使用 FOR XML PATH实现字符串…
-- create database db_std_mgr_sys; use db_std_mgr_sys; create table student( std_id bigint not null auto_increment, std_name ) not null default '', std_code ) not null default '' comment '学号,值唯一', std_sex ) not null default '', std_phone ) not null d…
pt-online-schema-change在线DDL工具可以做到DDL操作不锁表,不影响线上操作.对于线上超过100W的大表,一般情况下都用这个工具做DDL,最重要的考虑点还是“不影响线上操作” pt-online-schema-change内部操作流程 1)创新新的临时表,临时表为DDL后的目标表结构 2)在原表上创建增删改三个触发器,当原表有数据DML操作时,通过触发器同步数据到新的临时表 3)把原表的数据分批倒入到新的临时表 4)新表,老表做表名称互换操作 5)删除修改后表的触发器  …
使用PowerDesigner创建一张表, 拷贝建表语句发现ID不是自增的, 以下是修改语句: ALTER TABLE USER_JOB_EXE_REC DROP COLUMN id; , ); 注:这只适用于刚建完表的情况,如果此时主键已经使用过了,表中存在许多数据,不能使用该方法删除主键,会导致数据丢失.(可行的方法,建一张相同的表来存储数据,在修改,插入). 打开建表语句后可见 [ID] int NOT NULL IDENTITY(1,1) , 确实是自增的.. -- ----------…
mysql插入数据后返回自增ID的方法 mysql和oracle插入的时候有一个很大的区别是,oracle支持序列做id,mysql本身有一个列可以做自增长字段,mysql在插入一条数据后,如何能获得到这个自增id的值呢? 方法一:是使用last_insert_id mysql> SELECT LAST_INSERT_ID(); 产生的ID 每次连接后保存在服务器中.这意味着函数向一个给定客户端返回的值是该客户端产生对影响AUTO_INCREMENT列的最新语句第一个 AUTO_INCREMEN…
CREATE OR REPLACE TRIGGER "trigger_empl" before insert on extjsTest1.t_empl for each row begin if inserting then if :NEW."EID" is null then select SEQ_EMPL.nextval into :NEW."EID" from dual; end if; end if; end; 说明:trigger_em…
网上顺便查了下 ,要先删除 再创建,如果是添加复合主键,则复合主键值不能为空 alter table table_name drop primary key; alter table table_name ADD col_name tinyint(1) COMMENT '注释' DEFAULT 0; alter table table_name add primary key('col_name','col_name1'); commit; 其中table_name 为  需要操作的表,col_…
研发在早期的设计中,由于设计方面的问题,导致在设计表结构的时候,有个表有非空唯一索引而没有主键 在InnoDB存储引擎中,如果没有主键的情况下,有非空唯一索引的话,非空唯一索引即为主键. 那么这就会有个问题存在 应用在更新表的时候,用了 update aaaa ) ) 用了ID作为条件,修改,高事务并发下,可能会同时发生这种事务,由于id并没有任何索引,故此,表会被全锁,也就是全表.那么如何避免这个问题.我们线上的数据 暂时还不是很大,故此 drop index idx_aaa_unique o…
1.创建表 create table Test_Increase( userid number(10) NOT NULL primary key, /*主键,自动增加*/ username varchar2(20) ); 2.创建自动增长序列 CREATE SEQUENCE TestIncrease_Sequence INCREMENT BY 1 -- 每次加几个 START WITH 1 -- 从1开始计数 NOMAXVALUE -- 不设置最大值 ,设置最大值:maxvalue 9999 N…
1.创建表 /*第一步:创建表格*/ create table t_user( id int primary key, --主键,自增长 username varchar(), password varchar(), type varchar() ); 2.创建自增序列信息 /*第二步:建立自定义的sequence*/ CREATE SEQUENCE user_sequence increment by -- 每次加几个 start with -- 从1开始计数 nomaxvalue -- 不设…
//添加一个字段pid并且设置为主键(auto_increment)自增(auto_increment),不可为null,类型为int unsigned alter table table1 add pid int unsigned not null auto_increment primary key; //可以将一个主键修改为0 ; 假设id为主键,id可以保证字段数据唯一性,但是一张表只有一个主键.主键的值:修改成的0,可以存在,就是排个序.新添加的0,不允许存在,要根据行号改变.本身存在…
唠叨几句:几年前的知识忘却了,整理一下笔记,提供一下方便 1.创建数据库表 设置主键 create table users( userid number(10) primary key, /*主键,自动增加*/ username varchar2(20) ); 附  删除表:drop table users; 2.创建序列自增 CREATE SEQUENCE user_Sequence INCREMENT BY 1 -- 每次加几个 START WITH 1 -- 从1开始计数 NOMAXVAL…
CREATE TABLE text(id INT(20) COMMENT '主键',NAME VARCHAR(20) COMMENT '姓名',PASSWORD VARCHAR(20) COMMENT '密码',PRIMARY KEY(id) KEY indexname (NAME))ENGINE = INNODB AUTO_INCREMENT 1 DEFAULT CHARSET = utf8 COMMENT '字符串' //注释 PRIMARY KEY(id)//主键 auto_increme…
先删除所有主键 alter table tableName drop primary key; 然后添加主键 alter table tableName primary key(id);//如果是联合主键,则用逗号分隔,如 (id,code,card);…
1.查询主键 select * from sysibm.syskeycoluse where tbname='...' 2.查询索引 select * from sysibm.indexs where tbname='...'…
在phpmyadmin中执行建表语句 CREATE TABLE `user3` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(255) NOT NULL, `nack` varchar(255) DEFAULT NULL, PRIMARY KEY (`username`,`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; MySQL 返回:  #1075 - Incorrect table…
联合主键索引 联合索引 ALTER TABLE [dbo].[Tb_Shop] ADD CONSTRAINT [shopno] UNIQUE NONCLUSTERED ( [ShopGid] ASC, [ProdGid] ASC, [SkuGid] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW…
新建表 create table [表名]([自动编号字段] int IDENTITY (1,1) PRIMARY KEY ,[字段1] nVarChar(50) default \'默认值\' null ,[字段2] ntext null ,[字段3] datetime,[字段4] money null ,[字段5] int default 0,[字段6] Decimal (12,4) default 0,[字段7] image null ,) 删除表 Drop table [表名] 插入数据…
一.创建表 create table testTable ( Id numbere, name varchar2(100), age number, createTime date, primary key(Id) ) 二.创建序列 create sequence seq_test 三.创建触发器 create or replace trigger autoId before insert on testTable for each Row when (NEW.ID is null) begin…
[ServerName.[DataBaseName.[SchemeName.]]]ObjectName 服务器名,数据库名,模式名,对象名 其中模式是一个新出的坑爹的东西.…