Mysql終端Terminal操作

来源:https://www.cnblogs.com/JimmyThomas/archive/2022/06/06/16348814.html
-Advertisement-
Play Games

datebase管理 1.創建資料庫-create 語法:create database 資料庫名 character set 編碼 # 註意:預設會存在四個資料庫,其資料庫中存儲的是mysql資料庫伺服器的配置的數據 示例:create database firstDB character set ...


datebase管理

1.創建資料庫-create

語法:create database 資料庫名 character set 編碼

# 註意:預設會存在四個資料庫,其資料庫中存儲的是mysql資料庫伺服器的配置的數據

示例:create database firstDB character set utf8;

2.查看所有資料庫-show

2.1.查看創建語句(也可看編碼)

語法:show create database 資料庫名;

2.2、查看資料庫伺服器中的所有資料庫

語法:show databases;

3.修改資料庫-alter

修改編碼:
    語法:alter database 資料庫名稱 character set 編碼;
    例如:alter database mydb_01 character set gbk;
    查看:show create database mydb_01;

4.使用資料庫-use

語法:use 資料庫名稱;
例如:use mydb_01;

5.查看當前使用的資料庫

語法:select database();
例如:select database();

6.刪除資料庫-drop

語法:drop dastabase 資料庫名稱;
例如:drop database mydb_01;

table管理

1.創建資料庫表

語法

create table 表名稱(
    欄位名稱 數據類型[約束],
    欄位名稱 數據類型[約束],
    ...
);

示例:

create table user(
    id int,
    name varchar(15),
    age int
);

資料庫類型

常用的類型:
    int:整數型
    varchar:可變字元串
    double:浮點型,例如(double(5,2),長度為5,其中必須包含兩位小數)
    date:日期(只有年月日)
    timestamp:時間戳(年月日,時分秒都有)
java和mysql類型對比
    mysql類型                                     java的類型
    int                                         java.lang.Integer
    double                                      java.lang.Double
    char                                        java.lang.String 
    varchar                                     java.lang.String 
    text                                        java.lang.String
    blob                                        java.lang.byte[]
    date                                        java.sql.Date
    time                                        java.sql.Time
    timestamp                                   java.sql.TimeStamp

約束

定義:
    約束就是對欄位的某種性質的一種約束
類型:
    主鍵約束:primary key
    外鍵約束:(下節課學)
    非空約束:not null
    唯一性約束:unique
    預設值約束:default 預設值(指的是沒有插入此欄位時有預設值,當插入此欄位時,即使值是null他也不會有預設值,即值為null)
主鍵約束:
    主鍵是每一條記錄的唯一性標識,一般沒有實際意義,特點:非空 唯一
    語法:欄位名稱 欄位類型 primary key
    註意:如果主鍵是int型 我們可以將其定義成 auto_increment(自增長)
    示例:id int primary key auto_increment
例如:
    create table user(
        id int primary key auto_increment,
        username varchar(20) not null,
        password varchar(20) not null,
        gender varchar(20),
        age int default 25,
        email varchar(50) not null unique,
        salary double(8,2),
        state int default 0,
        role varchar(10) default 'VIP',
        registTime  timestamp
    );

2.查看表

2.1.查看當前資料庫中的所有表

語法:show tables;

2.2.查看指定表的創建語句

語法:show create table 表名稱;

 

 

2.3.查看表結構

語法:desc 表名稱;

3.刪除表

語法:drop table 表名稱;

4.修改表

4.1.修改表名稱

語法:rename table 舊名稱 to 新名稱;
例如:rename table user to newuser;

4.2.修改表的編碼

語法:alter table 表名稱 character set 編碼;
例如:
  alter table newuser character set gbk;
  ALTER TABLE hq_message CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

5.新增欄位

語法:alter table 表名稱 add 欄位名稱 數據類型 [約束];
例如:alter table newuser add idcart varchar(18) unique;

6.刪除欄位

語法:alter table 表名稱 drop 欄位名;
例如:alter table newuser drop idcart;

7.修改欄位名稱

語法:alter table 表名稱 change 舊名稱 新名稱 數據類型
例如:alter table newuser change gender sex varchar(2);

8.修改數據類型

語法:alter table 表名稱 modify 欄位名稱 新的數據類型;
例如:alter table newuser modify sex int;

數據操作

註意

select @@tx_isolation;--查看mysql的事物隔離級別
show variables like 'character%';--查看mysql資料庫的當前編碼
set character_set_client = gbk;--設置客戶端編碼
set character_set_results = gbk;--設置結果集的編碼

1.插入數據

語法:insert into 表名(欄位名1,欄位名2,...欄位名n) valuse(值1,值2,...值n);
註意:
    (1):如果主鍵是auto_increment的,那麼,主鍵列的值可以寫成null或者主鍵欄位和主鍵值省略不寫
    (2):如果插入的數據是全數據的話,那麼欄位名稱可以省略
例如:
    insert into newuser(id,username,password,sex,age,email,salary,state,role,registtime) values(1,'zhangsan','123',1,25,'[email protected]',100,0,'teacher','2015-10-10 12:35:50');

 

 

2.修改數據

語句:update 表名稱 set 欄位名稱1=值1,欄位名稱2=值2,....欄位名稱n=值n[where條件語句];
註意:如果不寫where條件子句的話 會把表中的所有相應欄位的數據全部修改
例如:update newuser set password=111 where id=1;

 

 

3.刪除數據

語法:delete from 表名 where條件句;
註意:如果不寫where條件句的話 那麼會把表中的數據全部刪掉
delete from newuser和drop table user的區別?
    前者是刪除數據,但是表的結構還在
    後者是把整個表全部刪掉
truncate table newuser;和delete from newuser;區別? 前者一次性將表摧毀,然後在新建表結構 後者是一條一條的將數據刪除

4.查詢數據

4.1.全部查詢

語法:select * from 表名;

 

 

4.2.查詢部分數據

語法:select 欄位名稱1,欄位名稱2... from 表名稱;

 

 

4.3.去重查詢

語法:select distinct 欄位名稱 from 表名;

 

 

4.4.聚合函數

註意:聚合函數儘量不要和其他欄位混合使用

4.41.計數函數

名稱:count():統計當前表中有多少條數據
用法:select count(* 或 者欄位名) from 表名;
註意:當使用欄位進行統計時,如果該列中有null值,則不算一條記錄

 

 

4.4.2.求和函數

名稱:sum()
用法:select sum(salary) from 表名;
註意:如果要求和的欄位中有null則把null當作0進行求和

 

 

4.4.3.最大值函數

名稱:max()
用法:select max(salary) from user;
    
註意:null不作為數值比較

 

 

4.4.4.最小值函數

名稱:min()
用法:select min(salary) from user;
註意:null不作為數值比較

 

 

4.4.5.平均值

名稱:avg()
用法:select avg(salary) from user;
註意:如果欄位中有null值,在相加時當作了0或者根本就沒有算數,在相除的時候沒有算此條記錄

 

 

4.5.運算查詢

語法:select username,salary+1000 from user;
註意:可進行數學運算
    null在進行運算的時候還是null

 

 

ifnull函數
    作用:判斷是否為null
    語法:select username,ifnull(salary,0)+1000 from user;

 

 

as函數
    作用:給欄位起別名
    語法:欄位名 as 別名
    註意:as可以省略不寫

 

 

4.6.排序查詢

語法:order by 欄位名;
註意:
    預設升序(asc):order by 欄位名 asc;
    降序(desc):order by 欄位名 desc;
例如:select * from user order by salary;

 

 

4.7.條件查詢

4.7.1.單一條件查詢

語法:select * from 表名 where 欄位名稱='欄位值';       
註意:可以使用的運算符:>   <   >=    <=  !=
例如:select * from user where username='zhangsan';

 

 

 4.7.2.多條件查詢

語法:select * from 表名 where 欄位名1='欄位值' and 欄位名2='欄位值'......;
註意:邏輯連接關鍵字可以使用and、or、not;優先順序:and  > or
例如:
    select * from user where role='技術部' and sex='女';
    select * from user where role='teacher' or role='財務部';

 

 

4.7.3.範圍查詢

語法:select * from 表名 where 要查詢的欄位 between ... and ...
註意:即包左又包右

 

 

4.7.4.枚舉查詢 

語法:in(枚舉欄位);---滿足枚舉欄位的就會被查出來

語法:not in(枚舉欄位);排除滿足枚舉欄位的所有欄位

 

 

4.7.5.模糊查詢

語法:like '數據';
用法:
    select * from user where username like '張';---全名叫張的
    select * from user where username like '張%';---姓張的
    select * from user where username like '%張';---最後一個字是張的
    select * from user where username like '%張%';---包含張的
    select * from user where username like '_張%';---第二個字是張的
註意:%:代表多個任意字元    _代表任意一個字元

4.7.6.空/非空查詢

語法:
    is null;---某欄位為null
    is not null;---某欄位不為null

 

 

4.8.分組查詢

語法:select 欄位 from 表名 group by 欄位 [having(條件)] 表達式;

 

 

4.9.分頁查詢

limit 3,5

5.sql語句的書寫順序與執行順序

書寫順序:select 欄位 from 表名 where 條件 group by 欄位 having 條件 order by 欄位;
執行順序:from   >   where   >   group by   >   having   >  select  >  order by

多表連查

1.準備數據

創建customer表
    id 整型 主鍵 自動增長,
    姓名 字元串20 不能為空,
    電話 字元串20 不能為空,
    等級 字元串20 預設為銅牌會員
    create table customer(
      id int primary key auto_increment,
      name varchar(20) not null,
      tel varchar(20) not null,
      grade varchar(20) default '銅牌會員'
    );
創建orders表
    id 整型 主鍵 自動增長,
    訂單編號 字元串30 唯一 不能為空,
    訂單提交時間 時間戳類型,
    客戶id 整型 外鍵(與客戶主鍵對應)
    create table orders(
        id int primary key auto_increment,
        ocode varchar(30) unique not null,
        createTime timestamp,
        cid int not null,
        constraint customer_orders foreign key orders(cid)   references customer(id)
    );
    customer表插入數據
        insert into customer values(null,'張三','13825545454','銀牌會員');
        insert into customer values(null,'李四','13820145999','銀牌會員');
        insert into customer values(null,'王五','17745589215','金牌會員');
    orders表插入數據
        insert into orders values(null,'jd001',null,1);
        insert into orders values(null,'jd002',null,2);
        insert into orders values(null,'jd003',null,1);
        insert into orders values(null,'jd004',null,2);
創建goods表 id 整型 主鍵 自動增長, gcode 字元串20 唯一 非空, gname 字元串30 非空, gprice 浮點型(
8,2) 非空, producttime 日期類型 create table goods( id int primary key auto_increment, gcode varchar(20) unique not null, gname varchar(30) not null, gprice double(8,2) not null, producttime date ); 插入數據 insert into goods values(null,'DQ0012','電視機',2999,'2014-12-25'); insert into goods values(null,'DQ0013','洗衣機',1999,'2014-11-25'); insert into goods values(null,'DQ0014','空調扇',235,'2014-5-21'); insert into goods values(null,'SJ0012','iphone5',3288,'2014-10-27'); insert into goods values(null,'SJ0013','魅族MX5',1799,'2015-4-11'); insert into goods values(null,'RY0012','運動鞋',450,'2013-8-19');
創建orders_goods關係表 id 整型 主鍵 自動增長, oid 整型 非空, gid 整型 非空 create table orders_goods( id
int primary key auto_increment, oid int not null, gid int not null, constraint orders_goods_rel foreign key orders_goods(oid) references orders(id), foreign key orders_goods(gid) references goods(id) ); 插入數據 insert into orders_goods values(null,1,1); insert into orders_goods values(null,1,3); insert into orders_goods values(null,1,5); insert into orders_goods values(null,2,1); insert into orders_goods values(null,2,2); insert into orders_goods values(null,3,5); insert into orders_goods values(null,4,5); insert into orders_goods values(null,4,6);

1.1.內連接

內連接就是在查詢的時候數據之間的必須一一對應才能查出

顯示內連接
    語法:select 欄位 from 表1 inner join 表2 on 條件
    例如:
        內連接需求:查詢所有的用戶的訂單中的商品信息
        select * from customer c inner join orders o on c.id=o.cid inner join orders_goods o_g on o_g.oid=o.id inner join goods g on o_g.gid=g.id;
        查詢客戶表連接到訂單表,條件是客戶表中的主鍵id等於訂單表中外鍵;因為訂單表和商品表之間的關係是多對多,所以需要介入中間表,

隱式內連接
    語法:select 欄位 from 表1,表2,... where 條件
    註意:一般情況下 n張表需要最少 n-1個條件可以保證數據不冗餘
    例如:內連接需求:查詢所有的用戶的訂單中的商品信息
        select * from customer c,orders o,orders_goods og,goods g where c.id=o.cid and o.id=og.oid and og.gid=g.id;

 

 

1.2.外連接

左外連接
    保證左表中的數據全部顯示,右表中的數據僅僅顯示與左表有關聯的,沒有數據的會顯示null
    語法:select 欄位 form 左表 left [outer] join 右表 on 條件
    例如:左外連接需求:查詢所有的用戶的信息,如果該用戶有訂單信息一起顯示
        select * from customer c left join orders o on c.id=o.cid;

 

 

右外連接
    保證右表中的數據全部顯示,左表中的數據僅僅顯示與右表有關聯的,沒有數據會顯示null
    語法:select 欄位 from 左表 right [outer] join 右表 on 條件
    例如:有外連接需求:查詢所有的商品信息,如果該商品有所屬的訂單則一起顯示訂單信息
        select * from orders o right join orders_goods og on o.id=og.oid right join goods g on og.gid=g.id;

 

 

1.3.子查詢

查出的數據可以當作一個表看待

select * from customer where id=(select cid from orders where id=2);

 

 

資料庫的備份與恢復

備份:
    mysqldump -u 用戶名 -p 資料庫名稱  表名[表名]>磁碟路徑   --回車
    password:*****     --回車      形成一個.sql的文件
恢復:
    mysql -u 用戶名 -p 資料庫名稱(指定導入到那一個資料庫)<磁碟路徑   --回車
    password:*****   --回車
註意:
    如果指定的資料庫不存在,則失敗;需要自己先創建資料庫

資料庫中的許可權、用戶操作(DCL)

1.創建用戶

語法:
    CREATE USER 用戶名@地址 IDENTIFIED BY '密碼';
    CREATE USER user1@localhost IDENTIFIED BY ‘123’;
    CREATE USER user2@’%’ IDENTIFIED BY ‘123’;
    user1用戶只能訪問localhost
    user2用戶可以遠程訪問

2.給用戶授權

語法:
    GRANT 許可權1, … , 許可權n ON 資料庫.* TO 用戶名@IP
    GRANT CREATE,ALTER,DROP,INSERT,UPDATE,DELETE,SELECT ON mydb1.* TO user1@localhost;
    GRANT ALL ON mydb1.* TO user2@’%’;

3.撤銷授權

語法:
  REVOKE許可權1, … , 許可權n ON 資料庫.* FORM 用戶名
    REVOKE CREATE,ALTER,DROP ON mydb1.* FROM user1@localhost;

4.查看用戶許可權

語法:
    SHOW GRANTS FOR 用戶名
    SHOW GRANTS FOR user1@localhost;

5.刪除用戶

語法:
    DROP USER 用戶名
    DROP USER user1@localhost;

6.修改用戶密碼

語法:
    Use mysql;
    UPDATE USER SET PASSWORD=PASSWORD(‘密碼’) WHERE User=’用戶名’;
    FLUSH PRIVILEGES;
    UPDATE USER SET PASSWORD=PASSWORD('1234') WHERE User='user2';
    FLUSH PRIVILEGES;

視圖管理

標註:

    不管那種創建視圖的方式,新創建的視圖中的數據會隨著源表中的數據變化而變化   

創建數圖:

1、同一資料庫下
第一類:create view v as select * from table;
第二類:create view v as select id,name,age from table;
第三類:CREATE VIEW d_u as SELECT u.user_id as user_id, u.login_ip as login_ip, d.parent_id as parent_id FROM sys_dept d join sys_user u WHERE u.dept_id=d.dept_id; 
第四類:create view v as (select * from table1) union all (select * from table2);

2、不同資料庫
這種情況只比上面的sql語句多一個資料庫的名字,如下:
create view 資料庫1.v as (select * from 資料庫1.table1) union all (select * from 資料庫2.table2);
或
create view 資料庫2.v as (select * from 資料庫1.table1) union all (select * from 資料庫2.table2);
如果執行第一個sql將在資料庫1下建立視圖,反之亦然;

3、基於不同伺服器的
這種情況稍微麻煩一點,需要先建立一個遠程表來訪問遠程伺服器的數據表,然後再對這個剛建立的遠程表和本地表進行視圖,步驟如下:

1、查看MySql是否支持federated引擎
    (1).登錄Mysql;    
    (2).mysql>show engines;
    (3).如果顯示為no,在配置文件中添加:federated (在my.ini),重新啟動mysql服務。

2、創建遠程表
     CREATE TABLE federated_table (
       id  INT(20)  NOT NULL AUTO_INCREMENT,  
        name  VARCHAR(32) NOT NULL DEFAULT '',  
        other  INT(20) NOT NULL DEFAULT '0',   
        PRIMARY KEY  (id)
     )
     ENGINE=FEDERATEDDEFAULT
     CHARSET=utf8
     CONNECTION='mysql://fed_user@remote_host:9306/federated/test_table';

     CONNECTION可以按如下方式進行配置:
      (1).CONNECTION='mysql://username:password@hostname:port/database/tablename'
      (2).CONNECTION='mysql://username@hostname/database/tablename'
      (3).CONNECTION='mysql://username:password@hostname/database/tablename'

3、建立視圖
    create view 本地資料庫.v as (select * from 本地資料庫.table1) union all (select * from 遠程資料庫.test_table);

數圖的作用:

作用一:
    提高了重用性,就像一個函數。如果要頻繁獲取user的name和goods的name。就應該使用以下sql語言。
    示例:select a.name as username, b.name as goodsname from user as a, goods as b, ug as c where a.id=c.userid and c.goodsid=b.id;
    
    但有了視圖就不一樣了,創建視圖other。
    示例:create view other as select a.name as username, b.name as goodsname from user as a, goods as b, ug as c where a.id=c.userid and c.goodsid=b.id;
    創建好視圖後,就可以這樣獲取user的name和goods的name。
    示例:select * from other;
 
作用二:
    對資料庫重構,卻不影響程式的運行。
    假如因為某種需求,需要將user拆房表usera和表userb,
    該兩張表的結構如下:
        測試表:usera有id,name,age欄位
        測試表:userb有id,name,sex欄位
    這時如果服務端使用sql語句:select * from user; 那就會提示該表不存在,這時該如何解決呢。
    解決方案:創建視圖。
    以下sql語句創建視圖:
        create view user as select a.name,a.age,b.sex from usera as a, userb as b where a.name=b.name;
        以上假設name都是唯一的。此時服務端使用sql語句:select * from user;就不會報錯什麼的。
        這就實現了更改資料庫結構,不更改腳本程式的功能了。
 
作用三:
    提高了安全性能。
    可以對不同的用戶,設定不同的視圖。
    例如:某用戶只能獲取user表的name和age數據,不能獲取sex數據。則可以這樣創建視圖。
    示例如下:
        create view other as select a.name, a.age from user as a;
    這樣的話,使用sql語句:select * from other; 最多就只能獲取name和age的數據,其他的數據就獲取不到了。
 
作用四:
    讓數據更加清晰。想要什麼樣的數據,就創建什麼樣的視圖。經過以上三條作用的解析,這條作用應該很容易理解了吧

刪除視圖

mysql> DROP VIEW PEOPLE_VIEW;

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 文章內容1 解決 User.findOrCreate({ where: {name: '小明'}, defaults: {age: 5} }) .spread((user, created) ⇒ { if(created false) { user.update({......}) } }) 分析 ...
  • **前言:**本文將以 Ubuntu Server 22.04 LTS 為例,說明在 VMware 虛擬機中的安裝和配置 Linux 操作系統的步驟。 一、VMWare 安裝配置 1、VMware 下載地址:VMware Workstation Pro 16.x(需要登錄),安裝和配置步驟略。 二、 ...
  • nvm 安裝 node 一直報錯,死活解決不了,苦苦 Google 依然無果... ...
  • 鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站 背景 在Linux中安裝oracle非常麻煩,相信每個人也會遇到各種坑。為了一次裝好,也方便將來直接可以導出鏡像在各平臺移植使用,所以選擇用docker安裝 拉取鏡像 在 DockerHub 上搜索 Oracle 可以找到 Oracle 的官方鏡 ...
  • 查看已存在的任務 查看crontab 輸入命令:cat /etc/crontab 在設定編輯之前都建議列出服務查看一下:crontab -l 語法: **** user_name command to be executed 前面五位是定時執行的時間周期 說明如下: 第一個 * 表示分鐘:取值範圍 ...
  • 鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站 前言 沒安裝vm的小伙伴們,可來這~VM安裝和配置 可選擇優質模板,享受閱讀 VM設置 下載centso鏡像 阿裡雲:下載 安裝VM 有什麼要註意嗎?沒有,除了存儲路徑外,其他都可以自己下一步直到完成,所以可以直接跳到在這兒,不必浪費寶貴時間,廢 ...
  • 一、函數概述 • PL/SQL中的過程和函數(通常稱為子程式)是PL/SQL塊的一種特殊的類型,這種類型的子程式可以以編譯的形式存放在資料庫中,併為後續的程式塊調用。 • 相同點:完成特定功能的程式 • 不同點:是否用return語句返回值 二、函數語法 CREATE [OR REPLACE] FU ...
  • mysql精簡單機版,免登錄,可複製,不啟動服務,與本機mysql無衝突 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...