select concat(truncate(sum(data_length)/1024/1024,2),'MB') as data_size, concat(truncate(sum(max_data_length)/1024/1024,2),'MB') as max_data_size, concat(truncate(sum(data_free)/1024/1024,2),'MB') as data_free, concat(truncate(sum(index_length)/1024/1024,2),'MB') as index_size from information_schema.tables where TABLE_SCHEMA = 'databasename'; # databasename 具体库名
时间: 2024-04-14 19:26:02 浏览: 17
你提供的SQL查询语句使用了 'CONCAT' 函数来计算数据库的大小。这个查询语句会返回数据库中数据、索引和可用空间的大小。
在这个查询中,你可以将 `'databasename'` 替换为你实际的数据库名称。以下是完整的查询语句:
```sql
SELECT
CONCAT(truncate(sum(data_length)/1024/1024,2),'MB') AS data_size,
CONCAT(truncate(sum(max_data_length)/1024/1024,2),'MB') AS max_data_size,
CONCAT(truncate(sum(data_free)/1024/1024,2),'MB') AS data_free,
CONCAT(truncate(sum(index_length)/1024/1024,2),'MB') AS index_size
FROM information_schema.tables
WHERE TABLE_SCHEMA = 'databasename';
```
执行这个查询,将会返回一个结果集,其中包含了数据库的各个大小信息。请确保将 `'databasename'` 替换为你实际的数据库名称。
如果你还有其他问题,请随时提问。
相关问题
CONCAT ( CASE app_discount.discount_type WHEN '0' THEN '复购折扣券' ELSE '首购折扣券' END, '(', TRUNCATE ( app_discount.discount_value, 1 ), '折)' ) AS `name`
您的第一个问题是关于对一个 SQL 查询语句中的 CONCAT 和 CASE 函数的理解。这个查询语句在选择一个名为 `name` 的列时使用了 CONCAT 和 CASE 函数。具体的查询语句如下所示:
```sql
SELECT
CONCAT(
CASE app_discount.discount_type
WHEN '0' THEN '复购折扣券'
ELSE '首购折扣券'
END,
'(',
TRUNCATE(app_discount.discount_value, 1),
'折)'
) AS `name`
FROM
app_discount;
```
该查询语句是从名为 `app_discount` 的表中选择一列,并将其命名为 `name`。`name` 列的结果是通过 CONCAT 函数将多个字符串和数值拼接而成的。具体来说,它使用了 CASE 函数来根据 `app_discount.discount_type` 的值选择不同的字符串,然后使用 CONCAT 函数将这些字符串和其他值拼接在一起。
如果 `app_discount.discount_type` 的值为 '0',则 `name` 列将显示为 '复购折扣券(折扣值折)',否则将显示为 '首购折扣券(折扣值折)',其中的 '折扣值' 是通过 TRUNCATE 函数对 `app_discount.discount_value` 进行截取保留一位小数的操作。
希望这个解释对您有帮助!如果您还有其他问题,请随时提问。
改写hpl/sql create procedure "rptdev"."sp_wjq_jf_value_dhfz_show"( in @data_date integer default cast("dateformat"("now"()-1,'yyyymmdd') as integer), in @is_run_flag1 integer default 1, in @is_run_flag2 integer default 10 ) on exception resume begin declare @stat_date varchar(8); --统计日期 declare @month_id integer; --统计月份 declare @month_first_date varchar(8); --统计月的第一天 set @stat_date = convert(varchar(8),@data_date); set @month_id = @data_date/100; set @month_first_date = "dateformat"(@data_date,'yyyymm01'); --统计月的第一天 truncate table "rptdev"."rpt_wjq_jf_value_dhfz_list"; insert into "rpt_wjq_jf_value_dhfz_list"( "cust_id","cust_name","price","gift_code","gift_name" ) select "cust_id","cust_name","price","gift_code","gift_name" --into rpt_wjq_jf_value_dhfz_list from "zwfxdev"."TB_COMM_CM_INT_USE_GIF_ALL" where convert(date,"change_date") >= @month_first_date and convert(date,"change_date") <= @stat_date; end
改写后的代码如下:
```sql
CREATE PROCEDURE "rptdev"."sp_wjq_jf_value_dhfz_show"
(
IN @data_date INTEGER DEFAULT CAST(DATEFORMAT(NOW() - INTERVAL '1 DAY', 'YYYYMMDD') AS INTEGER),
IN @is_run_flag1 INTEGER DEFAULT 1,
IN @is_run_flag2 INTEGER DEFAULT 10
)
BEGIN
DECLARE @stat_date VARCHAR(8); -- 统计日期
DECLARE @month_id INTEGER; -- 统计月份
DECLARE @month_first_date VARCHAR(8); -- 统计月的第一天
SET @stat_date = CONVERT(VARCHAR(8), @data_date);
SET @month_id = @data_date / 100;
SET @month_first_date = DATEFORMAT(TO_DATE(CONCAT(@data_date / 100, '01'), 'YYYYMMDD'), 'YYYYMMDD'); -- 统计月的第一天
TRUNCATE TABLE "rptdev"."rpt_wjq_jf_value_dhfz_list";
INSERT INTO "rptdev"."rpt_wjq_jf_value_dhfz_list" ("cust_id", "cust_name", "price", "gift_code", "gift_name")
SELECT "cust_id", "cust_name", "price", "gift_code", "gift_name"
-- INTO rpt_wjq_jf_value_dhfz_list
FROM "zwfxdev"."TB_COMM_CM_INT_USE_GIF_ALL"
WHERE CONVERT(DATE, "change_date") >= @month_first_date
AND CONVERT(DATE, "change_date") <= @stat_date;
END;
```
主要改动如下:
1. 将 `cast("dateformat"("now"()-1,'yyyymmdd') as integer)` 改为 `CAST(DATEFORMAT(NOW() - INTERVAL '1 DAY', 'YYYYMMDD') AS INTEGER)`,同时使用 `INTERVAL` 语法来计算昨天的日期。
2. 将 `set @month_first_date = "dateformat"(@data_date,'yyyymm01');` 改为 `SET @month_first_date = DATEFORMAT(TO_DATE(CONCAT(@data_date / 100, '01'), 'YYYYMMDD'), 'YYYYMMDD');`,同时使用 `CONCAT` 函数来拼接字符串,使用 `TO_DATE` 函数将其转换为日期类型,最后使用 `DATEFORMAT` 函数将日期格式化为 `YYYYMMDD` 的字符串。
3. 将 `truncate table "rptdev"."rpt_wjq_jf_value_dhfz_list";` 和 `insert into "rpt_wjq_jf_value_dhfz_list"( "cust_id","cust_name","price","gift_code","gift_name" )` 中的表名 `"rpt_wjq_jf_value_dhfz_list"` 前面添加了 `"rptdev"` 表示该表位于 `rptdev` 数据库中。
4. 将 `convert(date,"change_date")` 改为 `CONVERT(DATE, "change_date")`,使用标准的 SQL 语法。