您的位置:首页 > 产品设计 > UI/UE

查询所有的表中,有没有列名 为 某一个字符串的 SQL文 或者 unique行 有哪些表 哪些行

2016-08-25 23:33 357 查看
Sql Server

==========查询列名有firm或者Firm字符串的所有表。

SELECT t.name  AS table_name,

SCHEMA_NAME(t.schema_id) AS schema_name,

c.name AS column_name , types.name, c.max_length

FROM sys.tables AS t

INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID 

inner join sys.types types on types.system_type_id = c.system_type_id

WHERE c.name LIKE '%firm%' or c.name like '%Firm%'

ORDER BY schema_name, table_name

===================unique行=======

SELECT tab.name, idx.name, col.name 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)
AND idx.name='UQ__CPSRepor__1C0FB63C64CE895C'
JOIN sys.tables tab
ON
(idx.object_id = tab.object_id)
AND tab.name='CPSReportConfig'
JOIN sys.columns col
ON (idx.object_id = col.object_id
AND idxCol.column_id = col.column_id)
AND col.name='reportName'

======================drop unique========

这个是index的名字,不是列的名字

ALTER TABLE CPSReportConfig

DROP CONSTRAINT UQ__CPSRepor__1C0FB63C64CE895C

--------------------------------------------------------------------------------------

“唯一性约束”和“唯一性索引”是不同的。

一、 建立唯一性约束的语法,使用create table或者alter table

1. 在字段级约束定义

-- 命名

create table tmp_table

(

 a int constraint pk_tmp_table_a primary key,

 b varchar(10) constraint uq_tmp_table_b unique 

)

-- 不命名

create table tmp_table

(

 a int primary key,

 b varchar(10) unique

)

2. 在表约束定义

-- 命名

create table tmp_table

(

 a int,

 b varchar(10),

 constraint pk_tmp_table_a primary key(a),

 constraint uq_tmp_table_b unique(b ASC)

)

-- 不命名

create table tmp_table

(

 a int,

 b varchar(10),

 primary key(a),

 unique(b ASC)

)

二、 建立唯一性索引的语法,使用create index

-- 必须命名

CREATE UNIQUE NONCLUSTERED INDEX xak_tmp_table_b ON tmp_table(b DESC)

--不指定[CLUSTERED | NONCLUSTERED],缺省为NONCLUSTERED(非聚集)

三、当在表中创建主键约束或者唯一性键约束时,SQL Server自动创建一个唯一性索引

这是以上脚本建立的约束:

constraint_typeconstraint_nameconstraint_keys
PRIMARY KEY (clustered)pk_tmp_table_aa
UNIQUE (non-clustered)uq_tmp_table_bb
这是索引:

index_nameindex_descriptionindex_keys
pk_tmp_table_aclustered, unique, primary key located on PRIMARYa
uq_tmp_table_bnonclustered, unique, unique key located on PRIMARYb
xak_tmp_table_bnonclustered, unique located on PRIMARYb(-)
可以看出,为主键和唯一性约束自动建立了同名唯一性索引。
现在为表建立了排序顺序相反的两个索引uq_tmp_table_b和xak_tmp_table_b,不知道数据库会怎么工作?

四、题外话

表级约束中可以指定列的排序顺序(col_name ASC | DESC),但不能指定列的NULL约束;

字段级约束中可以指定列的NULL约束,但不能指定列的排序顺序;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐