sql语句总结
来自: http://blog.csdn.net/u013628152/article/details/42569231
1: 查询数据库 dbName 有多少张表
select count(*) from information_schema.tables where table_schema='dbName’;
如果是SQL Server数据库的话:
select name from dbo.sysobjects where OBJECTPROPERTY(id, N'IsUserTable') = 1 //查询所有表名
select count(name) from dbo.sysobjects where OBJECTPROPERTY(id, N'IsUserTable') = 1 //查询一共有多少张表
2: 根据某个字段合并表
select id,name,sum(operate) from test group by name;
执行结果:
3: 用一条 SQL 语句 查询出每门课都大于 80 分的学生姓名
select name from table group by name having min(fenshu)>80
4: 删除除了自动编号不同 , 其他都相同的学生冗余信息
delete tablename where 自动编号 not in(select min( 自动编号 ) from tablename group by 学号 , 姓名 , 课程编号 , 课程名称 , 分数 )
学生表 如下 :
自动编号 学号 姓名 课程编号 课程名称 分数
1 2005001 张三 0001 数学 69
2 2005002 李四 0001 数学 89
3 2005001 张三 0001 数学 69
5:如何截断表
截断表的意思是:(1)将表中数据全部清空(2)重新添加数据的话,id还从1开始。相当于重建表。
truncate user; 截断用户表
如果表中有外键的话,只不能执行 truncate了。可以采用下面的语句:
SET FOREIGN_KEY_CHECKS=0;
TRUNCATE TABLE user ;
SET FOREIGN_KEY_CHECKS=1;
SET FOREIGN_KEY_CHECKS=0;的意思是取消外键。
SET FOREIGN_KEY_CHECKS=1;的意思是恢复外键。
6:查看数据库字段的属性( Collation字符编码 )
show full columns from user;
7:查看字符集的长度
show character set
8:left join和inner join
请参考 left join和inner join举例
9:查询分组,并统计分组下的粉丝
select
(select count(*) from wx_fan f where f. wxAccountId = 2 and f.wxGroupId = g.wxGroupId) as num ,
g.*
from wx_group g
where g.accountId = 2
10:查询某个表中重复的字段
select * from wx_users
where cellphone in
(select cellphone from wx_users group by cellphone having COUNT(*)>1)
11: unique唯一性
ALTER TABLE wx_fan ADD unique(openid);