精华内容
下载资源
问答
  • [SQL] 查询表的主键sql语句

    千次阅读 2011-11-16 16:46:32
    1:利用SQL自带的存储过程 EXEC sp_pkeys @table_name='表名' 2:利用系统表INFORMATION_SCHEMA.KEY_COLUMN_USAGE SELECT TABLE_NAME,COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME='...
    1:利用SQL自带的存储过程
    
    EXEC sp_pkeys @table_name='表名'
    
    2:利用系统表INFORMATION_SCHEMA.KEY_COLUMN_USAGE 
    
    SELECT TABLE_NAME,COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME='表名'
    

    展开全文
  • = string.Empty)高效、批量插入和删除sql语句是要那样写才执行最快、接口和抽象类的区别不仅是语言层面、本来权限办理是要如许设计的、某个类那样设计职责才更纯一更便于扩大…… <br /> 本来前两篇文章是...

    转载于:http://www.kukandy.com/web/mssql_2758.shtml

     

    技能程度总能在扯皮和无中生有中患上到提高。如果从来不"求疵",可能就不会知道if(str != "")不比if(str != string.Empty)高效、批量插入和删除的sql语句是要那样写才执行最快、接口和抽象类的区别不仅是语言层面、本来权限办理是要如许设计的、某个类那样设计职责才更纯一更便于扩大……

      本来前两篇文章是进修cnblogs编辑控件用的,瞅见跟贴的朋友询问批量插入和批量删除的问题,决定整理成文和大家分享。

      我们这里讨论的只是普通sql语句如何写更高效,不思量特殊的用文件中转等导入体式格局,终究在代码中挪用sql语句或存储过程才更方便。

      批量删除很简略,大家可能都用过:

      DELETE FROM TestTable WHEREID IN (1, 3, 54, 68) --sql2005下运行通过

      当用户在界面上不连续的选择多项举行删除时,该语句比轮回挪用多次删除或多条delete语句中间加分号一次挪用等方法都高效的多。

      本文重点讲评的是批量插入的写法:

      sql写法:

      INSERT INTO TestTable SELEDT1, 'abc'UNION SELEDT 2, 'bcd' UNION SELEDT3, 'cde' --TestTable表没有主键,ID不是主键

      Oracle写法:

      INSERT INTO TestTable SELEDT 1, 'abc' From daul UNION SELEDT 2, 'bcd' From daul --TestTable表没有主键,ID不是主键

      曾经试验过,这种写法插入1000条数据比轮回挪用1000次insert或1000条insert语句简略叠加一次挪用要高效患上多,大概快20多倍(调试状态不是太准)。其实很简略,就用了个union(union all 也能够),但其时患上出试验结果时还是很惊喜的。

      要患上出这个结果需要两个条件:

      1、表来不患上主键或者主键是数据库默认的(sql用自动递增列,oracle用序列)

      二、组合sql语句时只能直接用字符串毗连,不能用参量化sql语句的写法(就是在组合的sql中用@parm做占位符,再给Dommand对象添加Parameter)

      以上两条任意一条不餍足,效率的提高都不较着。

      另外,sql语句的最大长度有限制,组合几千条数据写成一条insert语句,可能会超过上限,所以如果有5000条数据,可以一次insert 1000条,分5次写完(纷歧定一次1000条最合适,有乐趣的朋友可以研究)。

      声明:看了几位朋友的评论后发明本身没有叙述清楚

      上面的两个条件并不是说如许做就好,而是说当应用途景餍足这两个条件时才合适用union的写法

      其时用这种写法时,是为相识决一个WinForm程序批量导入电话号码的问题,程序给本身人用,Excel文件也是靠患上住的,不需要思量sql攻击。还有一些场景是大量数据来历于通过Gprs网络毗连的专用终端,总之数据来历是靠患上住的,还有就是数据量很大但不可能巨大。

      PS:常常碰到一些小技巧或者值当注重的小细节,没有记下来,要等下次再碰到时才想起来。现鄙人决心要养成好的工作习惯,留此文为证。

      能够整理成文的要写在项目组开发规范中,其他的至少要记录下来。

    展开全文
  • Mysql增加主键或者修改主键sql语句

    万次阅读 2018-07-31 10:43:37
    Mysql增加主键或者更改表的列为主键sql语句 添加表字段 alter table table1 add transactor varchar(10) not Null; alter table table1 add id int unsigned not Null auto_increment primary key 修改某个表...

    Mysql增加主键或者更改表的列为主键的sql语句

    添加表字段

    alter table table1 add transactor varchar(10) not Null;

    alter table   table1 add id int unsigned not Null auto_increment primary key

    修改某个表的字段类型及指定为空或非空

    alter table 表名称 change 字段名称 字段名称 字段类型 [是否允许非空];

    alter table 表名称 modify 字段名称 字段类型 [是否允许非空];

    alter table 表名称 modify 字段名称 字段类型 [是否允许非空];

    修改某个表的字段名称及指定为空或非空

    alter table 表名称 change 字段原名称 字段新名称 字段类型 [是否允许非空

    删除某一字段

    ALTER TABLE mytable DROP 字段 名;

    添加唯一键

    ALTER TABLE `test2` ADD UNIQUE ( `userid`)

    修改主键

    ALTER TABLE `test2` DROP PRIMARY KEY ,ADD PRIMARY KEY ( `id` )

    增加索引

    ALTER TABLE `test2` ADD INDEX ( `id` )

    ALTER TABLE `category ` MODIFY COLUMN `id`  int(11) NOT NULL AUTO_INCREMENT FIRST ,ADD PRIMARY KEY (`id`);

     

    修改主键的sql语句块如下:

    mailbox 表新增字段

    DROP PROCEDURE IF EXISTS mailbox_column_update;
    CREATE PROCEDURE mailbox_column_update() BEGIN
        -- 新增删除标志列
        IF NOT EXISTS(SELECT 1 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='cbs' AND table_name='mailbox' AND COLUMN_NAME='delete_flag') THEN
                ALTER TABLE mailbox ADD   delete_flag  int  DEFAULT 2   NOT NULL;
        END IF;
        -- 新增删除日期列
        IF NOT EXISTS(SELECT 1 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='cbs' AND table_name='mailbox' AND COLUMN_NAME='delete_date') THEN
                ALTER TABLE mailbox ADD  delete_date  int  DEFAULT 0   NOT NULL;
        END IF;
        -- 如果存在字段account_mail,则修改字段长度
        IF EXISTS(SELECT 1 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='cbs' AND table_name='mailbox' AND COLUMN_NAME='email_account')
        THEN
            alter table mailbox modify column email_account varchar(320);
        END IF;
        -- 如果不存在主键列,则设置双主键
        IF ((SELECT count(*) FROM information_schema.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA ='cbs' AND table_name='mailbox' AND CONSTRAINT_NAME ='PRIMARY' AND (COLUMN_NAME ='email_account' OR COLUMN_NAME = 'company_id'))=0)THEN
                    ALTER TABLE mailbox ADD primary key (company_id,email_account);
        -- 如果只存在一个主键列
        ELSEIF ((SELECT count(*) FROM information_schema.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA ='cbs' AND table_name='mailbox' AND CONSTRAINT_NAME ='PRIMARY' AND (COLUMN_NAME ='email_account' OR COLUMN_NAME = 'company_id'))<2)THEN
                    ALTER TABLE mailbox  DROP PRIMARY KEY,ADD primary key (company_id,email_account);
        END IF;
            
    END;
    CALL mailbox_column_update();
    DROP PROCEDURE IF EXISTS mailbox_column_update;

     

    展开全文
  • 通过SQL语句设置或删除主键

    万次阅读 2017-07-29 11:54:28
    去除主键  Alter table 表名 Drop Constraint PrimaryKey  解释一下,上面的 PrimaryKey 是完整性约束条件的名字,Access数据库为主键约束默认取名PrimaryKey。当然如果主键约束被自己取了别的名字,这里也要...

    去除主键

                Alter table  表名  Drop Primary Key

     

    添加主键

                Alter table 表名 Add  Constraint  PrimaryKey  Primary  Key (主键字段名)


                解释一下,PrimaryKey是自己为主键完整性约束取的名字。 后面的 Primary Key (主键字段)当然就是主键约束短语了,除了Primary Key之外,还可以是Foreign key 或 Check 短语。

           具体的可以查查CONSTRAINT的用法,它用来添加完整性约束条件,并且指定该约束条件的名字(这样就方便以后删除这个约束条件)。Constrain也可以用在Create语句中,在建表时就用它来设置 PRIMARY KEY, FOREIGN KEY, CHECK 等约束。

    展开全文
  • 用T-sql语句设置两个主键sqlserver

    千次阅读 2020-03-17 08:54:06
    通过PRIMARY KEY(列名1,列名2)这条语句即可实现
  • 例如 当主键为一个的时候 delect from 表名 where id=@id; 当主键为 (主键一,主键二)时? 怎么删除 sql 语句怎么写?
  • SqlServer主键自增的sql语句 ** 由于Navicat不支持sqlserver的主键自增设置,自己安装失败一次SqlServer后注册表傻傻的删不干净,连安装三次SqlServer都失败了…想要建表只能在Navicat上使用sql语句… ** == alter ...
  • 给表增加主键sql语句

    万次阅读 2018-01-08 11:46:43
    sql操作中有很多方式给表增加主键,大体有三种方式。 1.创建表的时候直接在表字段后,跟primary key关键字。(一张表有且只能有一个主键主键具有唯一性。) 2.在创建表的时候在所有字段后面使用primary key...
  • 最近工作需要在程序中对Access...可以通过这样的SQL语句完成 去除主键 Alter table 表名 Drop Constraint PrimaryKey 解释一下,上面的 PrimaryKey 是完整性约束条件的名字,Access数据库为主键约束默认取名Pri
  • --alter table HistoryData drop constraint PK_HistoryData alter table HistoryData add constraint PK_HistoryData primary key (CollectionTime,...更改主键 delete from HistoryData where CollectionTim
  • 如果需要修改SQL主键约束,该SQL语句应该怎么写呢?下面就将教您SQL主键约束的修改语句写法,如果您遇到过类似的问题,不妨一看。 --修改SQL主键约束用SQL --获取SQL主键约束名字 declare @csname varchar(100) ...
  • SQL语句删除和添加外键、主键

    千次阅读 2015-04-19 09:57:13
    SQL语句删除和添加外键、主键  --删除外键 语法:alter table 表名 drop constraint 外键约束名  如:  alter table Stu_PkFk_Sc drop constraint FK_s  alter table Stu_PkFk_SC drop ...
  • 刚开始时碰到这个需求时,在网上搜索了一下,发现都说不行,得先删除主键列再重新增加或者先创建一个临时表再把数据导过来,其实在MYSQL中是可以直接修改的。 修改ID字段为自增主键: alter table `test` change `...
  • Oracle删除约束和主键语句

    万次阅读 2017-10-12 09:12:42
    1.删除约束语句: alter table 表名 drop constraint 约束名;...2.删除主键语句: alter table 表名 drop primary key; alter table mz_sf3 drop primary key; 如果出错:ORA-02273:此唯一主键
  • MySQL中特别实用的几种SQL语句送给大家

    万次阅读 多人点赞 2020-06-11 17:23:49
    在写SQL时,经常灵活运用一些SQL语句编写的技巧,可以大大简化程序逻辑。减少程序与数据库的交互次数,有利于数据库高可用性,同时也能显得你的SQL很牛B,让同事们眼前一亮。 目录 实用的SQL 1.插入或替换 2....
  • 问题背景 common表的主键是serial自增类型的,由于业务场景需要提前手动从别的表组装相关字段来维护一些数据,但是在插入的过程...sql语句如下: 建表语句 CREATE TABLE common ( id SERIAL NOT NULL, ...
  • sql语句创建主键

    千次阅读 2016-09-26 11:39:07
    对于有数据的表,在企业管理器里面创建索引时,容易超时,使用sql语句只要在,工具-选项设置超时值为0,就不会超时。 在已有表里创建主键:alter table t_inputdata add constraint PK_t_inputdata primary key...
  • SQLServer 2012 主键约束(定义主键删除主键

    万次阅读 多人点赞 2019-04-21 18:18:00
    在创建数据表的时候定义主键方式二:修改数据表定义主键删除主键使用SSMS工具删除主键方式一:在对象资源管理器中删除主键方式二:在表设计器中删除主键使用SQL方式删除主键     主关键字(primary key)是表中...
  • sql语句删除(自增长主键清除)

    千次阅读 2018-06-06 14:45:32
    一般我们使用的删除语句是:delete from tablename(表名) where (条件),表示删除该条件下的记录,不过对于一些设置的自增长主键,那么删除后,如果新添加的数据会在这个删除的id上递增,有什么我们需要删除后...
  • 联合主键SQL语句怎么写?

    万次阅读 2007-07-29 10:25:00
     建立主键有两种方法:一种是在数据库提供的GUI环境中建立,另一种是通过SQL语句执行建立,下面分别介绍。 1.在数据库提供的GUI环境中建立(以SQL7为例)。 输入表信息后按Ctrl键同时选中多行,然后点上面的主键...
  • Oracle删除主键语句

    千次阅读 2017-09-28 09:42:00
    删除无名主键语句: SELECT * FROM USER_CONS_COLUMNS WHERE TABLE_NAME = '表名'; ALTER TABLE 表名 DROP CONSTRAINT 主键名称; 上面语句需要手动,如何自动执行?看下面: CREATE OR REPLACE FUNCTION ...
  • SQL语句主键和外键

    千次阅读 2019-05-06 13:56:06
    主键 在创建表时,一般会定义一个主键来唯一标识一组信息,例如保存京东fuliuqingfeng的用户信息及其多个邮寄商品地址: CREATE TABLE user_info( id CHAR(36) PRIMARY KEY, user_name VARCHAR(30) not null, ...
  • 查找postgreSQL数据库中,查找无主键的表,可以通下面语句查找: select * from pg_tables where hasindexes is false and schemaname ='public'
  • 删除某一字段 ALTER TABLE mytable DROP 字段 名; 添加唯一键 ALTER TABLE `test2` ADD UNIQUE ( `userid`) 修改主键 ALTER TABLE `test2` DROP PRIMARY KEY ,ADD PRIMARY KEY ( `id` ) 增加索引 ALTER TABLE `test2...
  • sql语句添加主键

    千次阅读 2015-10-30 17:36:27
    ALTER TABLE [iShop].[dbo].[COMPANY] ADD CONSTRAINT PK_COMPANY PRIMARY KEY (uKey)
  • Mysql数据库Sql语句更改主键设置

    千次阅读 2019-07-17 16:12:39
    删除主键,若主键中有auto_increment配置,需要先将其去除。可以用modify重置主键类型设置。 alter table 表名 modify 字段名 字段类型(注意:字段类型中不要包含primary key、auto_increment); 2.删除主键 ...
  • 主键id自增的sql语句

    万次阅读 2018-01-08 15:05:48
    主键id自增(主键后面跟AUTO_INCREMENT) 查看表字段信息:

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 262,781
精华内容 105,112
关键字:

删除主键的sql语句