在使用数据库进行数据查询的过程中,经常用到查看数据列备注信息、某列数据中相同数据出现次数、根据某列数据中相同的数据进行统计、分段查询等操作,在此以一个形象的例子做一个记录。
以下表数据为例,表格数据为不同书中的人物信息。数据库类型为MySQL,数据库名称为testDB,表名为t_people。
使用到的几个查询语句如下所述。
1、查看不同列的备注信息
SQL语句:SELECT COLUMN_COMMENT as '备注信息' FROM information_schema.COLUMNS WHERETABLE_NAME='t_people'
结果:
2、查看列名、数据类型和备注信息
SQL语句:SELECT COLUMN_NAME, DATA_TYPE, COLUMN_COMMENT FROMinformation_schema.columns WHERE table_name = 't_people'
结果:
3、查看不同的书名
SQL语句:select DISTINCT(bookname) FROM testDB.t_people
结果:
4、查看出现的书的数量
SQL语句:select count(DISTINCT(bookname)) FROM testDB.t_people
结果:
5、统计不同书中名字的数量并排序
SQL语句:SELECT bookname as '书名',count(all(bookname)) as '人物数量' FROM testDB.t_people group by bookname order bycount(all(bookname)) desc;
结果:
6、分段查询再组合
SQL语句:
SELECT"三国演义" as书名, count(*) as num FROMtestDB.t_people where (bookname='三国演义')
unionall
SELECT"水浒传",count(*) as num FROMtestDB.t_people where (bookname='水浒传')
unionall
SELECT"西游记",count(*) as num FROM testDB.t_peoplewhere (bookname='西游记')
结果:
7、查看人物统计大于3的书,并显示有多少人物记录数(一个表td中的部分ID有多个记录,把所有有多个记录的id查出来,并显示共有多少条记录数)
SQL语句:SELECT bookname, count(*)from testDB.t_people group by bookname having count(*) >3;
或
SELECT *from(select bookname, count(bookname) as count from testDB.t_people group bybookname)T where T.count>3;
结果: