一些特定条件下的SQL操作记录,不定时添加。。
1.通过sql语句得到某张特定的表的主键:
利用系统表INFORMATION_SCHEMA.KEY_COLUMN_USAGE 的方法
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_NAME='表名'
2.通过sql语句查询某张表的字段总数
select count(1) from information_schema.columns where table_schema='数据库名' and table_name='表名';
select distinct FieldName from tableName
4.通过sql语句获取时间格式后面截取的时间值(不要前面的年月日)
SELECT * FROM (select date_format(AlarmTime,'%T') _AlarmTime from alarm_record ) a
where a._AlarmTime >'08:00:00' and a._AlarmTime <'20:00:00'
//其中 _AlarmTime是把日期格式截取了后面的时间的新列,这里是指把大于8点,小于20点的数据筛选出来。
如果这样写的话:
SELECT * FROM (select *,date_format(AlarmTime,'%T') _AlarmTime from alarm_record ) a
where a._AlarmTime >'08:00:00' and a._AlarmTime <'20:00:00'
是指把所有列的数据筛选出来
5.通过sql语句查询某张表中所有数据的数量
select count(*) from tableName //结果如下
为了减轻数据库引擎的负担可以这样写
select count(id) from tableName //结果如下
6.拿一组数据的某个数据最大值,不用limit的时候可以在里面先用max(字段名)筛选,可以选出某字段最大的值,不是整条数据拿,只是拿那个字段的值。
7.Group by +字段名的使用
使用Group by 可以把数据中有相同。。。。
8.把数据按保留小数点后两位输出
format(23456.789,2) 这个函数会把23456.789对小数部分进行四舍五入操作,整数部分从右向左每3位一个逗号进行格式化输出,结果为23,456.79 这是个字符串型的数据,一般情况下不用,因为有','.
convert(23456.789,decimal(10,2)) 这个函数同样是以四舍五入进行截取,获得的数字是23456.19,一般情况下用这个函数,如果是整数的话就会显示整数。
truncate(23456.789,2) 这个函数直接把小数点两位以后的数字去掉,显示结果是23456.78
9.union 和union all的用法
union是把多个sql语句结果组合到一个结果集中,要求所有组合的结果集的结果字段名字一样,类型相同,而且,位置顺序应该一一对应,如果第一个结果集和第二个结果集的顺序不一致的话,以第一个结果集为准(虽然不会报错,但是对数据的影响很大,当用函数max(field)操作总结果集的时候,会发生数据对应不上的情况,顺序取值)。