QQ管理
##用例1:查询数据
#01.查询QQ号码为54789625的所有好友信息,包括QQ号码,昵称,年龄
#1 SELECT QQID,NickName,Age FROM baseinfo WHERE QQID =54789625 #2 SELECT `relation`.RelationQQID AS QQ号码,`baseinfo`.NickName AS 昵称,`baseinfo`.Age AS 年龄 FROM BaseInfo,Relation WHERE BaseInfo.QQID=Relation.RelationQQID AND Relation.QQID=54789625 AND RelationStatus=0
#02.查询当前在线用户的信息
#1 SELECT *FROM qquser WHERE OnLine!=0 #2 SELECT NickName,`Province` FROM BaseInfo,QQUser WHERE BaseInfo.QQID=QQUser.QQID AND Online=0
#03.查询北京的、年龄在18至45岁之间的在线用户的信息
SELECT *FROM baseinfo,qquser WHERE baseinfo.QQID =qquser.QQID AND baseinfo.Province='北京' AND baseinfo.Age BETWEEN 18 AND 45 AND qquser.OnLine>0
#04.查询昵称为青青草的用户信息
SELECT * FROM `baseinfo` WHERE `NickName`='青青草'
#05.查询QQ号码为54789625的用户的好友中每个省份的总人数,并且总人数按由大到小排序。
#1 SELECT COUNT(Province) FROM baseinfo WHERE QQID IN ( SELECT QQID FROM relation WHERE RelationQQID IN( SELECT RelationQQID FROM relation WHERE QQID ='54789625' ) ) GROUP BY Province #2 SELECT `baseinfo`.`Province`,COUNT(*) FROM `relation`,`baseinfo` WHERE `relation`.`RelationQQID`=`baseinfo`.`QQID` AND `relation`.`RelationStalus`=0 AND `relation`.`QQID`=54789625 GROUP BY `baseinfo`.`Province` ORDER BY COUNT(*) DESC
#06.查询至少有150天未登录QQ账号的用户信息,包括QQ号码,最后一次登录时间、等级、昵称、年龄,并按时间的降序排列
#1 SELECT qquser.QQID, LastLogTime,LEVEL,NickName,Age FROM baseinfo,qquser WHERE baseinfo.QQID=qquser.QQID AND baseinfo.QQID IN( SELECT QQID FROM qquser WHERE DATEDIFF(NOW(),LastLogTime)>=150 ) GROUP BY LastLogTime #2 SELECT QQUser.QQID,QQUser.LastLogTime,QQUser.Level,BaseInfo.NickName,BaseInfo.Age FROM BaseInfo,QQUser WHERE BaseInfo.QQID=QQUser.QQID AND DATEDIFF(NOW(),lastLogTime)>=150 ORDER BY DATEDIFF(NOW(),lastLogTime) DESC
#07.查询QQ号码为54789625的好友中等级为10级以上的“月亮”级用户信息。
SELECT *FROM baseinfo WHERE QQID IN( SELECT QQID FROM qquser WHERE LEVEL>10 AND QQID IN( SELECT QQID FROM relation WHERE RelationQQID IN ( SELECT RelationQQID FROM relation WHERE QQID ='54789625' ) ) )
#08.--查询QQ号码为54789625的好友中隐身的用户信息。
SELECT *FROM baseinfo WHERE QQID IN ( SELECT QQID FROM qquser WHERE OnLine=0 AND QQID IN ( SELECT QQID FROM relation WHERE RelationQQID IN ( SELECT RelationQQID FROM relation WHERE QQID ='54789625' ) ) )
#09.--查询好友超过20个的用户信息。
SELECT *FROM baseinfo WHERE QQID IN ( SELECT QQID FROM relation WHERE RelationQQID IN( SELECT RelationQQID FROM relation GROUP BY QQID HAVING COUNT(RelationQQID)>20 ) )
#10.为了查看信誉度,管理员需要查询被当做黑名单人物次数排名前3的用户
SELECT * FROM baseinfo WHERE baseinfo.QQID IN( SELECT qquser.QQID FROM qquser WHERE baseinfo.QQID=qquser.QQID AND qquser.QQID IN( SELECT relation.QQID FROM relation WHERE relation.RelationStalus=1 ) ORDER BY qquser.Level DESC ) LIMIT 3
##用例2:修改数据
#01.假设我的QQ号码为8855678,今天我隐身登录
UPDATE `qquser` SET `online`=0 WHERE `QQID`=8855678
#02.假设我的QQ号码为8855678,修改我的昵称为“被淹死的鱼”,地址为“解放中路号院123室”
UPDATE `baseinfo` SET `NickName`='被淹死的鱼',`Address`='解放中路号院123室' WHERE `QQID`=8855678
#03.假设我的QQ号码为54789625,将我的好友“青青草”拖进黑名单。
UPDATE relation SET RelationStalus =1 WHERE QQID ='54789625'UPDATE relation SET RelationStalus =1 WHERE QQID ='54789625'
#04.为了提高QQ用户的聊天积极性,把等级小于6级的用户的等级都提升1个级别。
UPDATE qquser SET LEVEL =LEVEL+1 WHERE LEVEL<6
#05.管理员将超过365天没有登录过的QQ锁定(即将等级值设定为-1)。
UPDATE qquser SET LEVEL =-1 WHERE DATEDIFF(NOW(),LastLogTime)>=365
#06.为了奖励用户,将好友数量超过20的用户等级提升1个级别。
UPDATE qquser SET LEVEL=LEVEL+1 WHERE ( SELECT RelationQQID FROM relation GROUP BY QQID HAVING COUNT(RelationQQID)>20 )
#07.把QQ号码为54789625的用户的好友“嘟嘟鱼”拖进黑名单中。
UPDATE relation SET RelationStalus =1 WHERE QQID ='54789625'
##用例3:删除数据
#1.把QQ号码为54789625的用户黑名单中的用户删除。
DELETE FROM relation WHERE QQID='54789625'
#2.QQ号码为54789625的用户多次在QQ中发布违法信息,造成了很坏的影响,因此管理员决定将其删除。
DELETE FROM baseinfo WHERE QQID ='54789625'
#3.管理员将超过1000天没有登录过的QQ删除。
DELETE FROM qquser WHERE DATEDIFF(NOW(),LastLogTime)>=1000