sqlserver-Sql(求字段长度、所有表数据量、条件判断、每⽇额)⽬录
求字段长度
SELECT
DATALENGTH(字段)
FROM
表名
求字段的最⼤长度
SELECT
MAX (DATALENGTH(字段))
FROM
表名
查询数据库中所有表数据量
不需要做修改,直接执⾏即可,时间较长,不建议在⽣产环境执⾏
DECLARE @SQL VARCHAR(MAX)
SELECT @SQL=ISNULL(@SQL+'
UNION ALL ','')+'SELECT '''+NAME+''' AS TB,COUNT(1) AS TOTAL FROM ['+NAME+']'
FROM SYS.TABLES
EXEC (@SQL)
按照条件将结果封装成特定格式
SELECT
CASE
WHEN STATE = 20  THEN '待发货'
WHEN STATE = 30  THEN '已发货'
WHEN STATE = 40  THEN '已收货'
ELSE '其他' END
FROM mall_order
创建索引、查询索引
----创建聚集索引
create clustered index 索引名称 on 表名(列名)
----创建⾮聚集索引
create index 索引名称 on 表名(列名)
----查看索引
sp_helpindex 表名
UNION ALL
union的多个源只能使⽤⼀个order by,想要每个源都是⽤order by需要在外⾯加⼀层
SELECT a.* FROM(
SELECT top(100) * from goods where type = 2
ORDER BY SALE_NUM DESC  )a
UNION ALL
SELECT b.* FROM(
SELECT top(100) * from goods where type = 1
ORDER BY SALE_NUM DESC  )b
某段时间内每⼀天的交易额
------------ORDER_INFO:表名,ORDER_TIME:下单时间,ORDER_AMOUNT:订单⾦额select year(ORDER_TIME) '年',  month(ORDER_TIME) '⽉',
day(ORDER_TIME) '⽇',  SUM(ORDER_AMOUNT) userNum
from ORDER_INFO
where ORDER_TIME BETWEEN
'2018-11-01 00:00:01' AND '2018-12-01 00:00:01'
varchar2最大长度group by year(ORDER_TIME),  month(ORDER_TIME),  day(ORDER_TIME)