MySQL 建立使用者表和好友表
阿新 • • 發佈:2020-09-20
人生如果錯了方向,停止就是進步
最近想做一個即時通訊的Android demo,但是一直不知道如何處理使用者和好友之間的表關係。在網上找了好久也沒找到合適的。我本人很少接觸資料庫,對資料庫語句比較差。
但是這只是自己demo,只能自己寫。
建立資料庫
好了,不多逼逼,現在開始建立一個數據庫吧。
create database my_chat;
這一步相信大家都很明白,就是建立了一個my_chat的資料庫
建立表
選擇資料庫
use my_chat;
建立使用者表
create table userTable ( userId int auto_increment primarykey, --使用者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 into userTable(password,userName,birthYear,birthMonth,birthDay,gender,avatarId,isOnline,signupTime,hometown,location) values("123456","test1",1997,09,23,1,0,1,"2020-09-23","廣西/百色","廣東珠海"); insert into userTable(password,userName,birthYear,birthMonth,birthDay,gender,avatarId,isOnline,signupTime,hometown,location) values("123456","test2",1998,03,26,0,1,1,"2020-09-23","廣西/百色","廣東珠海");
建立好友表
create table friendListTable ( masterId int, -- 此好友列表所屬使用者的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 into friendListTable(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 into friendListTable(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 table unSendMsgs ( senderId int, receiverId int, msg text, _datetime datetime, type int )
新增訊息資料
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,喜歡的可以點個贊