首页 > 数据库 >sqlserver索引和约束

sqlserver索引和约束

时间:2022-10-28 18:11:53浏览次数:70  
标签:sys name object sqlserver 约束 ---- 索引 id

 sqlserver索引和约束

 

==========================================================

----查找索引----
use database_name
EXEC Sp_helpindex table_name

use TeamaxShop
EXEC Sp_helpindex UserBankCard
----修改索引----
use database_name
exec sp_rename ‘table_name.old_name’‘new_name’
----删除索引----
drop Index table_name.index_name,.....n
----注:drop index语句不能删除通过PRINARY KEY和UNIQUE约束创建的索引,
----若要删除该约束相应的索引,请使用带有DROP CONSTRAINT子句的ALTER TABLE.

=========================================================

----在执行CREATE TABLE语句时可以创建索引,也可以单独用CREATE INDEX或ALTER TABLE来为表增加索引。
----1.ALTER TABLE
ALTER TABLE用来创建普通索引、UNIQUE索引或PRIMARY KEY索引。
ALTER TABLE table_name ADD INDEX index_name (column_list)
ALTER TABLE table_name ADD UNIQUE (column_list)
ALTER TABLE table_name ADD PRIMARY KEY (column_list)
----2.CREATE INDEX
CREATE INDEX可对表增加普通索引或UNIQUE索引。
CREATE INDEX index_name ON table_name (column_list)
CREATE UNIQUE INDEX index_name ON table_name (column_list)
----table_name、index_name和column_list具有与ALTER TABLE语句中相同的含义,索引名不可选。
----另外,不能用CREATE INDEX语句创建PRIMARY KEY索引。
----3.索引类型
----在创建索引时,可以规定索引能否包含重复值。如果不包含,则索引应该创建为PRIMARY KEY或UNIQUE索引。
----对于单列惟一性索引,这保证单列不包含重复的值。对于多列惟一性索引,保证多个值的组合不重复。
----PRIMARY KEY索引和UNIQUE索引非常类似。事实上,PRIMARY KEY索引仅是一个具有名称PRIMARY的UNIQUE索引。
----这表示一个表只能包含一个PRIMARY KEY,因为一个表中不可能具有两个同名的索引。
----下面的SQL语句对students表在sid上添加PRIMARY KEY索引。
ALTER TABLE students ADD PRIMARY KEY (sid)

----4.删除索引
----可利用ALTER TABLE或DROP INDEX语句来删除索引。
----类似于CREATE INDEX语句,DROP INDEX可以在ALTER TABLE内部作为一条语句处理,语法如下。
DROP INDEX index_name ON talbe_name
ALTER TABLE table_name DROP INDEX index_name
ALTER TABLE table_name DROP PRIMARY KEY
----其中,前两条语句是等价的,删除掉table_name中的索引index_name。
----第条语句只在删除PRIMARY KEY索引时使用,因为一个表只可能有一个PRIMARY KEY索引,因此不需要指定索引名。
----如果没有创建PRIMARY KEY索引,但表具有一个或多个UNIQUE索引,则MySQL将删除第一个UNIQUE索引。
----如果从表中删除了某列,则索引会受到影响。对于多列组合的索引,
----如果删除其中的某列,则该列也会从索引中删除。如果删除组成索引的所有列,则整个索引将被删除。

=========================================================

----新增约束----
字段一加字段二成为唯一约束
alter table 表名add constraint 约束名字unique(字段一,字段二)
alter table Students add constraint Stu_Edition unique(StuName,StuAge)

----查找所有约束----
SELECT * from INFORMATION_SCHEMA.TABLE_CONSTRAINTS

 

 

----干掉约束:
alter table 表名drop constraint  约束名

alter table Students drop constraint Stu_Edition

 

----sql server 约束查找
----主键约束

SELECT
  tab.name AS [表名],
  idx.name AS [主键名称],
  col.name AS [主键列名]
FROM
  sys.indexes idx
    JOIN sys.index_columns idxCol
      ON (idx.object_id = idxCol.object_id
          AND idx.index_id = idxCol.index_id
          AND idx.is_primary_key = 1)
    JOIN sys.tables tab
      ON (idx.object_id = tab.object_id)
    JOIN sys.columns col
      ON (idx.object_id = col.object_id
          AND idxCol.column_id = col.column_id);
 
----唯一约束
SELECT
  tab.name AS [表名],
  idx.name AS [约束名称],
  col.name AS [约束列名]
FROM
  sys.indexes idx
    JOIN sys.index_columns idxCol
      ON (idx.object_id = idxCol.object_id
          AND idx.index_id = idxCol.index_id
          AND idx.is_unique_constraint = 1)
    JOIN sys.tables tab
      ON (idx.object_id = tab.object_id)
    JOIN sys.columns col
      ON (idx.object_id = col.object_id
          AND idxCol.column_id = col.column_id);
 
----外键约束
select
  oSub.name  AS  [子表名称],
  fk.name AS  [外键名称],
  SubCol.name AS [子表列名],
  oMain.name  AS  [主表名称],
  MainCol.name AS [主表列名]
from
  sys.foreign_keys fk 
    JOIN sys.all_objects oSub 
        ON (fk.parent_object_id = oSub.object_id)
    JOIN sys.all_objects oMain
        ON (fk.referenced_object_id = oMain.object_id)
    JOIN sys.foreign_key_columns fkCols
        ON (fk.object_id = fkCols.constraint_object_id)
    JOIN sys.columns SubCol
        ON (oSub.object_id = SubCol.object_id 
            AND fkCols.parent_column_id = SubCol.column_id)
    JOIN sys.columns MainCol
        ON (oMain.object_id = MainCol.object_id 
            AND fkCols.referenced_column_id = MainCol.column_id)
 
----Check约束
SELECT
  tab.name AS [表名],
  chk.name AS [Check约束名],
  col.name AS [列名],
  chk.definition
FROM
  sys.check_constraints chk
    JOIN sys.tables tab
      ON (chk.parent_object_id = tab.object_id)
    JOIN sys.columns col
      ON (chk.parent_object_id = col.object_id
          AND chk.parent_column_id = col.column_id)
 

 

搜索

复制

标签:sys,name,object,sqlserver,约束,----,索引,id
From: https://www.cnblogs.com/jankie1122/p/11108817.html

相关文章

  • SQLServer里日期格式转换方法
    selectCONVERT(varchar,getdate(),120)2004-09-1211:06:08selectreplace(replace(replace(CONVERT(varchar,getdate(),120),'-',''),'',''),':','')20040912110......
  • day21 单列索引与组合索引 & 索引的优点和使用原则 & 视图与函数
    索引1.索引有几种四种,单列索引,组合索引,全文索引,空间索引2.索引的优点所有的MySQL数据库列类型都可以被索引,也就是可以给任意字段加索引提高数据查询速度索引的缺点1......
  • 类型参数的约束--Where的使用
    类型参数的约束(C#编程指南)本文内容使用约束的原因约束多个参数未绑定的类型参数类型参数作为约束notnull约束class约束default约束非托管约束委托约束枚......
  • like模糊匹配查询慢解决之道——MySQL全文索引
    需求需要模糊匹配查询一个单词select*fromt_phrasewhereLOCATE('昌',phrase)=0;select*fromt_chinese_phrasewhereinstr(phrase,'昌')>0;select*......
  • C#泛型约束,多线程
    定义泛型类时,可以对客户端代码能够在实例化类时用于类型参数的几种类型施加限制。如果客户端代码尝试使用约束所不允许的类型来实例化类,则会产生编译时错误。这些限制称......
  • MySQL索引以及InnoDB
    二叉树当数据是自增的时候,二叉树会跟链表没有区别平衡二叉树它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。这个方案很......
  • 浅谈差分约束
    差分约束也是个咕了很久的简单玩意。俺咕诶总述主要思想是转化为图论问题。对于一大堆\(x-y\leqw\)求可行解,移个项发现变成了\(x\leqy+w\)注意到这玩意......
  • 力扣(leetcode) 852. 山脉数组的峰顶索引(一行代码解决)(二分法)
    题目在这:​​https://leetcode-cn.com/problems/peak-index-in-a-mountain-array/​​题目分析:题目一堆数学符号看着难受。给大家解答一下,就是给了一堆数组,其中有一个数X......
  • 「MySQL高级篇」explain分析SQL,索引失效&&常见优化场景
    大家好,我是melo,一名大三后台练习生专栏回顾索引的原理&&设计原则欢迎关注本专栏:MySQL高级篇本篇速览在我们上一篇文章中,讲到了索引的原理&&设计原则,知道了索引如......
  • 060_索引及文档基本操作
    目录基本Rest命令关于索引的基本操作创建索引及文档创建索引,指定字段类型查询索引创建索引及文档查询索引及文档默认的信息扩展命令修改索引PUT覆盖POST修改删除索引关于文......