上一遍文章内容
查询结果排序
创建一个新的数据库(假设名为xl
):
CREATE DATABASE xl;
接下来,切换到新创建的数据库,并创建一个关于修仙者的表,命名为修仙者信息
,包含至少6个中文字段:
USE xl;
CREATE TABLE 修仙者表 (
修仙者ID INT AUTO_INCREMENT PRIMARY KEY,
名字 VARCHAR(100) NOT NULL,
出生日期 DATE,
年龄 INT,
修为境界 VARCHAR(50),
门派归属 VARCHAR(100),
灵根类型 VARCHAR(50),
当前所在地 VARCHAR(100),
修炼时间 YEAR,
天赋神通 VARCHAR(200),
武学造诣 VARCHAR(200)
);
然后,向修仙者信息
表中插入至少10条数据:
INSERT INTO 修仙者表 (名字, 出生日期, 年龄, 修为境界, 门派归属, 灵根类型, 当前所在地, 修炼时间, 天赋神通, 武学造诣)
VALUES
('张无极', '1700-01-01', 300, '金丹期', '青云剑宗', '火灵根', '青云山脉', '1650', '五行剑体', '九阳真经'),
('李逍遥', '1800-02-02', 200, '元婴初期', '蜀山派', '雷灵根', '锁妖塔', '1750', '天剑传承', '御剑术'),
('赵灵儿', '1750-03-03', 250, '化神中期', '水月宫', '水灵根', '水月洞天', '1700', '女娲后裔', '五灵阵法'),
('林月如', '1775-04-04', 225, '筑基巅峰', '林家堡', '木灵根', '苏州城', '1750', '鞭法精通', '斩龙诀'),
('阿奴', '1780-05-05', 220, '结丹后期', '白苗族', '风灵根', '大理国', '1760', '巫蛊之术', '蝶恋花舞'),
('酒剑仙', '1755-06-06', 245, '出窍期', '散修', '复合灵根', '江湖各地', '1720', '醉梦心经', '飞仙术'),
('独孤求败', '1650-07-07', 310, '渡劫期', '隐世高人', '未知', '剑冢', '1600', '孤独九剑', '破碎虚空'),
('王语嫣', '1820-08-08', 190, '炼气期', '慕容世家', '冰灵根', '燕子坞', '1800', '武学理论大师', '凌波微步'),
('扫地僧', '1600-09-09', 400, '合体期', '少林寺', '佛门正宗', '藏经阁', '1550', '佛法深厚', '金刚不坏体'),
('令狐冲', '1785-10-10', 215, '分神期', '华山派', '土灵根', '华山', '1750', '独孤九剑传人', '吸星大法');
题目:
1.编写一个SQL查询语句,从修仙者
表中选取并按出生日期(升序)、名字(升序)和修为境界显示所有修仙者的相关信息。假设表结构如下:
SELECT 出生日期, 名字, 修为境界 FROM 修仙者表 ORDER BY 出生日期 ASC, 名字 ASC, 修为境界;
此查询将返回一个列表,其中包含了所有修仙者的出生日期、名字和修为境界,并按照出生日期从小到大、名字的字母顺序以及修为境界排列结果。
2.在修仙者
表中,编写一个SQL查询语句,按照修炼时间(假设字段名为修炼时间
)从晚到早的顺序显示所有修仙者的相关信息。假设表结构如下:
SELECT * FROM 修仙者表 ORDER BY 修炼时间 DESC;
这个查询将返回一个列表,包含修仙者信息
表中的所有记录,并按照修炼开始
字段的时间由晚至早进行排序。如果只需要显示部分字段,可以将*
替换为需要展示的字段名。例如,仅显示名字和修炼时间:
SELECT 名字, 修炼时间 FROM 修仙者表 ORDER BY 修炼时间 DESC;
3.查询题目:假设修仙者
表的结构中包含年龄(字段名为年龄
)、姓名(字段名为名字
)和修炼时间(字段名为修炼开始
),以及修为境界(字段名为修为境界
)。现在要求按照年龄从小到大(升序)显示每位修仙者的姓名、修炼时间和修为境界,可以编写以下SQL查询语句:
SELECT 名字, 修炼时间, 修为境界 FROM 修仙者表 ORDER BY 年龄 ASC;
这个查询将返回一个列表,其中包含了所有修仙者的姓名、修炼时间和修为境界,并按照年龄从小到大的顺序排列结果。
查询的分组与汇总
-
COUNT(*) 题目:
- 查询修仙者信息表中记录的总修仙者数量。
SELECT COUNT(*) FROM 修仙者表;
-
SUM(column) 题目:
- 假设修仙者信息表中有一个名为
年龄
的列,表示每个修仙者的年龄,请计算所有修仙者的年龄总和。
SELECT SUM(年龄) FROM 修仙者表;
- 假设修仙者信息表中有一个名为
-
AVG(column) 题目:
- 请计算修仙者们的平均修为年限(假设有个字段
修炼时间
)。
SELECT AVG(修炼时间) FROM 修仙者表;
- 请计算修仙者们的平均修为年限(假设有个字段
-
MAX(column) 和 MIN(column) 题目:
- 找出修仙者中最年长者与最年轻者(假设有年龄字段
年龄
)。
SELECT MAX(年龄) AS '最大年龄', MIN(年龄) AS '最小年龄' FROM 修仙者表;
- 找出修仙者中最年长者与最年轻者(假设有年龄字段
-
GROUP_CONCAT(column) 题目:
- 在MySQL中,如果修仙者信息表包含一个存储门派名称的字段
门派归属
,请将所有门派的名字合并为一个由逗号分隔的字符串。
SELECT GROUP_CONCAT(DISTINCT 门派归属 ORDER BY 门派归属 SEPARATOR ', ') AS '教派' FROM 修仙者表;
- 在MySQL中,如果修仙者信息表包含一个存储门派名称的字段
6.请根据修仙者信息表中的门派名称进行分组,并统计出每个门派拥有的修仙者人数。
SELECT `门派归属`, COUNT(*) AS '门派修仙者数量' FROM `修仙者表` GROUP BY `门派归属`;
这个查询将返回一个列表,其中每一行包含了每个门派的名称以及该门派对应的修仙者人数。
7.根据修仙者信息表中的门派归属进行分组统计,并找出拥有最多修仙者的门派。
SELECT `门派归属`, COUNT(*) AS '门派修仙者数量' FROM `修仙者表` GROUP BY `门派归属`
ORDER BY COUNT(*) DESC LIMIT 1;
这个查询将返回一个列表,只显示一行数据,即拥有修仙者数量最多的那个门派及其对应的修仙者人数。通过ORDER BY COUNT(*) DESC
对每个门派的修仙者数量降序排列,并使用LIMIT 1
来获取排序后的第一条记录(也就是修仙者最多的门派)。