MySQL常用查询(查行数、列数、表数、字段数)和常用函数

查询一个表(tb1)的列数和行数

SELECT COUNT(*) FROM information_schema. COLUMNS WHERE table_name = 'tb1';
SELECT COUNT(*)  FROM database.tb1

查询一个数据库(database)中有多少表

SELECT COUNT(*) TABLES, table_schema FROM information_schema.TABLES WHERE table_schema = 'database' GROUP BY table_schema;

在这里插入图片描述

查询一个数据库共多少字段

SELECT COUNT(column_name) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'database';

如图:
在这里插入图片描述

IF()函数

MySQL中的IF()函数作用类似于Java中的三目运算符

IF(condition, value_if_true, value_if_false)

参数 描述:

  • condition 必须,判断条件
  • value_if_true 可选,当条件为true值返回的值
  • condition 可选,当条件为false值返回的值

举例:
case_status 字段有’曾被列入失信被执行人名单,现已移出’、‘已结案’、‘列入失信被执行人名单’三种取值,先要用IF将此字段提取成取值‘0’或者‘1’的dishonest_status 字段。

SELECT 
	base.report_id,base.credit_type,base.name,base.certificate_no,base.create_time,
	force_execution.court_name,force_execution.cause,force_execution.register_date,
	force_execution.result_type,force_execution.dishonest_status,force_execution.case_end_date,force_execution.apply_execution_object,force_execution.executed_object
FROM
	(
SELECT distinct 
	t1.report_id,
    t1.credit_type,
    t1.name,
    t1.certificate_no,
	t1.create_time
FROM
	gears.credit_base_info t1
where
    t1.report_id is not null
	) base  # 投影的别名
left JOIN ( 
SELECT distinct
    t3.report_id,
    t3.court_name,
    t3.cause,
    t3.register_date,
    t3.result_type,
    IF(t3.case_status = '列入失信被执行人名单', '1','0') dishonest_status,
    t3.case_end_date,
    t3.apply_execution_object,
    t3.executed_object
FROM
	gears.pcredit_force_execution_record t3
    ) force_execution
    ON base.report_id = force_execution.report_id 
where
    base.report_id is not null

日期条件的筛选

MySQL查询时间大于某天的数据

如查询数据生成时间大于2020/01/119这一天的数据

select * from credit_base where create_time>DATE_ADD('2020/01/19', INTERVAL -1 SECOND)

以上代码即:create_time>‘2020/01/18 23:59:59’

DATEADD(datepart, number, date)

  • datepart:指的是修改的类型,一般有YEAR,MONTH,DAY,HOUR,MINUTE,SECOND

  • number:修改的值,正数是未来的日子。负数是过去的日子

  • date:合法日期表达式

select * from credit_basewhere create_time>DATE_ADD(‘2020/01/18’, INTERVAL 1 DAY)

这种方式也可以查到,但没有排除当刚好有条记录是’2020/01/19 00:00:00’就查不到了。

对于日期DATETIME的条件筛选
有关时间的筛选

查询表中id重复的数据

select * from ecredit_info where id in (select report_id from ecredit_info group by id having count(id)>1)

查询表中除了id列的其他列名

 SELECT
	CONCAT(' select ',GROUP_CONCAT(COLUMN_NAME),' from ', TABLE_NAME,' ;')
 FROM information_schema.COLUMNS
 WHERE table_name = 'xxxx'
 AND TABLE_SCHEMA = 'ccms_xxx' and COLUMN_NAME != 'id';

用于快速写出Select表中除了某个字段的所有字段

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值