SQL query practice with MySQL

来源:https://www.cnblogs.com/pennli/archive/2018/04/10/8783580.html
-Advertisement-
Play Games

SQL query practice with MySQL [toc] 0.create table / Navicat Premium Data Transfer Source Server : localhost Source Server Type : MySQL Source Server ...


SQL query practice with MySQL

[toc]

0.create table

table structure

ER diagram

/*
 Navicat Premium Data Transfer

 Source Server         : localhost
 Source Server Type    : MySQL
 Source Server Version : 50624
 Source Host           : localhost
 Source Database       : sqlexam

 Target Server Type    : MySQL
 Target Server Version : 50624
 File Encoding         : utf-8

 Date: 10/21/2016 06:46:46 AM
*/

SET NAMES utf8;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
--  Table structure for `class`
-- ----------------------------
DROP TABLE IF EXISTS `class`;
CREATE TABLE `class` (
  `cid` int(11) NOT NULL AUTO_INCREMENT,
  `caption` varchar(32) NOT NULL,
  PRIMARY KEY (`cid`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

-- ----------------------------
--  Records of `class`
-- ----------------------------
BEGIN;
INSERT INTO `class` VALUES ('1', '三年二班'), ('2', '三年三班'), ('3', '一年二班'), ('4', '二年九班');
COMMIT;

-- ----------------------------
--  Table structure for `course`
-- ----------------------------
DROP TABLE IF EXISTS `course`;
CREATE TABLE `course` (
  `cid` int(11) NOT NULL AUTO_INCREMENT,
  `cname` varchar(32) NOT NULL,
  `teacher_id` int(11) NOT NULL,
  PRIMARY KEY (`cid`),
  KEY `fk_course_teacher` (`teacher_id`),
  CONSTRAINT `fk_course_teacher` FOREIGN KEY (`teacher_id`) REFERENCES `teacher` (`tid`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

-- ----------------------------
--  Records of `course`
-- ----------------------------
BEGIN;
INSERT INTO `course` VALUES ('1', '生物', '1'), ('2', '物理', '2'), ('3', '體育', '3'), ('4', '美術', '2');
COMMIT;

-- ----------------------------
--  Table structure for `score`
-- ----------------------------
DROP TABLE IF EXISTS `score`;
CREATE TABLE `score` (
  `sid` int(11) NOT NULL AUTO_INCREMENT,
  `student_id` int(11) NOT NULL,
  `course_id` int(11) NOT NULL,
  `num` int(11) NOT NULL,
  PRIMARY KEY (`sid`),
  KEY `fk_score_student` (`student_id`),          -- create index
  KEY `fk_score_course` (`course_id`),
  CONSTRAINT `fk_score_course` FOREIGN KEY (`course_id`) REFERENCES `course` (`cid`),
  CONSTRAINT `fk_score_student` FOREIGN KEY (`student_id`) REFERENCES `student` (`sid`)
) ENGINE=InnoDB AUTO_INCREMENT=53 DEFAULT CHARSET=utf8;

-- ----------------------------
--  Records of `score`
-- ----------------------------
BEGIN;
INSERT INTO `score` VALUES ('1', '1', '1', '10'), ('2', '1', '2', '9'), ('5', '1', '4', '66'), ('6', '2', '1', '8'), ('8', '2', '3', '68'), ('9', '2', '4', '99'), ('10', '3', '1', '77'), ('11', '3', '2', '66'), ('12', '3', '3', '87'), ('13', '3', '4', '99'), ('14', '4', '1', '79'), ('15', '4', '2', '11'), ('16', '4', '3', '67'), ('17', '4', '4', '100'), ('18', '5', '1', '79'), ('19', '5', '2', '11'), ('20', '5', '3', '67'), ('21', '5', '4', '100'), ('22', '6', '1', '9'), ('23', '6', '2', '100'), ('24', '6', '3', '67'), ('25', '6', '4', '100'), ('26', '7', '1', '9'), ('27', '7', '2', '100'), ('28', '7', '3', '67'), ('29', '7', '4', '88'), ('30', '8', '1', '9'), ('31', '8', '2', '100'), ('32', '8', '3', '67'), ('33', '8', '4', '88'), ('34', '9', '1', '91'), ('35', '9', '2', '88'), ('36', '9', '3', '67'), ('37', '9', '4', '22'), ('38', '10', '1', '90'), ('39', '10', '2', '77'), ('40', '10', '3', '43'), ('41', '10', '4', '87'), ('42', '11', '1', '90'), ('43', '11', '2', '77'), ('44', '11', '3', '43'), ('45', '11', '4', '87'), ('46', '12', '1', '90'), ('47', '12', '2', '77'), ('48', '12', '3', '43'), ('49', '12', '4', '87'), ('52', '13', '3', '87');
COMMIT;

-- ----------------------------
--  Table structure for `student`
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
  `sid` int(11) NOT NULL AUTO_INCREMENT,
  `gender` char(1) NOT NULL,
  `class_id` int(11) NOT NULL,
  `sname` varchar(32) NOT NULL,
  PRIMARY KEY (`sid`),
  KEY `fk_class` (`class_id`),
  CONSTRAINT `fk_class` FOREIGN KEY (`class_id`) REFERENCES `class` (`cid`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8;

-- ----------------------------
--  Records of `student`
-- ----------------------------
BEGIN;
INSERT INTO `student` VALUES ('1', '男', '1', '理解'), ('2', '女', '1', '鋼蛋'), ('3', '男', '1', '張三'), ('4', '男', '1', '張一'), ('5', '女', '1', '張二'), ('6', '男', '1', '張四'), ('7', '女', '2', '鐵錘'), ('8', '男', '2', '李三'), ('9', '男', '2', '李一'), ('10', '女', '2', '李二'), ('11', '男', '2', '李四'), ('12', '女', '3', '如花'), ('13', '男', '3', '劉三'), ('14', '男', '3', '劉一'), ('15', '女', '3', '劉二'), ('16', '男', '3', '劉四');
COMMIT;

-- ----------------------------
--  Table structure for `teacher`
-- ----------------------------
DROP TABLE IF EXISTS `teacher`;
CREATE TABLE `teacher` (
  `tid` int(11) NOT NULL AUTO_INCREMENT,
  `tname` varchar(32) NOT NULL,
  PRIMARY KEY (`tid`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

-- ----------------------------
--  Records of `teacher`
-- ----------------------------
BEGIN;
INSERT INTO `teacher` VALUES ('1', '張磊'), ('2', '李平'), ('3', '劉海'), ('4', '朱雲'), ('5', '李傑');
COMMIT;

SET FOREIGN_KEY_CHECKS = 1;

1. find student_id where bio score higher than phy score

    -- stp0: list colums
SELECT aa.student_id,aa.num AS BIO,bb.num AS PHY 
FROM
    -- stp1: temporary table aa
    (SELECT student_id,num
    FROM score
    LEFT JOIN course
    ON score.`course_id`= course.`cid`
    WHERE course.`cname`="生物") AS aa   
    -- stp3: aa left join bb
LEFT JOIN                
    -- stp2: tempo table bb
    (SELECT student_id,num
    FROM score
    LEFT JOIN course
    ON score.`course_id`= course.`cid`
    WHERE course.`cname`="物理") AS bb    
ON aa.student_id = bb.student_id  
    --stpt4: filter
WHERE aa.num > IF(ISNULL(bb.num),0,bb.num);

2. 查詢平均成績大於60分的同學的學號和平均成績

SELECT student_id,AVG(num) AS avsc   -- as
FROM score
GROUP BY student_id  -- group by
HAVING avsc > 60;   -- having

3.查詢所有同學的學號、姓名、選課數、總成績

SELECT stu.sid,stu.sname,bb.counter,bb.total
FROM student AS stu
LEFT JOIN        -- stp2: join
(SELECT student_id,COUNT(course_id) AS counter,SUM(num) AS total
FROM score
GROUP BY student_id) AS bb   -- stp1: temp table bb
ON stu.`sid` = bb.`student_id`;

4. 查詢姓“李”的老師的個數

SELECT COUNT(tid)
FROM teacher AS tc
WHERE tname LIKE '李%';  -- like %

5.查詢沒學過“李平”老師課的同學的學號、姓名

SELECT sid,sname
FROM student AS stu
WHERE sid NOT IN            -- not in
 (
 SELECT student_id           -- select stu_id
 FROM score AS sc
 LEFT JOIN                   -- stp2: join
    (SELECT cid                  -- just need cid,not teacher_id
     FROM course AS cs 
     LEFT JOIN teacher AS tc
     ON cs.teacher_id = tc.`tid`
     WHERE tc.`tname`="李平") bb    -- stp1: temp tbl bb

 ON sc.`course_id`= bb.cid
 GROUP BY student_id
 );

6. 查詢學過“001”並且學過編號“002”課程的同學的學號、姓名

SELECT sid, sname
FROM student
WHERE sid IN
    (SELECT student_id
    FROM score
    WHERE course_id IN (1,2)        -- in (1,2)
    GROUP BY student_id
    HAVING COUNT(course_id) = 2
    );
SELECT sid, sname
FROM student
WHERE sid IN
    (
    SELECT aa.student_id
    FROM 
        (SELECT student_id
        FROM score AS sc
        WHERE sc.`course_id`="1"
        ) AS aa
    INNER JOIN
        (SELECT student_id
        FROM score AS sc
        WHERE sc.`course_id`="2"
        ) AS bb
    ON aa.student_id = bb.student_id
    );

7. 查詢所有課程成績小於60分的同學的學號、姓名

SELECT sid,sname
FROM student
WHERE sid IN         -- in
(
SELECT student_id
FROM score
GROUP BY student_id
HAVING MIN(num) < 60   -- having min()
);
SELECT sid,sname
FROM student
WHERE sid IN
(
SELECT student_id
FROM score
WHERE num < 60        
GROUP BY student_id        -- group by
);

8. 查詢沒有學所有課的同學的學號、姓名

SELECT sid,sname
FROM student
WHERE sid IN       -- in
(   
SELECT student_id
FROM score
GROUP BY student_id
HAVING COUNT(DISTINCT course_id) <   -- count()
    (SELECT COUNT(DISTINCT cid)
     FROM course)
);
select sid,sname from student where sid not in 
(select student_id 
 from score                 
 group by student_id
 having count(course_id)=
    (select count(cid) from course)
)

9.查詢至少有一門課與學號為“001”的同學所學相同的同學的學號和姓名

SELECT 
  sid,
  sname 
FROM
  student 
WHERE sid IN           -- in 
  (SELECT 
    DISTINCT student_id 
  FROM
    score 
  WHERE course_id IN        -- in 
    (SELECT 
      course_id 
    FROM
      score 
    WHERE student_id = "1")) ;

10. 查詢至少學過學號為“001”同學所選課程中任意一門課的其他同學學號和姓名;

note:
個數相同;
002學過的也學過

SELECT 
  student_id,
  sname 
FROM
  score 
  LEFT JOIN student 
    ON score.student_id = student.sid 
WHERE student_id IN               -- 1
  (SELECT 
    student_id 
  FROM
    score 
  WHERE student_id != 1 
  GROUP BY student_id 
  HAVING COUNT(course_id) =        -- 11
    (SELECT 
      COUNT(1) 
    FROM
      score 
    WHERE student_id = 1))       -- 111
  AND course_id IN               -- 1
  (SELECT 
    course_id 
  FROM
    score 
  WHERE student_id = 1)          -- 11
GROUP BY student_id             -- 1
HAVING COUNT(course_id) =       -- 1
  (SELECT 
    COUNT(1) 
  FROM
    score 
  WHERE student_id = 1)

11. 刪除學習“李平”老師課的SC表記錄

delete               -- delete from tblname
from
  score 
where course_id in           
  (select 
    cid 
  from
    course 
  where teacher_id in 
    (select 
      tid 
    from
      teacher 
    where tname = "李平")) ;

12. 向SC表中插入一些記錄,這些記錄要求符合以下條件:

-- ①沒有上過編號“002”課程的同學學號;
-- ②插入“002”號課程的平均成績

INSERT INTO score (student_id, course_id, num)          -- insert into select from where
SELECT 
  sid,
  2,
  (SELECT 
    AVG(num) 
  FROM
    score 
  WHERE course_id = "2")                    -- select avg(num)
FROM
  student 
WHERE sid NOT IN 
  (SELECT 
    student_id 
  FROM
    score 
  WHERE course_id != "2") ;

13.按平均成績從低到高顯示所有學生的“語文”、“數學”、“英語”三門的課程成績,

select student_id,
    (select num from score left join aa on student_id = aa.student_id and course_id = (select cid from course where cname = "生物")) as biosc,
    (SELECT num FROM score LEFT JOIN aa ON student_id = aa.student_id AND course_id = (SELECT cid FROM course WHERE cname = "物理")) as physc,
    (SELECT num FROM score LEFT JOIN aa ON student_id = aa.student_id AND course_id = (SELECT cid FROM course WHERE cname = "美術")) as picsc,
    subs,
    avsc
from 
    (select student_id,count(course_id) as subs, avg(num) as avsc
     from score
    group by student_id
    order by avsc desc
    ) as aa;                 -- temp tbl

14.查詢各科成績最高和最低的分:以如下形式顯示:課程ID,最高分,最低分

select course_id,max(num),min(num)     -- max min
from score
group by course_id;              -- group by

15. 按各科平均成績從低到高和及格率的百分數從高到低順序

思路:case when .. then .. END

select 
  course_id,
  avg(num),
  sum(
    case
      when num >= 60                  -- CASE WHEN exp    
      then 1                                -- THEN value1
      else 0                                -- ELSE value2
    end) / count(1) * 100 as percent    -- END
from
  score 
group by course_id 
order by avg(num) asc,
  percent desc ;

wrong answer:

SELECT 
  course_id,
  AVG(num),
  (SELECT 
    (
      (SELECT 
        COUNT(1) 
      FROM
        score 
      WHERE num >= "60"           
      GROUP BY course_id) /    --  note: return array but value attributed to group by
      (SELECT                  -- no array devides array opration in mysql  
        COUNT(1) 
      FROM
        score 
      GROUP BY course_id)
    )) AS percent 
  FROM
    score 
  GROUP BY course_id 
  ORDER BY AVG(num) ASC,
    percent DESC ;

*** 16. 課程平均分從高到低顯示(顯示任課老師)

key:
3 tables join

SELECT 
  tname,    -- tname of 3rd tbl
  AVG(num)  -- avg of 1st tbl
FROM
  score 
  LEFT JOIN course 
    ON score.course_id = course.cid         -- tb1 left join tb2       
  LEFT JOIN teacher 
    ON course.teacher_id = teacher.tid      -- tb2 left join tb3 in one select
GROUP BY course_id 
ORDER BY AVG(num) DESC ;

wrong answer:

select 
  course_id,
  tname,
  avsc 
from
  (select 
    course_id,
    teacher_id,
    avg(num) as avsc 
  from
    score 
    left join course 
      on course_id = cid 
  group by course_id 
  order by avsc desc) as aa 
left join teacher           --  wrong: left join 2nd
on aa.teacher_id = tid ;

*** 17.查詢各科成績前三名的記錄(不考慮成績併列情況)

NOTE

the field after select must be same as group by sentence

  select 
    course_id,
    (select 
      num                           -- the field after SELECT must be same as group by sentence
    from
      score 
    WHERE course_id = aa.course_id 
    GROUP BY num                          -- group by `num` : num is same as select `num`
    ORDER BY num desc 
    LIMIT 0, 1) as st,
    (select 
      num 
    from
      score 
    WHERE course_id = aa.course_id 
    group by num 
    order by num desc 
    limit 1, 1) as nd,
    (select 
      num 
    from
      score 
    WHERE course_id = aa.course_id 
    group by num 
    order by num desc 
    limit 2, 1) as rd 
  FROM
    score as aa 
  group by course_id ;

18.查詢每門課程被選修的學生數

select course_id, count(1) as stus        -- count(distinct col)
from score
group by course_id;

19.查詢只選修了一門課程的全部學生的學號和姓名

select student_id,sname,count(1)
from score left join student           -- from A left join B
on student_id = sid                     -- on A. = B.
group by student_id
having count(1) = 1;

20. 查詢男生、女生人數

select gender,count(1) as persons
from student
group by gender;

21. 查詢姓“張”的學生名單

SELECT *
FROM student
WHERE sname LIKE "張%";

22. 查詢同名同姓學生名單,並統計同名人數

select sname,count(1) as NUM                   
from student
group by sname               -- group by sname
having count(1) > 1
order by num desc;

23. 查詢每門課平均成績,結果按平均成績升序排列;

平均成績相同時,按課程號降序排列

note

order by c1,c2 desc

SELECT course_id,avg(num) AS avsc
FROM score
GROUP BY course_id
ORDER BY avsc,course_id DESC;        -- order by col1,col2 : clo2 take effect only when col1 are same

24. 查詢平均成績大於85的所有學生的學號、姓名和平均成績

better ans.

select student_id,sname,avg(num) as avsc
from score as sc
left join student as stu           -- use left join on, not subquery
on sc.student_id = stu.sid        -- must be full name for ON clause
group by student_id
having AVG(num) > 85;

my ans.

SELECT aa.student_id,sname,aa.avsc
FROM
(select student_id,avg(num) AS avsc
FROM score
GROUP BY student_id
HAVING avsc > 85) AS aa
LEFT JOIN student               -- must be aa LEFT JOIN student,or many NULL yield
ON aa.student_id = sid;

***** 25. 查詢課程名稱為“物理”,且分數低於60的學生姓名和分數

note

join 3 tables along with WHERE clause
先join,再where過濾

SELECT 
  sname,
  num 
FROM
  score 
  LEFT JOIN course 
    ON score.`course_id` = course.`cid` 
  LEFT JOIN student 
    ON score.`student_id` = student.`sid` 
WHERE course.`cname` = "物理"                           -- two LEFT JOIN with WHERE 
  AND score.`num` < 60 ;

26.查詢課程編號為003且課程成績在80分以上的學生的學號和姓名

note

  • on子句必須用全名;
  • 先join,再where過濾
select student_id,sname,num
from score as sc left join student as st
on sc.`student_id` = st.`sid`
where course_id ="3" and num > 80;

27.求選了課程的學生人數

select 
  count(sid)             -- 是學生
from
  student 
where sid in 
  (select 
    student_id           -- 並且選了課的學生
  from
    score) ;

my ans.

select count(distinct student_id)
from score;

28.查詢選修“劉海”老師所授課程的學生中,成績最高的學生姓名及其成績

三表直接用逗號隔開,用where代替join更簡潔
note: 四表關聯,三表join一表in

select 
  st.sname,
  max(sc.num)
from
  course as cs 
  left join score as sc 
    on sc.`course_id` = cs.`cid` 
  left join student as st 
    on sc.`student_id` = st.`sid` 
where cs.`teacher_id` in 
  (select 
    cid 
  from
    teacher 
  where tname = "劉海") ;

29.查詢各個課程及相應的選修人數

SELECT course_id,COUNT(DISTINCT student_id)
FROM score
GROUP BY course_id;

*** 30.查詢不同課程但成績相同的學生的學號、課程號、學生成績

SELECT 
  aa.course_id,
  aa.student_id,
  aa.num,                -- aa.num
  bb.student_id,      
  bb.num                 -- bb.num
FROM
  score AS aa,
  score AS bb 
where aa.student_id != bb.student_id         -- aa.id != bb.id
  AND aa.course_id != bb.course_id 
  AND aa.num = bb.num ;

等價寫法

select 
  aa.course_id,
  aa.student_id,
  aa.num,
  bb.student_id,
  bb.num 
from
  score as aa inner join               -- inner join on
  score as bb 
on aa.student_id != bb.student_id 
  and aa.course_id != bb.course_id 
  and aa.num = bb.num ;

***** 31.查詢每門課程成績最好的前兩名(同17題)

GROUP by合併重覆行,同select DISTINCT
course_id | 1 st num | 2 nd num

select 
  course_id,
  
  (select 
    num 
  from
    score 
  where course_id = aa.course_id 
  group by num              -- group by num: 去除重複分數
  order by num desc 
  limit 0, 1) as st,
  
  (select 
    num 
  from
    score 
  where course_id = aa.course_id 
  group by num 
  order by num desc 
  limit 1, 1) as nd 
from
  score as aa 
group by course_id ;           -- 按course_id歸併,去重覆       

32.檢索至少選修兩門課程的學生學號

select student_id,count(1)
from score
group by student_id
having count(1) > 2;

33.查詢全部學生都選修的課程的課程號和課程名

兩表或三表關聯,不用join更簡潔

select 
  course_id,
  cname 
from
  score as sc,              -- 兩表直接用逗號
  course as cs 
where cs.`cid` = sc.`course_id` 
group by course_id 
having count(1) = 
  (select 
    count(1) 
  from
    student) ;

34. 查詢沒學過“李平”老師講授的任一門課程的學生姓名

select 
  st.sid,
  sname 
from
  score as sc,
  student as st 
where sc.`student_id` = st.`sid` 
  and sc.`course_id` not in 
  (select 
    cid 
  from
    course as cs,
    teacher as tc 
  where cs.`teacher_id` = tc.`tid` 
    and tc.`tname` = "李平") 
group by st.`sid` ;        -- group by去除重名

35. 查詢兩門以上不及格課程的同學的學號及其平均成績

key:
CASE WHEN THEN ELSE END

select 
  student_id,
  avg(num),
  SUM(
    CASE
      WHEN num < 60 
      THEN 1 
      ELSE 0 
    END) as failed 
from
  score 
group by student_id 
having failed > 2 ;

36. 檢索課程"4"分數小於90,按分數降序排列的同學學號

so easy

select student_id,num
from score
where course_id= 4 and num < 90
order by num desc;

37.刪除“002”同學的“001”課程的成績

too easy

delete 
from
  score 
where student_id = 2 
  and course_id = 1 ;

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

-Advertisement-
Play Games
更多相關文章
  • 目標 使用Oracle Enterprise Manager監視性能 使用自動記憶體管理(AMM) 使用記憶體指導調整記憶體緩衝區的大小 查看與性能相關的動態視圖 排除無效和不可用對象產生的故障 性能監視 管理記憶體組件 自動記憶體管理(AMM):指定分配給實例的總記憶體(包括SGA和PGA) 自動共用記憶體管理 ...
  • 摘要: HBase可以說是一個資料庫,也可以說是一個存儲。擁有雙重屬性的HBase天生就具備廣闊的應用場景。在2.0中,引入了OffHeap降低了延遲,可以滿足線上的需求。引入MOB,可以存儲10M左右的對象,完全適應了對象存儲。另外由於自身的併發能力、存儲能力,可以說是具有最為競爭力的引擎 HBa ...
  • 在SQL Server中如何查看資料庫視圖的定義呢? 其實官方文檔已經有一個較詳細的總結了,這裡在官方文檔的基礎上,我們再深入展開分析一下,例如如何獲取系統視圖的定義。知其然知其所以然嗎。 1:使用SQL Server Management Studio(SSMS) 在“對象資源管理器”中,首先找到... ...
  • 下載地址 https://www.mongodb.org/dl/win32/x86_64-2008plus-ssl 建立文件夾和文件 建立data文件夾 建立logs文件夾和空文件 管理員身份進入bin文件夾 執行 打開 http://localhost:27017/ 這裡是製作mogodb的服務名 ...
  • 客戶要一張資料庫的關係模型圖,於是用SQL Developer來做。 一、SQL Developer版本 我在官網下載的最新版本(現在已經到了18.1,Oracle更新的太勤快): 2.如下圖所示選擇導入數據字典以便生成關係圖。 3.選擇要生成關係圖的用戶。 4.選擇表,標註的方框部分用於進行便捷的 ...
  • MySQL主從複製報錯如下: 2018-04-11 09:11:16 2400 [Note] Slave SQL thread initialized, starting replication in log 'binlog.000042' at position 1934531, relay lo ...
  • 1,寫的第一個觸發器 CREATE OR REPLACE TRIGGER TRIG_HNDX_YXDM --床位信息表更新時,更新xsxxb的yxdm欄位(取樓棟信息表xg_gygl_new_ldxxb的xqdm) after update on xg_gygl_new_cwxxb for each ...
  • 前面的話 本文將詳細介紹一款用nodejs開發的基於Web的mongodb資料庫管理工具mongo-express 安裝 首先,全局安裝 mongo-express 包 接著,使用如下命令來找到mongo-express的安裝目錄 在win10下的輸出結果是: 然後進入該目錄下的node_modul ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...