sql语句总结

AlfFuentes 8年前

来自: 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);

</div> </div> </span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>