1. 程式人生 > 實用技巧 >MySQL 建立使用者表和好友表

MySQL 建立使用者表和好友表

人生如果錯了方向,停止就是進步

最近想做一個即時通訊的Android demo,但是一直不知道如何處理使用者和好友之間的表關係。在網上找了好久也沒找到合適的。我本人很少接觸資料庫,對資料庫語句比較差。

但是這只是自己demo,只能自己寫。

建立資料庫

好了,不多逼逼,現在開始建立一個數據庫吧。

create database my_chat;

這一步相信大家都很明白,就是建立了一個my_chat的資料庫

建立表

選擇資料庫

use my_chat;

建立使用者表

create table userTable
(
    userId int 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 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,喜歡的可以點個贊