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
</div>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);