研究旧项目, 常用 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 ...
随机推荐
- 文本处理三剑客之awk
简介 awk是一种处理文本文件的语言,是一个强大的文本编辑工具.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分在进行各种分析处理. gawk 用法:gawk [optio ...
- SpringBoot RestTemplate接收文件,并将文件发送到另外一个程序进行存储
最近有个需求,接收用户上报的证书,并且保存起来,证书大小不到1M,但该证书的保存必须在另外一个程序进行,所以想到使用springboot接收上传文件后,再通过RestTemplate将文件发送给另外一 ...
- PHP魔术方法和魔法变量详解
一.魔术常量 __LINE__ 文件中的当前行号.__FILE__ 文件的完整路径和文件名.如果用在被包含文件中,则返回被包含的文件名. 自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对 ...
- [oracle]TX行锁发生的常见场景(转贴)
TX行锁发生的常见场景: 1.当前会话要更新或删除的记录,已经被其他会话更新或删除. 2.对于表上有唯一索引的情况,多个会话插入或更新为相同的键值. 3.对于表上有位图索引的情况,多个会话即使更新不同 ...
- linux的最简socket编程
一.背景 好久没有进行linux下的socket编程了,复习一下 二.服务端完整代码 #include <stdio.h> #include <stdlib.h> #inclu ...
- c++ string操作
#include <iostream>#include <string> using namespace std; int main(){ string str1(" ...
- sqlmap注入工具----一次简单的注入(实战)
最近在学习网络安全,挖洞避免不了要使用许多工具,使用著名注入工具sqlmap的时候,对于英语不怎么好的我就比较难受了,本来就不会使用,加之又是英语的,简直难受.上网找了好多详细教程,但是命令实在是太多 ...
- 消息队列之ActiveMQ学习笔记(一、下载及安装)
1.访问官网地址 http://activemq.apache.org/ ,进入Download 2.选择最新版本 3.或者选择历史版本 4.下载解压后 5.然后再 bin目录下选择对应版本,双击 ...
- python 操作mysql数据库(mac)包括如何处理安装MySQL-python
一.数据库的安装,https://www.jianshu.com/p/fd3aae701db9 https://jingyan.baidu.com/article/fa4125ac0e3c2 ...
- useJDBC4ColumnNameAndLabelSemantics设置后无效,怎么办?
连接的是DB2数据库, 在查询语句中有SELECT COLUMNNAME AS ALIASNAME FROM TABLE这样的结构时, 会报如下错误: Caused by: com.ibm.db2.j ...