研究旧项目, 常用 sql 语句
1. select all table
select TABLE_NAME
from CodingSystem.INFORMATION_SCHEMA.TABLES
where TABLE_TYPE = 'BASE TABLE'
2. select all column name from table
select COLUMN_NAME, TABLE_NAME, DATA_TYPE
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME = 'APInvoiceDTL';
3. get column type
declare @table nvarchar(max) = 'yourTableName';
declare @column nvarchar(max) = 'yourColumnName';
select DATA_TYPE
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME = @table AND COLUMN_NAME = @column;
4. select table that have some column
select t.TABLE_NAME
from INFORMATION_SCHEMA.TABLES t inner join INFORMATION_SCHEMA.COLUMNS c on t.TABLE_NAME = c.TABLE_NAME
where t.TABLE_TYPE = 'BASE table' and c.COLUMN_NAME = 'column';
5. 寻找一个 值 在任何 table column 出现过
go use CodingSystem;
declare @value nvarchar(max) = 'Discount 5 %';
declare @dataType nvarchar(max) = 'nvarchar';
CREATE TABLE #Result
(
tableName nvarchar(max),
columnName nvarchar(max)
)
select * into #AllTable from INFORMATION_SCHEMA.TABLES where TABLE_TYPE = 'BASE TABLE' order by TABLE_NAME;
declare @TABLE_NAME nvarchar(max);
declare @COLUMN_NAME nvarchar(max);
declare @query nvarchar(max);
declare @count int;
while((select count(*) from #AllTable) > 0)
begin
select top 1 @TABLE_NAME = TABLE_NAME from #AllTable;
select * into #AllColumn from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = @TABLE_NAME and DATA_TYPE = @dataType;
set @COLUMN_NAME = '';
while((select count(*) from #AllColumn) > 0)
begin
select top 1 @COLUMN_NAME = COLUMN_NAME from #AllColumn; set @query = N'select @count = count(*) from ' + @TABLE_NAME + ' where ' + @COLUMN_NAME + ' = @value';
exec sp_executesql
@query,
N'@count int out, @value nvarchar(max)',
@value = @value,
@count = @count output; if(@count > 0)
begin
insert into #Result (tableName, columnName) values (@TABLE_NAME, @COLUMN_NAME);
end
delete #AllColumn where COLUMN_NAME = @COLUMN_NAME;
end
delete #AllTable where TABLE_NAME = @TABLE_NAME;
drop table #AllColumn;
end
select * from #Result;
drop table #Result;
drop table #AllTable; go
6. 查看一个 table 的 column 有没有用到, (全部 row null 就是没有用啦)
go
use CodingSystem;
declare @tableName nvarchar(max) = 'Item';
-- 如果要 where 的话, 可以创建一个表, 用完后再删除
--select * into Stooges_Item from Item where stooges_status = 'keep';
--drop table Stooges_Item; select COLUMN_NAME, DATA_TYPE
into #ColumnTable
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME = @tableName; CREATE TABLE #Result
(
columnName nvarchar(max),
fill int,
noFill nvarchar(max)
) declare @COLUMN_NAME nvarchar(max);
declare @DATA_TYPE nvarchar(max);
declare @count int;
declare @query nvarchar(max);
declare @maxCount int;
set @query = N'select @maxCount = count(*) from ' + @tableName;
exec sp_executesql
@query,
N'@maxCount int out',
@maxCount = @maxCount output; while (select count(*) From #ColumnTable) > 0
begin
select top 1 @COLUMN_NAME = COLUMN_NAME, @DATA_TYPE = DATA_TYPE from #ColumnTable;
if(@DATA_TYPE = 'nvarchar')
begin
set @query = N'select @count = count(*) from ' + @tableName + ' where '+ @COLUMN_NAME +' is not null and '+ @COLUMN_NAME +' != @value';
exec sp_executesql
@query,
N'@count int out, @value nvarchar(max)',
@value = '',
@count = @count output;
end
else
begin
set @query = N'select @count = count(*) from ' + @tableName + ' where '+ @COLUMN_NAME +' is not null';
exec sp_executesql
@query,
N'@count int out',
@count = @count output;
end
print(@COLUMN_NAME);
insert into #Result (columnName, fill, noFill) values
(@COLUMN_NAME, @count, case when @maxCount - @count = 0 then '' else cast((@count - @maxCount) * -1 as nvarchar(max)) end);
delete #ColumnTable where COLUMN_NAME = @COLUMN_NAME;
end select * from #Result;
drop table #ColumnTable;
drop table #Result; go
研究旧项目, 常用 sql 语句的更多相关文章
- oracle 常用sql语句
oracle 常用sql语句 1.查看表空间的名称及大小 select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_sizefrom d ...
- 经典MSSQL语句大全和常用SQL语句命令的作用
下列语句部分是Mssql语句,不可以在access中使用. SQL分类: DDL类型包括数据库.表的创建,修改,删除,声明—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML类 ...
- mysql 常用 sql 语句 - 快速查询
Mysql 常用 sql 语句 - 快速查询 1.mysql 基础 1.1 mysql 交互 1.1.1 mysql 连接 mysql.exe -hPup ...
- 常用SQL语句大全
一些常用SQL语句大全 一.基础1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql se ...
- Mysql常用sql语句(二)- 操作数据表
21篇测试必备的Mysql常用sql语句,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1683347.html ...
- Mysql 常用 SQL 语句集锦
Mysql 常用 SQL 语句集锦 基础篇 //查询时间,友好提示 $sql = "select date_format(create_time, '%Y-%m-%d') as day fr ...
- Mysql 常用 SQL 语句集锦 转载(https://gold.xitu.io/post/584e7b298d6d81005456eb53)
Mysql 常用 SQL 语句集锦 基础篇 //查询时间,友好提示 $sql = "select date_format(create_time, '%Y-%m-%d') as day fr ...
- 50个常用SQL语句
50个常用SQL语句 Student(S#,Sname,Sage,Ssex) 学生表 S#学号,主键 Course(C#,Cname,T#) 课程表 C#课程号,主键 SC(S#, ...
- oracle sqlplus及常用sql语句
常用sql语句 有需求才有动力 http://blog.csdn.net/yitian20000/article/details/6256716 常用sql语句 创建表空间:create tables ...
随机推荐
- docker 部署 .net core
1.centos安装好sdk2.1,安装好docker,这些基本的操作就不赘述. 2.准备好core项目,版本2.1 3.新建dockerfile文件放到项目发布文件夹里,里面内容如下: FROM m ...
- zabbix监控项整理Items-key
agent.hostname:hostname,字符串 agent.ping:可用性检查,可用返回1:不可用返回空 agent.version:agent程序的版本,返回字符串 kernel.maxf ...
- pwn学习日记Day22 《程序员的自我修养》读书笔记
知识杂项 软连接 命令: ln -s 原文件 目标文件 特征: 1.相当于windows的快捷方式 2.只是一个符号连接,所以软连接文件大小都很小 3.当运行软连接的时候,会根据连接指向找到真正的文件 ...
- Python3 编程之字符串处理
Python3 编程之字符串处理 在编程中最常见的任务就是字符串的处理,So,学好字符串的使用非常重要 一.变量的定义规范 Python中声明变量时,要符合以下规则为准: 只能使用数字.字母.下划线组 ...
- Xgboost 两种使用方式
原生形式使用Xgboost(import xgboost as xgb) from sklearn import datasets from sklearn.model_selection impor ...
- 在Vue文件中引用模块的相对路径“@“符号表示什么意思?
@ 的作用是在你引入模块时,可以使用 @ 代替 /src 目录,避免书写麻烦又易错的相对路径. import model from "@/common/model"; // 默认路 ...
- go协程理解
一.Golang 线程和协程的区别 备注:需要区分进程.线程(内核级线程).协程(用户级线程)三个概念. 进程.线程 和 协程 之间概念的区别 对于 进程.线程,都是有内核进行调度,有 CPU 时间片 ...
- Dart 语言简述
Dart是一种“结构化的web编程”语言,Dart编程语言在所有现代浏览器和环境中提供高性能.Dart是谷歌开发的计算机编程语言,后来被ECMA认定为标准. Dart重要的概念: 1.所有的东西都是对 ...
- 【ARM-Linux开发】Linux链接 -ln
ln命令是Linux中的一个非常重要的命令,它为一个文件在另一位置创建同步链接,有两种:符号链接和硬链接. [ln命令详解]ln [options] source dist 常用参数: -f : 链接 ...
- 三角箭头 css实现
效果图: 1.html 代码 <div>较昨日 <span class="dot-up"></span> 20%</div> < ...