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语句块如下:

22 declare @defname varchar(100)
declare @cmd varchar(500)
declare @tablename varchar(100)
declare @keyname varchar(100)
Set @tablename='Temp1'
Set @keyname='id' --需要設置的key,分隔
select @defname= name
   FROM sysobjects so
   JOIN sysconstraints sc
   ON so.id = sc.constid
   WHERE object_name(so.parent_obj) = @tablename
   and xtype='PK'
if @defname is not null
begin
select @cmd='alter table '+ @tablename+ ' drop constraint '+ @defname
--print @cmd
   exec (@cmd)
 end
else
 set @defname='PK_'+@keyname
select @cmd='alter table '+ @tablename+ ' ADD constraint '+ @defname +' PRIMARY KEY CLUSTERED('+@keyname+')'
   exec (@cmd)

  如何取主键字段名称及字段类型--得到主键字段名

1:
SELECT TABLE_NAME,COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE

WHERE TABLE_NAME<>'dtproperties'

2:
EXEC sp_pkeys @table_name='表名'

3:
select o.name as 表名,c.name as 字段名,k.colid as 字段序号,k.keyno as 索引顺序,t.name as 类型

from sysindexes i

join sysindexkeys k on i.id = k.id and i.indid = k.indid

join sysobjects o on i.id = o.id

join syscolumns c on i.id=c.id and k.colid = c.colid

join systypes t on c.xusertype=t.xusertype

where o.xtype = 'U' and o.name='要查询的表名'

and exists(select 1 from sysobjects where xtype = 'PK' and parent_obj=i.id and name = i.name)

order by o.name,k.colid

(0)

相关推荐

  • 浅谈MySQL中优化sql语句查询常用的30种方法

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 3.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id from

  • MySQL 最基本的SQL语法/语句

    DDL-数据定义语言(Create,Alter,Drop,DECLARE) DML-数据操纵语言(Select,Delete,Update,Insert) DCL-数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句: 1.说明:创建数据库 Create DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- 创建 备份数据的 device USE mas

  • 超详细的SQL语句语法汇总

    一.数据控制语句 (DML) 部分 1.INSERT  (往数据表里插入记录的语句)INSERT INTO 表名(字段名1, 字段名2, --) VALUES ( 值1, 值2, --); INSERT INTO 表名(字段名1, 字段名2, --)  SELECT 字段名1, 字段名2, -- FROM 另外的表名; 字符串类型的字段值必须用单引号括起来, 例如: 'GOOD DAY'如果字段值里包含单引号' 需要进行字符串转换, 我们把它替换成两个单引号''. 字符串类型的字段值超过定义的长

  • mysql部分替换sql语句分享

    将cdb_pms表subject字段中的Welcom to替换成 欢迎光临 复制代码 代码如下: UPDATE `cdb_pms` SET `subject` = REPLACE(`subject`, 'Welcome to', '欢迎光临') WHERE INSTR(`subject`,'Welcome to') > 0 替换cdb_posts表的message字段,将"viewthread.php?tid=3989"替换成"viewthread.php?tid=16

  • mysql的sql语句特殊处理语句总结(必看)

    1.更新整张表,如果某一行数据的某一列的值为空,那么让他和另一列字段的值相等 UPDATE ot_tgbz set update_day=if(update_day is null,date,update_day); 2.更新整张表,如果某个字段大于2,那么把他们都更新成2: UPDATE ot_user set xingyun_num=if(xingyun_num > 2,2,xingyun_num); 3.把shop_goods这个表里的thumb字段里的内容中含有http://www.jb

  • MySQL SQL语句优化的10条建议

    1.将经常要用到的字段(比如经常要用这些字段来排序,或者用来做搜索),则最好将这些字段设为索引.2.字段的种类尽可能用int 或者tinyint类型.另外字段尽可能用NOT NULL.3.当然无可避免某些字段会用到text ,varchar等字符类型,最好将text字段的单独出另外一个表出来(用主键关联好)4.字段的类型,以及长度,是一个很考究开发者优化功力的一个方面.如果表数据有一定的量了,不妨用PROCEDURE ANALYSE()命令来取得字段的优化建议!(在phpmyadmin里可以在查

  • MySql常用操作SQL语句汇总

    MySQL的常见操作在这里先做一下总结,已经整合到代码里面,经过检验无误. 复制代码 代码如下: /*创建一个数据库*/ create database xuning_test; /*说明当时使用数据库对象*/ use xuning_test; /*向数据库中添加表并且定义表的结构*/ create table person(  id int not null,  name varchar(16) not null,  sex varchar(16) not null,  age int not

  • MySQL的一些常用的SQL语句整理

    用SHOW显示已有的数据库 句法: SHOW DATABASES [LIKE wild] 如果使用LIKE wild部分,wild字符串可以是一个使用SQL的"%"和"_"通配符的字符串. 功能:SHOW DATABASES列出在MySQL服务器主机上的数据库. 你可以尝试下面举例,观察输出结果,例如: mysql>show databases; +----------+ | Database | +----------+ | first | | mysql

  • 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 字段名称 字段类型 [是否允许非空]; a

  • 查找MySQL中查询慢的SQL语句方法

    如何在mysql查找效率慢的SQL语句呢?这可能是困然很多人的一个问题,MySQL通过慢查询日志定位那些执行效率较低的SQL 语句,用--log-slow-queries[=file_name]选项启动时,mysqld 会写一个包含所有执行时间超过long_query_time 秒的SQL语句的日志文件,通过查看这个日志文件定位效率较低的SQL .下面介绍MySQL中如何查询慢的SQL语句 一.MySQL数据库有几个配置选项可以帮助我们及时捕获低效SQL语句 1,slow_query_log 这

  • 浅谈Mysql主键索引与非主键索引区别

    目录 什么是索引 主键索引和普通索引的区别 索引具体采用的哪种数据结构 InnoDB使用的B+ Tree的索引模型,那么为什么采用B+ 树?这和Hash索引比较起来有什么优缺点? B+ Tree的叶子节点都可以存哪些东西? 聚簇索引和非聚簇索引,在查询数据的时候有区别? Index Condition Pushdown(索引下推) 查询优化器 关于索引的题 什么是索引 MySql官方索引的定义:索引(Index)是帮助MySql高效获取数据的数据结构,索引的目的在于提高查询效率,类比字典:实际上

  • mysql主键id的生成方式(自增、唯一不规则)

    目录 1.利用uuid函数生成唯一且不规则的主键id 2.id实现自动增长 1.利用uuid函数生成唯一且不规则的主键id sql: CREATE TABLE `test` ( `id` varchar(100) COLLATE utf8_estonian_ci NOT NULL COMMENT '唯一不重复', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `update_time` timestamp NOT NULL

  • MySQL数据表使用的SQL语句整理

    目录 EXPLAIN 语句 SHOW INDEX 语句 ANALYZE TABLE 语句 EXPLAIN 语句 分析SQL索引使用,关键词EXPLAIN: SQL举例: CREATE TABLE `my_user` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL DEFAULT '' COMMENT '名字', `sex` enum('0','1') NOT NULL COMMENT '性别

  • mysql主键,外键,非空,唯一,默认约束及创建表的方法

    目录 一.操作前提 二.mysql创建/新建表 1.首先我们需要创建一个数据库: 2.然后进入这个数据库: 3.创建表: 4.查看表: 三.使用主键约束 1.单字段主键 2.多字段联合主键 四.使用外键约束 1.mysql中外键是什么? 2.什么是主表?什么是从表? 3.如何在​​mysql​​中创建外键呢? 五.使用非空约束 六.使用唯一性约束 七.使用默认约束 八.设置表的属性值自动增加 前言: 在数据库中,数据表是数据库中最重要.最基本的操作对象,是数据存储的基本单位.数据表被定义为列的集

  • MySQL主键自增会遇到的坑及解决方法

    目录 1. 为什么不用 UUID 2. 主键自增的问题 2.1 数据插入的三种形式 2.2 innodb_autoinc_lock_mode 2.3 实践 3. 小结 在上篇文章中,松哥和小伙伴们分享了 MySQL 的聚簇索引,也顺便和小伙伴们分析了为什么在 MySQL 中主键不应该使用随机字符串.但是主键不用随机字符串用什么?主键自增?主键自增就是最佳方案吗?有没有其他坑?今天我们就来讨论下这个话题. 1. 为什么不用 UUID 经过上篇文章的介绍,我们知道在 MySQL 中,主键索引就是聚簇

  • Mysql主键UUID和自增主键的区别及优劣分析

    引言 之前有段时间用postgresql 数据库,在上云之后,从自增主键变为uuid,感觉uuid全球唯一,很方便. 最近用mysql,发现mysql主键都是选择自增主键,仔细比较一下,为什么mysql选择自增主键,有什么不同. 在mysql5.0之前,如果是多个master复制的环境,无法用自增主键,因为可能重复.在5.0以及之后的版本通过配置自增偏移量解决了整个问题. 什么情况下我们希望用uuid 1. 避免重复,便于scale,这就是我们做cloud service的时候选择uuid的主要

  • Mybaits处理mysql主键自动增长出现的不连续问题解决

    问题产生 设置了mysql主键自动增长,但因为删除字段的操作导致主键不连续 解决方法 step1:在mapper.xml文件中添加update标签设置自动增长的增量为1 alter table student AUTO_INCREMENT=1; <!--StudentMapper.xml文件--> <mapper namespace="StudentMapper"> ... ... <update id="alter"> alte

  • MyBatis处理mysql主键自动增长出现的不连续问题解决

    问题产生 设置了mysql主键自动增长,但因为删除字段的操作导致主键不连续 解决方法 step1:在mapper.xml文件中添加update标签设置自动增长的增量为1 alter table student AUTO_INCREMENT=1; <!--StudentMapper.xml文件--> <mapper namespace="StudentMapper"> ... ... <update id="alter"> alte

随机推荐