SELECT
语句就是解决这个问题的关键。比如有个 students
表,里面存着学生的 id
、name
、age
和 score
这些信息,要是想看看所有学生的名字和分数,该怎么写呢?很简单,用 SELECT name, score FROM students;
就搞定了。这里要注意,列名之间用逗号隔开,而且顺序可以按自己的需求调整,比如先看分数再看名字,写成 SELECT score, name FROM students;
就行。WHERE
子句来筛选了。比如想找出分数大于 80 分的学生,语句就是 SELECT name, score FROM students WHERE score > 80;
。这里的 >
是比较运算符,除了它还有 =
、<
、>=
、<=
和 !=
等,根据不同的筛选条件选择合适的就行。需要注意的是,字符串比较的时候要加引号,比如 WHERE name = 'Alice';
,而数字就不用了。COUNT()
、SUM()
、AVG()
、MAX()
和 MIN()
。比如想知道 students
表中有多少个学生,用 COUNT(id)
或者 COUNT(*)
都可以,不过 COUNT(id)
会忽略 id
为 NULL
的行,而 COUNT(*)
会统计所有行,包括有 NULL
值的。如果想计算所有学生的总分和平均分,就可以用 SUM(score)
和 AVG(score)
,语句是 SELECT SUM(score) AS total_score, AVG(score) AS avg_score FROM students;
,这里的 AS
是给统计结果起别名,方便查看。age
分组,看看每个年龄的学生人数和平均分数,就需要用到 GROUP BY
子句。语句是 SELECT age, COUNT(*) AS student_count, AVG(score) AS avg_score FROM students GROUP BY age;
。这时候要注意,GROUP BY
后面的字段要和 SELECT
后面的非聚合字段一致,不然就会报错。JOIN
来关联表了。常见的 JOIN
类型有 INNER JOIN
、LEFT JOIN
、RIGHT JOIN
和 FULL OUTER JOIN
。比如有两个表,students
表和 courses
表,students
表中有学生的基本信息,courses
表中有学生的选课信息,两个表通过 student_id
关联。如果想找出每个学生选的课程名称,就需要用 INNER JOIN
,语句是 SELECT students.name, courses.course_name FROM students INNER JOIN courses ON students.id = courses.student_id;
。LEFT JOIN
是左边表的所有行都会显示,右边表匹配不到的行用 NULL
填充,比如想看看所有学生的信息,包括那些没有选课的学生,就用 SELECT students.*, courses.course_name FROM students LEFT JOIN courses ON students.id = courses.student_id;
,这里的 .*
表示选择所有列。RIGHT JOIN
和 LEFT JOIN
相反,是右边表的所有行都会显示,FULL OUTER JOIN
则是两个表的所有行都会显示,匹配不到的用 NULL
填充。需要注意的是,不同的数据库对 FULL OUTER JOIN
的支持可能不一样,比如 MySQL 就不支持,这时候可以用 UNION
来代替。SELECT
、FROM
和 WHERE
子句中。比如想找出分数高于平均分的学生,就可以在 WHERE
子句中用子查询来获取平均分,语句是 SELECT name, score FROM students WHERE score > (SELECT AVG(score) FROM students);
。FROM
子句中,把一个查询结果当作临时表来使用。比如想找出每个年龄中分数最高的学生,就可以先按年龄分组,找出每个组的最高分,然后再和原表关联,语句是 SELECT s.name, s.age, s.score FROM students s INNER JOIN (SELECT age, MAX(score) AS max_score FROM students GROUP BY age) t ON s.age = t.age AND s.score = t.max_score;
。这里的 t
就是临时表,通过 INNER JOIN
和原表关联,找出每个年龄中分数等于最高分的学生。names
表,里面的 name
字段可能前后有空格,需要去除,就可以用 TRIM()
函数,语句是 SELECT TRIM(name) AS cleaned_name FROM names;
。如果想把名字全部转换成大写或者小写,就用 UPPER()
和 LOWER()
函数,比如 SELECT UPPER(name) AS upper_name FROM names;
。SUBSTRING()
,比如想提取名字中的姓氏,假设姓氏是前两个字,就可以用 SELECT SUBSTRING(name, 1, 2) AS last_name FROM names;
,这里的第一个参数是字符串,第二个参数是起始位置,第三个参数是长度。还有 REPLACE()
函数可以替换字符串中的某个部分,比如把名字中的 “张” 换成 “章”,语句是 SELECT REPLACE(name, '张', '章') AS replaced_name FROM names;
。orders
表,里面有 order_date
字段,想找出某年某月的订单,或者计算两个日期之间的天数差。YEAR()
、MONTH()
和 DAY()
函数可以分别提取日期中的年、月、日,比如 SELECT YEAR(order_date) AS order_year, MONTH(order_date) AS order_month FROM orders;
。计算两个日期之间的天数差可以用 DATEDIFF()
函数,语句是 SELECT DATEDIFF(order_date, create_date) AS days_diff FROM orders;
,这里的 order_date
是结束日期,create_date
是开始日期。DATE_FORMAT()
函数可以把日期转换成指定的格式,比如想把 order_date
转换成 “YYYY - MM - DD” 的格式,语句是 SELECT DATE_FORMAT(order_date, '%Y-%m-%d') AS formatted_date FROM orders;
,这里的 %Y
表示四位年,%m
表示两位月,%d
表示两位日。不同的数据库可能函数名称和用法略有不同,比如 MySQL 中用 DATE_FORMAT()
,而 SQL Server 中用 FORMAT()
函数,需要根据具体的数据库来选择合适的函数。CASE
语句就非常有用了。比如想根据学生的分数划分等级,80 分以上是 “A”,60 - 80 分是 “B”,60 分以下是 “C”,就可以用 CASE
语句,语句是 SELECT name, score, CASE WHEN score >= 80 THEN 'A' WHEN score >= 60 THEN 'B' ELSE 'C' END AS grade FROM students;
。这里的 CASE
语句以 CASE
开头,然后用 WHEN
来设置条件,THEN
是条件成立时返回的结果,最后用 END
结束,并可以给结果起别名。CASE
语句还可以用在聚合函数中,比如想统计每个等级的学生人数,就可以在 COUNT()
函数中使用 CASE
语句,语句是 SELECT COUNT(CASE WHEN score >= 80 THEN 1 END) AS a_count, COUNT(CASE WHEN score >= 60 AND score < 80 THEN 1 END) AS b_count, COUNT(CASE WHEN score < 60 THEN 1 END) AS c_count FROM students;
。这里的 CASE
语句在满足条件时返回 1,否则返回 NULL
,而 COUNT()
函数会忽略 NULL
值,所以就能统计出每个等级的人数。courses
表中,“数学” 的 course_id
是 1,“英语” 的 course_id
是 2。然后,学生选课信息在 student_courses
表中,里面有 student_id
和 course_id
字段。student_id
,再找出选了 “英语” 课程的学生 student_id
,然后找出同时存在于这两个结果中的 student_id
,最后根据这些 student_id
到 students
表中查找学生名字。语句是 SELECT name FROM students WHERE id IN (SELECT student_id FROM student_courses WHERE course_id = 1) AND id IN (SELECT student_id FROM student_courses WHERE course_id = 2);
。或者用 JOIN
的方式,将 student_courses
表自连接两次,分别关联 “数学” 和 “英语” 课程,然后筛选出同一个学生的记录,语句是 SELECT s.name FROM students s INNER JOIN student_courses sc1 ON s.id = sc1.student_id INNER JOIN student_courses sc2 ON s.id = sc2.student_id WHERE sc1.course_id = 1 AND sc2.course_id = 2;
。GROUP BY
子句和 ORDER BY
子句,先按 student_id
分组,计算每个学生的选课数量,然后用 ORDER BY
子句排序。语句是 SELECT student_id, COUNT(course_id) AS course_count FROM student_courses GROUP BY student_id ORDER BY course_count DESC, student_name ASC;
,这里假设 students
表中有 student_name
字段,需要和 student_courses
表关联,所以完整的语句应该是 SELECT s.name, COUNT(sc.course_id) AS course_count FROM students s INNER JOIN student_courses sc ON s.id = sc.student_id GROUP BY s.id, s.name ORDER BY course_count DESC, s.name ASC;
。🔍 2025 最新!朱雀 AI 检测腾讯混元模型快速入门教程 📌 一、检测前的准备工作 想玩转朱雀 AI 检测腾讯混元模型,第一步得把基础工具和账号准备好。先登录朱雀 AI 官网,用微信或者 QQ
📱碎片化场景:用户要的是 “30 秒抓眼球”地铁里刷手机的人,手指在推荐池里滑动的速度比电梯还快。这种场景下,用户给每个公众号封面和标题的时间不会超过 3 秒。你去看那些高点击的内容,标题要么带数
🔍 明确需求:给 AI 一个清晰的「剧本」 刚开始用免费 AI 写作软件的时候,我也经常遇到这样的情况。让它写篇种草文,结果出来的内容像说明书;让它想个活动方案,思路比白开水还淡。后来才发现,问题出
? 可爱 TV:每日更新热门影视,免费看动漫电影电视剧无负担观影 在如今这个快节奏的生活里,追剧已经成为很多人放松的方式。要是能有一个平台,既能免费观看各种热门影视,还能每日更新,那可真是太方便了。可
?双机位布置:打造360°无死角面试环境力扣模拟面试的双机位要求让不少同学犯难,其实把它想象成给电脑装个「监控搭档」就简单了。主机位就是咱们平时用的电脑摄像头,记得调整到能露出整张脸和桌面的角度——下巴别藏在阴影里,键盘也别只露出半个。副机位一般用手机支架固定,放在身体侧后方45度角,这个位置既能拍
?精准提分黑科技!ExamifyAI如何重塑2025考试备考模式?一、核心功能大揭秘:AI如何让考试准备更高效?ExamifyAI作为新一代智能考试平台,最吸引人的地方就是它的自适应学习引擎。这个系统就像一个贴心的私人教练,能根据你的答题数据自动调整学习路径。比如你在数学几何题上错误率高,系统会优先
你可能觉得公众号注册就是填几个信息的事,殊不知,这里面的每个选择都像蝴蝶扇动翅膀,未来三年的运营轨迹可能就被悄悄改变了。很多人刚开始没当回事,等到后面想调整,才发现处处受限,那叫一个后悔。今天就跟你好好聊聊,注册时那些看似不起眼的选择,到底能给未来的运营带来多大影响。📌账号类型选不对,三年运营路难
上周帮同事核查一篇AI写的行业报告,发现里面把2023年的用户增长率写成了2025年的预测数据。更离谱的是,引用的政策文件号都是错的。现在AI生成内容速度快是快,但这种硬伤要是直接发出去,读者信了才真叫坑人。今天就掰开揉碎了说,AI写作怎么做好事实核查,别让你的头条文章变成 误导重灾区 。📌AI写
🎯维度一:选题像打靶,靶心必须是「用户情绪储蓄罐」做内容的都清楚,10w+爆文的第一步不是写,是选。选题选不对,后面写得再好都是白搭。高手选选题,就像往用户的「情绪储蓄罐」里投硬币,投对了立刻就能听到回响。怎么判断选题有没有击中情绪?看三个指标:是不是高频讨论的「街头话题」?是不是藏在心里没说的「抽
📌135编辑器会员值不值得买?AI模板库和秀米H5谁更胜一筹?🔍135编辑器会员的核心价值解析企业级商用保障与效率提升135编辑器的企业会员堪称新媒体运营的「合规保险箱」。根据实际案例,某团队通过企业会员节省了大量设计费用,完成多篇内容创作,单篇成本从千元降至百元内。这得益于其海量正版模板和素材库,
新公众号被限流怎么办?粉丝增长影响分析及2025恢复指南🔍新公众号限流的核心原因解析新公众号被限流,往往是多个因素叠加的结果。根据2025年最新数据,超过70%的限流案例与内容质量直接相关。比如,有些新手喜欢用“震惊体”标题,像“惊!某公众号三天涨粉十万”,这类标题在2025年的算法里已经被明确标记
⚠️AI内容重复率高的3大核心原因现在用AI写东西的人越来越多,但很多人都会遇到同一个问题——重复率太高。明明是自己用工具生成的内容,一检测却显示和网上某些文章高度相似,这到底是为什么?最主要的原因是AI训练数据的重叠性。不管是ChatGPT还是国内的大模型,训练数据来源其实大同小异,都是爬取的互联
🌟135编辑器:公众号运营者的效率革命做公众号运营的朋友都知道,排版是个费时费力的活。一篇文章从内容到排版,没几个小时根本搞不定。不过现在好了,135编辑器的出现,彻底改变了这一现状。135编辑器是提子科技旗下的在线图文排版工具,2014年上线至今,已经成为国内新媒体运营的主流工具之一。它的功能非常
现在做内容的人几乎都离不开AI,但最头疼的就是原创度。平台检测一严格,那些模板化的AI文很容易被打回,甚至判定为“非原创”。但你知道吗?同样是用AI写东西,换个prompt指令词,原创度能差出天壤之别。我最近拿不同的prompt测了好几次,结果真的吓一跳——好的指令能让AI内容原创度直接从“及格线”