C#第十二章 项目案例:QQ数据库管理

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_45155377/article/details/102698984

QQ数据库管理

--用户表
  INSERT dbo.QQUser(QQID,PassWord,LastLogTime,Online,Level)
  SELECT '54789625','add512#&','2013-02-16 17:01:35','2','1' UNION
  SELECT '88662753','admin0219','2013-02-19 21:08:50','0','5'UNION
  SELECT '8855678','guest0221','2013-02-21 16:28:20','1','6'
  
  SELECT *from dbo.QQUser
  
  --基本信息表
  INSERT dbo.Baselnfo(QQID,NickName,Sex,Age,Province,City,Address,Phone)
  SELECT '54789625','蝴蝶飞飞','1','16','北京市','北京','亚运村','37547388157668'UNION
  SELECT '88662753','秋芙蓉','0','20','河南省','南阳','方成博望','88715783657725'UNION
  SELECT '8855678','双眼皮の猪','1','38','北京市','北京','双榆树东里','65794968876143'
  
  SELECT *from dbo.Baselnfo
  
  --关系表
  INSERT dbo.Relation(QQID,RelationQQID,RelationStatus)
  SELECT '54789625','88662753','0'UNION
  SELECT '88662753','8855678','1'UNION
  SELECT '54789625','8855678','0'
  
   SELECT *from dbo.Relation
  
  
  --用例6:查询数据
  --查询当前在线用户的信息
  SELECT *
  FROM dbo.QQUser
  WHERE Online=0
  
  --查询北京市,年龄在18~45岁的在线用户的信息
  SELECT *
  FROM dbo.Baselnfo
  WHERE Province='北京市'  AND Age >=18 OR Age <=45
  
  --查询秋芙蓉
  SELECT *
  FROM dbo.Baselnfo
  WHERE NickName='秋芙蓉'
  
  --查询QQ号码为54789625的用户的好友中每个省份的总人数,并且按总人数由大到小排序
  SELECT *
  FROM dbo.Relation,dbo.Baselnfo
  WHERE (Relation.QQID=54789625 AND Relation.RelationStatus=0 AND Relation.RelationQQID=Baselnfo.QQID)
  
  --查询至少有150天未登录QQ账号的用户信息
  SELECT q.QQID,LastLogTime,Level,NickName,Age 
  FROM  QQUser q,Baselnfo b 
  WHERE q.QQID=b.QQID and DATEDIFF(dd,LastLogTime,GETDATE())>150 
  ORDER BY LastLogTime DESC
  
  --查询QQ号码为54789625的好友中等级为10级以上的‘月亮’级用户信息,
  SELECT *
  FROM dbo.QQUser
  WHERE QQID='54789625' AND Level <=10
  
  --查询QQ号码为54789625的好友中隐身的用户信息
  SELECT *
  FROM dbo.QQUser
  WHERE QQID='54789625' AND Online=2
  
  --查询好友超过20个的用户QQ号码及其好友总数
  SELECT QQID ,COUNT(*)
  FROM dbo.Baselnfo
  GROUP BY QQID 
  HAVING COUNT(*)>=20
  
  --为了分组查询信誉度,管理员需要查询被当作黑名单人物次数排名前20的用户
  SELECT TOP 20 QQID
  FROM dbo.Relation
  WHERE RelationStatus=1
  
  
  --用例7:修改数据
  
  --假设我的QQ和密码为8855678,今天我隐身登录
  UPDATE dbo.QQUser set Online=2
  WHERE QQID=8855678
  
  SELECT*FROM dbo.QQUser
  
  --假设我的QQ号码为8855678,修改我的昵称为“被淹死的鱼”,地址为“解放路6号院106室”
  UPDATE dbo.Baselnfo
  SET NickName='被淹死的鱼',Address='解放路6号院106室'
  WHERE QQID=8855678
  
  SELECT * FROM dbo.Baselnfo
  
  --假设我的QQ号码为8855678,将我的好友“248624066”拖进黑名单
  UPDATE dbo.Relation
  SET RelationQQID=8855678,RelationStatus=1
  WHERE QQID=54789625
  
  SELECT * FROM dbo.Relation
  
  --为了提高QQ用户的聊天积极性,把等级小于6级的用户等级都提升1个级别
  UPDATE dbo.QQUser
  SET Level=(Level+1)
  WHERE Level<6
  
  SELECT * FROM dbo.QQUser
  
  --管理员将超过365天没有登录过的QQ锁定(将等级值设定为 -1UPDATE dbo.QQUser 
  SET Level=-1
  WHERE DATEDIFF (DD,LastLogTime,GETDATE())>365 AND Online=1
  
  SELECT * FROM dbo.QQUser
  
  --为了奖励用户,将好友数量超过20的用户等级提升1个级别
  UPDATE dbo.QQUser SET Level =(Level+1) 
  WHERE QQID IN (SELECT QQID FROM dbo.Relation
  WHERE RelationStatus=0
  GROUP BY QQID 
  HAVING COUNT (RelationQQID)>20)
  
  --把QQ号码为286314的用户的好友“嘟嘟鱼”拖进黑名单中
  UPDATE dbo.Relation SET RelationQQID=8855678,RelationStatus=0
  WHERE QQID=54789625
  UPDATE dbo.Relation SET RelationStatus=1
  WHERE QQID IN (SELECT QQID FROM dbo.Baselnfo WHERE NickName ='蝴蝶飞飞')
  
  
  
  --用例八 :删除数据
  --把QQ号码为54789625的用户的黑名单中的用户删除
  DELETE dbo.Relation
  WHERE QQID =54789625 AND RelationStatus=1
  
  --QQ号码为622009019的用户多次在QQ中发布违法信息,造成了很坏的影响,因此管理员决定将其删除
  --在关系表中删除用户622013019的信息
  DELETE FROM dbo.Relation
  WHERE QQID =622009019 OR RelationQQID=622013019
  --在基本信息表中删除用户622013019的信息
  DELETE FROM dbo.Baselnfo
  WHERE QQID =622013019
  --在用户表中删除用户622013019的信息
  DELETE FROM dbo.QQUser
  WHERE QQID =622013019
  
  
  --管理员将超过1000天没有登录过的QQ删除
  --查询超过1000天没有登录过的QQID
  SELECT QQID
  FROM dbo.QQUser
  WHERE DATEDIFF (DAY ,LastLogTime,GETDATE ())>=1000
  --删除dbo.Relation表中的数据
  DELETE FROM dbo.Relation
  WHERE QQID IN (SELECT QQID FROM dbo.QQUser WHERE DATEDIFF (DAY ,LastLogTime ,GETDATE ())>=1000)
  OR RelationQQID IN (SELECT QQID FROM dbo.QQUser WHERE DATEDIFF (DAY ,LastLogTime,GETDATE ())>=1000)
  --删除dbo.Baselnfo表中的数据
  DELETE FROM dbo.Baselnfo 
  WHERE QQID IN (SELECT QQID FROM dbo.QQUser WHERE DATEDIFF (DAY ,LastLogTime,GETDATE ())>=1000)
  --删除dbo.QQUser表中的数据
  DELETE FROM dbo.QQUser
  WHERE DATEDIFF(DAY,LastLogTime,GETDATE ())>=1000

猜你喜欢

转载自blog.csdn.net/qq_45155377/article/details/102698984