人生如果错了方向,停止就是进步
最近想做一个即时通讯的Android demo,但是一直不知道如何处理用户和好友之间的表关系。在网上找了好久也没找到合适的。我本人很少接触数据库,对数据库语句比较差。
但是这只是自己demo,只能自己写。
创建数据库
好了,不多逼逼,现在开始创建一个数据库吧。
create database my_chat;
这一步相信大家都很明白,就是创建了一个my_chat的数据库
创建表
选择数据库
use my_chat;
创建用户表
create tableuserTable
(
userIdint auto_increment primary key, --用户ID自增
password varchar(100), --密码
userName varchar(100) unique, --用户名
birthYear smallint, --出生年
birthMonth smallint, --出生月
birthDay smallint, --出生日
gender smallint, --0 为女性, 1 为男
avatarId int, --头像Id
isOnline int, --0 为离线, 1 在线
signupTime varchar(100), --XXXX-XX-XX-XX-XX (year-month-day-hour-minute)注册日期
hometown varchar(100), --家乡
location varchar(100) --现居住地
);
添加用户表信息
insert intouserTable(password,userName,birthYear,birthMonth,birthDay,gender,avatarId,isOnline,signupTime,hometown,location)values("123456","test1",1997,09,23,1,0,1,"2020-09-23","广西/百色","广东珠海");insert intouserTable(password,userName,birthYear,birthMonth,birthDay,gender,avatarId,isOnline,signupTime,hometown,location)values("123456","test2",1998,03,26,0,1,1,"2020-09-23","广西/百色","广东珠海");
创建好友表
create tablefriendListTable
(
masterIdint, --此好友列表所属用户的id
friendId int, --好友Id
friendName varchar(100), --好友姓名
friendBirthYear smallint, --好友出生年
friendBirthMonth smallint, --好友出生月
friendBirthDay smallint, --好友出生日
friendGender smallint, --好友友性别
friendAvatarId int, --好友头像
friendIsOnline int, --好友在线状态
friendSignupTime varchar(100), --好友注册日期
friendHometown varchar(100), --好友家乡
friendLocation varchar(100), --好友现居住地
foreign key(masterId) references userTable(userId) on delete cascade --当用户信息修改或删除,该表同步修改
);
添加好友数据
insert intofriendListTable(masterId,friendId,friendName,friendBirthYear,friendBirthMonth,friendBirthDay,friendGender,friendAvatarId,friendIsOnline,friendSignupTime,friendHometown,friendLocation)values(1,2,"test2",1998,03,26,0,1,1,"2020-09-23","广西/百色","广东珠海");insert intofriendListTable(masterId,friendId,friendName,friendBirthYear,friendBirthMonth,friendBirthDay,friendGender,friendAvatarId,friendIsOnline,friendSignupTime,friendHometown,friendLocation)values(2,1,"test1",1997,09,23,0,0,1,"2020-09-23","广西/百色","广东珠海");
获取所有好友
select * from friendListTable where masterId=2;
获取所有在线好友
select * from friendListTable where masterId=2 and friendIsOnline=1;
获取所有离线好友
select * from friendListTable where masterId=? and friendIsOnline=0;
创建消息表
create tableunSendMsgs
(
senderIdint,
receiverIdint,
msgtext,
_datetime datetime,
typeint)
添加消息数据
insert into unSendMsgs (senderId,receiverId,msg,_datetime,type) values(1,2,"这是n一条测试消息",now(),1);insert into unSendMsgs (senderId,receiverId,msg,_datetime,type) values(2,1,"收到",now(),0);insert into unSendMsgs (senderId,receiverId,msg,_datetime,type) values(1,3,"四号是个大撒比",now(),0);insert into unSendMsgs (senderId,receiverId,msg,_datetime,type) values(3,1,"三号明白",now(),1);insert into unSendMsgs (senderId,receiverId,msg,_datetime,type) values(1,3,"over over",now(),0);
查询一号和三号互相发送的消息
select * from unSendMsgs where senderId=1 and receiverId=3 or senderId=3 and receiverId=1 order by _datetime asc;
结果如下
+----------+------------+-----------------------+---------------------+------+
| senderId | receiverId | msg | _datetime | type |
+----------+------------+-----------------------+---------------------+------+
| 1 | 3 | 四号是个大撒比 | 2020-09-20 12:01:14 | 0 |
| 3 | 1 | 三号明白 | 2020-09-20 12:01:36 | 1 |
| 1 | 3 | over over | 2020-09-20 12:01:51 | 0 |
+----------+------------+-----------------------+---------------------+------+
好了,关于用户表和好友表哦以及消息表的关系就如上,日后可能会继续更新,从0搭建即时通讯demo,喜欢的可以点个赞