hive
Rich Dad
你若盛开,蝴蝶自来
展开
-
选课系统 - 数据库查询(四)
@R星校长第3关:进阶查询学生表(student)我们将如下表结构数据对应插入:Sno[char(7)]Sname[varchar(20)]Ssex[char(2)]Sage[int] Sdept[varchar(30)]9512101李勇男199512102刘晨男209512103王敏女209521101张立男229521102吴宾女219521103张海男209531101钱小平女189.原创 2020-11-04 09:41:09 · 4428 阅读 · 0 评论 -
博客系统 - 数据库设计(一)
@R星校长第1关:数据库表设计 - 用户信息表数据库整体设计一个博客系统会有哪些功能呢,肯定会有的是博客列表,博客详情,评论,登陆注册等等这些功能,那应该建多少张表呢?应该给这些表添加哪些字段呢?字段的约束怎么设计呢?表与表之间的关联关系应该怎样设计呢?这是你在开始本实训之前要思考的问题。博客系统数据库的整体设计如下图所示:总共涉及到五张表:用户信息表;博客信息表;博客类型表;博客评论表;博客标签表。用户信息表(t_user)设计用户信息表是设计数据库的第一步,和一般的网站类.原创 2020-10-28 22:47:44 · 10654 阅读 · 6 评论 -
MySQL开发技巧 - 分页和索引(三)
@R星校长第3关:索引(组合索引)什么是组合索引和单列索引区别;如何创建组合索引。什么是组合索引?上一关卡中介绍了单列索引,很多同学可能会觉得组合索引实际上就是一个表中有多个单列索引,实际上远非看上去这么简单。例如上节的例子中,student表有如下字段:id,name,city,score。我们在name上和city上建立了分别的单列索引。假如这个表数据极大,我们在进行查询的时候,会有很多重名的人,比如执行以下 sql :select * from student where nam.原创 2020-10-22 19:50:00 · 1640 阅读 · 0 评论 -
MySQL开发技巧 - 分页和索引(二)
@R星校长什么是索引?索引是一张特殊的表,该表保存了主键与索引字段,并指向实体表的记录。先假设有一张表student,表的数据有100万条数据,其中有一条数据是 name="xiaoming",如果要拿这条数据的话需要写的sql是select * from student where name='xiaoming'一般情况下,在没有建立索引的时候,MySQL 需要扫描全表及扫描100万条数据找这条数据,这个效率实际上是非常慢的,那么有什么优化方法呢?答案就是索引。如果我在name字段上建立索.原创 2020-10-21 15:50:27 · 2388 阅读 · 0 评论 -
如何使用使用 HAVING 与 ORDER BY?
@R星校长使用having子句进行分组筛选简单来说,having子句用来对分组后的数据进行筛选,即having针对查询结果中的列发挥筛选数据作用。因此having通常与Group by连用。基本格式:select [聚合函数] 字段名 from 表名 [where 查询条件] [group by 字段名] [having 字段名 筛选条件]表Info的数据信息仍如下:categorycountdigesta5a2002a2a2001a11a200.原创 2020-10-19 23:50:23 · 8178 阅读 · 1 评论 -
GROUP BY与聚合函数的结合使用,GROUP BY中SELECT指定的字段限制
@R星校长本关任务:使用GROUP BY关键字结合聚合函数将数据进行分组在之前的实训中我们简单的提到过GROUP BY关键字,本实训让我们进一步了解GROUP BY与聚合函数的使用。为了完成本关任务,你需要掌握:GROUP BY与聚合函数的结合使用;GROUP BY中SELECT指定的字段限制。GROUP BY与聚合函数的使用基本格式:select [聚合函数] 字段名 from 表名 [where 查询条件] [group by 字段名]先提供表Info结构如下:cat.原创 2020-10-19 22:42:12 · 4819 阅读 · 1 评论 -
MySQL数据库 - 使用聚合函数查询(五)
@R星校长第5关:MIN( )函数MIN()函数是求某列的最小数值1. select min(字段名) from 数据表例子说明:现在有一张tb_Salary表,内容如下:idnameSalaryMonth1Nancy2300112Tob5800113Carly3200114Nancy2600125Tob6300126Carly520012假设场景,老板想知道公司11-12月份中月薪最低的是多少,此.原创 2020-09-02 23:55:58 · 946 阅读 · 1 评论 -
MySQL数据库 - 使用聚合函数查询(四)
@R星校长第4关:MAX( )函数MAX()函数是求某列的最大数值。1. select max(字段名) from 数据表;例子说明:现在有一张tb_Salary表,内容如下:idnameSalaryMonth1Nancy2300112Tob5800113Carly3200114Nancy2600125Tob6300126Carly520012假设场景,老板想知道公司在11-12月份中月薪最高的是多.原创 2020-09-01 23:56:46 · 765 阅读 · 0 评论 -
MySQL数据库 - 使用聚合函数查询(三)
@R星校长第3关:AVG( )函数AVG()函数基本使用AVG()函数是对数据表的某列进行求平均值操作。1. select avg(字段名) from 数据表;例子说明:现在有一张tb_Salary表,内容如下:idnameSalaryMonth1Nancy2300112Tob5800113Carly3200114Nancy2600125Tob6300126Carly520012假设场景,老板想知.原创 2020-08-31 23:58:40 · 1343 阅读 · 0 评论 -
MySQL数据库 - 使用聚合函数查询 (二)
@R星校长第2关:SUM( )函数SUM()函数基本使用SUM()函数是对数据表的某列进行求和操作。1. select sum(字段名) from 数据表;例子说明:现在有一张tb_Salary表,内容如下:idnameSalaryMonth1Nancy2300112Tob5800113Carly3200114Nancy2600125Tob6300126Carly520012假设场景公司老板想知道.原创 2020-08-30 22:35:21 · 1213 阅读 · 1 评论 -
MySQL数据库 - 使用聚合函数查询(一)
@R星校长第1关:COUNT( )函数COUNT()函数基本使用COUNT()函数是用来统计记录的总条数。1. select count(*/字段名) from 数据表;例子说明:假设我们现在有一张表tb_dept;内容如下:idnamedept_id1Nancy3012Tob3033Carly301我们需要获取整张表有多少条数据,那么我们就可以使用COUNT(*)来查询了。那么,现在同样是这张表,我假若想知道301部门一共有少人,我们.原创 2020-08-29 21:15:49 · 2144 阅读 · 1 评论 -
MySQL数据库 - 复杂查询(二)第五关
@R星校长第5关:查询两门课程不及格同学信息本关任务:根据提供的表和数据,查询两门及其以上不及格课程的同学的学号(s_id)、姓名(s_name)及其平均成绩(avg_score),要求计算平均成绩后为整数。student表数据:s_ids_names_sex01Mia女02Riley男03Aria女04Lucas女05Oliver男06Caden男07Lily女08Jacob男course表数据.原创 2020-08-28 23:43:21 · 3534 阅读 · 2 评论 -
MySQL数据库 - 复杂查询(二)第四关
@R星校长第4关:查询张老师课程成绩最高的学生信息本关任务:根据提供的表和数据,查询选修“张三”老师所授课程的学生中,成绩最高的学生信息(具体输出信息请查看测试说明)及其成绩。student表数据:s_ids_names_sex01Mia女02Riley男03Aria女04Lucas女05Oliver男06Caden男07Lily女08Jacob男course表数据:c_idc_nam.原创 2020-08-27 23:48:47 · 3855 阅读 · 0 评论 -
MySQL数据库 - 复杂查询(二)第三关
@R星校长第3关:查询各科成绩并排序本关任务:根据提供的表和数据,查询各科成绩,进行排序并显示排名,按学生编号(s_id)、课程编号(c_id)、学生成绩(s_score)和排名(rank)进行输出,具体效果请查看测试集。student表数据:s_ids_names_sex01Mia女02Riley男03Aria女04Lucas女05Oliver男06Caden男07Lily女08Jacob男co.原创 2020-08-26 23:56:10 · 7602 阅读 · 3 评论 -
MySQL数据库 - 复杂查询(二)第二关
@R星校长第2关:查询修课相同学生信息本关任务:根据提供的表和数据,查询与s_id=01号同学学习的课程完全相同的其他同学的信息(学号s_id,姓名s_name,性别s_sex)。student表数据:s_ids_names_sex01Mia女02Riley男03Aria女04Lucas女05Oliver男06Caden男07Lily女08Jacob男course表数据:c_idc_n.原创 2020-08-25 23:38:04 · 5239 阅读 · 1 评论 -
MySQL数据库 - 复杂查询(二)第一关
@R星校长第1关:查询学生平均分本关任务:根据提供的表和数据,查询平均成绩小于60分的同学的学生编号(s_id)、学生姓名(s_name)和平均成绩(avg_score),要求平均成绩保留2位小数点。(注意:包括有成绩的和无成绩的)student表数据:s_ids_names_sex01Mia女02Riley男03Aria女04Lucas女05Oliver男06Caden男07Lily女08Jacob男.原创 2020-08-24 23:21:14 · 5408 阅读 · 0 评论 -
MySQL数据库 - 复杂查询(一)第五关
@R星校长第5关:统计总成绩本关任务:计算每个班的语文总成绩和数学总成绩,要求科目中低于60分的成绩不记录总成绩。tb_score结构数据:namechinesemathsA8998B9989C5566D8866E5566F8899tb_class表结构数据:stunameclassnameAC1BC2DC2EC1FC3预期输出:+-----------.原创 2020-08-23 23:45:08 · 5229 阅读 · 0 评论 -
MySQL数据库 - 复杂查询(一)第四关
@R星校长第4关:体育馆的人流量本关任务:某市建了一个新的体育馆,每日人流量信息被记录在gymnasium表中:序号 (id)、日期 (date)、 人流量 (visitors_flow)。请编写一个查询语句,找出人流量的高峰期。高峰期时,至少连续三行记录中的人流量不少于100。gymnasium表结构数据如下:iddatevisitors_flow12019-01-015822019-01-0211032019-01-0312342019-.原创 2020-08-22 23:46:33 · 4488 阅读 · 1 评论 -
MySQL数据库 - 复杂查询(一)第三关
@R星校长第3关:分数排名本关任务:编写SQL查询来实现二种排名方式的分数排名。score表结构信息如下:IdScore13.5223.6534.2343.8554.2363.65如果两个分数相同,则两个分数排名(Rank)相同。情况一:平分后的下一个名次是下一个连续的整数值。换句话说,名次之间不应该有“间隔”。例:1、1、2、3、4、4。情况二:排名是非连续的。例:1、1、1、4、4、6。开始你的任务吧,祝你成功!答案.原创 2020-08-21 21:41:44 · 5907 阅读 · 0 评论 -
MySQL数据库 - 复杂查询(一)第二关
@R星校长第2关:换座位本关任务:改变相邻俩学生的座位。小美是一所中学的信息科技老师,她有一张tb_Seat座位表,平时用来储存学生名字和与他们相对应的座位 id。tb_Seat表结构数据如下:idname1Elon2Donny3Carey4Karin5Larisa现在小美想改变相邻俩学生的座位(若学生人数为奇数,则无需改变最后一位同学的座位),现在需要你编写SQL输出小美想要的的结果。预期输出:id name1 Do.原创 2020-08-20 22:35:18 · 4697 阅读 · 0 评论 -
MySQL数据库 - 复杂查询(一)第一关
@R星校长第1关:交换工资本关任务:给定一张tb_Salary表,如下所示,有 m = 男性 和 f = 女性的值。交换所有的f和 m值(例如,将所有 f 值更改为 m,反之亦然)。idnamesexsalary1Elonf70002Donnyf80003Careym60004Karinf90005Larisam55006Soram500要求只使用一句更新update语句,且不允许含有任何select语句.原创 2020-08-19 23:18:52 · 4613 阅读 · 0 评论 -
如何在子查询中使用关键字进行查询?
@R星校长相关知识由于列子查询返回的结果集是 N行一列,因此不能直接使用=、>、<、>=、<=、<>这些比较标量结果的操作符。在列子查询中可以使用ALL、ANY、SOME和 IN关键字操作符。ALL关键字ALL必须接在一个比较运算符的后面,表示与子查询返回的所有值比较都为 TRUE则返回TRUE。table1表数据:col1210table2表数据:col251220举个例子:SELECT.原创 2020-08-18 13:36:54 · 1758 阅读 · 0 评论 -
如何运用带比较运算符的子查询?
@R星校长子查询子查询是指出现在其他SQL语句内的SELECT子句。例如:SELECT * FROM t1 WHERE col1=(SELECT col2 FROM t2);子查询指嵌套在查询内部,且必须始终出现在圆括号内,子查询可以分为四类:标量子查询:返回单一值的标量,最简单的形式;列子查询:返回的结果集是 N行一列;行子查询:返回的结果集是一行N 列;表子查询:返回的结果集是N 行 N列。带比较运算符的子查询运算符说明>大于>=.原创 2020-08-17 23:49:33 · 3553 阅读 · 0 评论 -
如何使用复合条件连接查询?
@R星校长复合条件连接查询复合条件连接查询,就是在连接查询的过程中,通过添加过滤条件来限制查询结果,使查询结果更加精确。如下两张数据表:employee表数据:idnamedept_idage1Nancy3182Tod2223Carly1194Allen224department表数据:idname1开发部2测试部3运维部要求查询员工姓名和所在部门名称,使用内连接查询,将查询.原创 2020-08-16 23:45:08 · 2293 阅读 · 0 评论 -
如何使用外连接查询?
@R星校长外连接查询以某张表为主,取出里面的所有记录,然后每条与另外一张表进行连接,不管能不能匹配上条件,最终都会保留。能匹配,正确保留;不能匹配,其它表的字段都置空(null),称为外连接。外连接查询分为左外连接查询和右外连接查询;关键字:left/right [outer] join ... on。语法:表1 left/right [outer] join 表2 on 表1.字段=表2.字段语法解释:左外连接:在内连接的基础上,还包含表1中所有不符合条件的.原创 2020-08-15 23:47:47 · 2598 阅读 · 0 评论 -
如何使用内连接查询?
@R星校长内连接查询仅将两个表中满足连接条件的行组合起来作为结果集,称为内连接;关键字:[inner] join ... on。语法:表1 [inner] join 表2 on 表1.字段=表2.字段语法解释:从表1中取出每一条记录,去表2中与所有的记录进行匹配,匹配必须是某个条件在表1中与表2中相同,最终才会保留结果,否则不保留。inner关键字可省略不写;on 表示连接条件:条件字段就是代表相同的业务含义(如下面两张表中的 employee.dept_id 和departm.原创 2020-08-14 23:32:41 · 2448 阅读 · 1 评论 -
如何使用LIMIT关键字,限制查询结果的数量?
@R星校长LIMIT的使用在我们查询大量数据结果时,会返回很多条数据,有需要的记录可能就其中的一条或者几条。比如,实现分页功能,若每页显示10条记录,每次查询就只需要10条记录。在MySQL中,提供了LIMIT关键字,用来限制查询结果的数量。语法规则为:SELECT 字段名FROM 表名LIMIT [OFFSET,] 记录数;。参数说明:第一个参数,OFFSET,可选参数,表示偏移量,如果不指定默认值为0,表示从查询结果的第一条记录开始,若偏移量为1,则从查询结果中的第二条记录开始.原创 2020-08-13 23:40:43 · 3490 阅读 · 0 评论 -
如何对班级表中的班级名称进行分组查询?
@R星校长分组查询的单独使用分组查询的关键字是Group By,查询的是每个分组中 首次出现的一条记录。语法规则为:SELECT 字段名FROM 表名ORDER BY 字段名 ; 。例如:现有user表数据:idnamesex1Tom男2Nancy女3AllenNull4Jason男我们对表中数据的性别进行分组查询:可以看出,返回了3条记录,分别是sex字段值为Null、女、男的记录,查询结果按照sex字段中不同的值进行.原创 2020-08-13 23:15:38 · 2874 阅读 · 0 评论 -
如何对查询结果进行排序?
@R星校长对查询结果排序我们知道在MySQL中从数据表中读取数据都是使用SELECT语句。如果我们需要对读取的语句进行排序,我们就可以使用Order By子句来设定你想要按照的字段进行排序并返回结果。语法规则为:SELECT 字段名FROM 表名ORDER BY 字段名 [ASC[DESC]]; 。你还可以根据自己的需求添加WHERE、LIKE子句来设置条件,再对结果过进行排序显示。举个例子现有user表数据如下:idnameage1Tom322N.原创 2020-08-12 23:59:33 · 4630 阅读 · 3 评论 -
如何用AND 与 OR 进行多条件查询?
@R星校长带AND关键字的多条件查询MySQL在WHERE子句中使用AND操作符限制只有满足所有条件的查询才会被返回。可以使用AND连接两个甚至更多个查询条件,多个条件表达式之间用AND分开。语法规则为:SELECT 字段名FROM 表名WHERE 表达式1 AND 表达式2; 。举个例子假设我们现在有一张表Mall_products,内容如下:我们想要查询表中哪些商品不仅商品名中带有toy字符,单价又同时大于5,并列出他们的商品信息。查询代码如下:SELECT *FROM M.原创 2020-08-11 22:51:58 · 3132 阅读 · 0 评论 -
如何查询空值与去除重复结果?
@R星校长查询空值在数据表创建之初,创建者可以指定某个字段是否为空值NULL。注意了,这个NULL既不代表0,也不代表空字符,而是代表一种未知的状态,比如不适用或者放着等将来有合适数据了再添加进去。语法规则为:SELECT 字段名FROM 表名WHERE 字段名 IS NULL; 。举个例子假设我们现在有一张表Mall_products,内容如下:我们将使用IS NULL关键字检索出所有prod_country字段为NULL的商品信息。查询代码如下:SELECT *FROM M.原创 2020-08-10 21:13:09 · 1300 阅读 · 0 评论 -
如何like字符匹配查询?
@R星校长使用通配符%模糊匹配数据内容在前面的检所操作中,我们讲述了如何进行比较查询或者是范围查询,但如果我们想查找所有包含字符ir的内容该么办呢?用之前的方法好像行不通了。在这里,我们需要用通配符进行匹配查找。而执行匹配查找的关键字就是LIKE。SQL语句支持很多种通配符,其中可以和LIKE一起搭配使用的就是通配符%和_了。百分号通配符%可以匹配任意长度的字符,甚至包括零字符。语法规则为:SELECT 字段名FROM 表名WHERE 字段名 LIKE '字符%'; 。其中 % 的位置可.原创 2020-08-09 22:13:03 · 1667 阅读 · 0 评论 -
如何用关键字BETWEEN AND来查询?
@R星校长带BETWEEN AND关键字的查询我们已经学会了如何用IN关键字精确查询数据表中的内容,但是在很多时候,我们仅仅是想知道在某一范围内有多少符合条件的数据,这就不得不使用到关键字BETWEEN AND了。BETWEEN AND需要两个参数支持,一个是范围的开始值,另一个就是结束值了。如果字段值满足指定的范围查询条件,就返回这些满足条件的数据内容。语法规则为:SELECT 字段名FROM 表名WHERE 字段名 BETWEEN n1 AND n2; 。举个例子假设我们现在有一张.原创 2020-08-08 22:49:31 · 1053 阅读 · 0 评论 -
如何使用IN关键字检索数据表中指定的数据内容?
@R星校长带IN关键字的查询IN关键字被用在WHERE语句的后边,用来过滤你所需要查询的内容。更形象的说,IN关键字的使用情形就像点名,点到谁谁就要站出来。语法规则为:SELECT 字段名FROM 表名WHERE 字段名 IN (n1,n2,n3,...); 。其中,括号内的数字必须为INT格式的数字。被“点到名”的这些括号里数字对应的内容,都要乖乖的站到前边来展示给大家看。 举个例子假设我们现在有一张表Mall_products,内容如下:我们会使用IN关键字检索出.原创 2020-08-07 23:31:54 · 1200 阅读 · 0 评论 -
如何查询数据表中指定字段的内容?
@R星校长查询数据表中指定字段的内容MySQL从数据表中查询数据的基本语句为SELECT语句。SELECT语句的可选参数比较多,让我们先从最简单的开始,带大家一步一步的深入SELECT语句的使用。SELECT 基本语法规则为:SELECT 字段名FROM 表名; 。举个例子假设我们现在有一张表Mall_products,内容如下:我们需要从数据表中查询所有商品的名称,你们想想该怎么写?查询代码如下:SELECT prod_nameFROM Mall_products;结果为.原创 2020-08-06 23:59:31 · 13782 阅读 · 0 评论 -
如何如何删除指定行的数据?
@R星校长删除表中的指定行从数据表中删除数据内容需要使用DELETE语句,它需要WHERE语句来配合它来指定我们究竟应该删除哪些数据内容。语法规则为:DELETE FROM 表名 WHERE 条件语句; 。我们可以指定删除某一行的数据内容,当然,我们还可以指定删除很多行的数据内容,区别就在于条件语句。那么在接下来的例子里,我们来看看很多行内容是怎么删除的。 举个例子我们现在有一张表Mall_products2,内容如下图所示:现在我们想把包含Span和Italy的这两行数据.原创 2020-08-05 22:02:20 · 9141 阅读 · 0 评论 -
如何给数据库中的表更新数据?
@R星校长更新表中指定的内容通过上一关的学习,我们已经掌握了INSERT操作!同样,UPDATE操作也很简单,只要记住UPDATE语句三要素就能轻松掌握,它们分别是:需要更新的表(table)名;需要更新的字段(column)名和它的新内容(value);决定更新哪一条内容(value)的过滤条件。 语法规则为:UPDATE 表名 SET 字段名1 = 内容1, 字段名2 = 内容2, 字段名3 = 内容3WHERE 过滤条件; 。...原创 2020-08-04 23:40:39 · 5103 阅读 · 0 评论 -
如何给数据库中的表插入数据?
@R星校长为表的所有字段插入数据向表中插入数据最简单的方法就是使用INSERT语句。INSERT语句需要你声明要插入内容的表(table)名和内容(values)。语法规则为:`INSERT INTO 表名 (字段名) VALUES (内容);`举个例子假设我们现在有一张空表Mall_products2如下:表结构如下:接下来,我们要往空表中插入一条内容,插入(INSERT)语句为:INSERT INTO Mall_products2 ( id, country_n.原创 2020-08-03 14:13:32 · 35406 阅读 · 0 评论 -
如何删除表的外键约束?
@R星校长删除表的外键约束我们曾在第一章中讲过外键的作用,以及如何创建一个表的外键。建立了外键我们就建立起了两张表的关联关系,那如果我想删除主表呢?为了确保数据库的正确性,我们必须先解除两个表之间的关联关系,那就是删除外键约束啦!让我们先来看看删除外键约束的语法规则。语法规则为:ALTER TABLE 表名 DROP FOREIGN KEY 外键约束名; 。举个例子:我们先建立了一个主表country,表结构如下图所示:然后建立一个有外键约束的子表Mall_products2,让它的键c.原创 2020-08-02 14:43:16 · 16561 阅读 · 0 评论 -
如何修改字段的排列位置?
@R星校长修改字段的排列位置在一个数据表被创建的时候,其字段的排列顺序就已被确定了。不能变了吗?怎么可能,一锤子买卖没人敢做。我们可以通过ALTER TABLE来改变表中字段的相对位置。语法规则为:ALTER TABLE 表名 MODIFY 字段1 数据类型 FIRST|AFTER 字段2; 。其中,字段1指要修改位置的字段,FIRST与AFTER 字段2为可选参数。修改字段为表的第一个字段如果我们想把字段的位置调整到第一列,只需做FIRST的位置说明。举个例子现在我们要把字段pro.原创 2020-08-02 14:25:47 · 3337 阅读 · 2 评论