SQL常用查询语句

该贴是为了掌握几种SQL常用的查询语句,以及对应的关键字排列顺序(末尾那个例子中体现SQL关键字的优先级顺序)。

建数据表

新建-测试数据表
# 这贴不研究表结构,直接拿去用,这是学生表(stu)
CREATE TABLE `stu` (
	`id` INT NOT NULL AUTO_INCREMENT COMMENT '学生编号',
	`nama` VARCHAR ( 255 ) NOT NULL COMMENT '姓名',
	`age` INT ( 2 ) UNSIGNED ZEROFILL DEFAULT NULL COMMENT '年龄',
	`sex` VARCHAR ( 1 ) CHARACTER DEFAULT NULL COMMENT '性别',
	`address` VARCHAR ( 255 ) DEFAULT NULL COMMENT '住址',
	`classid` INT ( 1 ) UNSIGNED ZEROFILL DEFAULT NULL COMMENT '班级编号',
PRIMARY KEY ( `id` ) 
) ENGINE = INNODB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci;

# 这是班级表(class)
CREATE TABLE `class` (
	`id` INT NOT NULL COMMENT '班级编号',
	`class` VARCHAR ( 255 ) DEFAULT NULL COMMENT '班级',
	`teacher` VARCHAR ( 255 ) DEFAULT NULL COMMENT '老师',
PRIMARY KEY ( `id` ) 
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci;

数据

新增-测试数据
# 新增 学生表 信息
INSERT INTO `testdb2`.`stu` (`id`, `nama`, `age`, `sex`, `address`, `classid`) VALUES (1, '张三', 24, '男', '南宁良庆区玉洞', 1);
INSERT INTO `testdb2`.`stu` (`id`, `nama`, `age`, `sex`, `address`, `classid`) VALUES (2, '小二', 22, '男', '南宁青秀区大街小巷', 2);
INSERT INTO `testdb2`.`stu` (`id`, `nama`, `age`, `sex`, `address`, `classid`) VALUES (3, '李四', 33, '男', NULL, 1);
INSERT INTO `testdb2`.`stu` (`id`, `nama`, `age`, `sex`, `address`, `classid`) VALUES (4, '赵五', 24, '男', '南宁兴宁区邕武路', 3);
INSERT INTO `testdb2`.`stu` (`id`, `nama`, `age`, `sex`, `address`, `classid`) VALUES (5, '顺六', 18, '男', '南宁良庆区玉洞', 3);
INSERT INTO `testdb2`.`stu` (`id`, `nama`, `age`, `sex`, `address`, `classid`) VALUES (6, '小七', 35, '男', '南宁西乡塘区科园大道', 2);
INSERT INTO `testdb2`.`stu` (`id`, `nama`, `age`, `sex`, `address`, `classid`) VALUES (7, '小八', 18, '男', '南宁西乡塘区动物园', NULL);

# 新增 班级表 信息
INSERT INTO `testdb2`.`class` (`id`, `class`, `teacher`) VALUES (1, '一班', '王老师');
INSERT INTO `testdb2`.`class` (`id`, `class`, `teacher`) VALUES (2, '二班', '赵老师');
INSERT INTO `testdb2`.`class` (`id`, `class`, `teacher`) VALUES (3, '三班', '李老师');
INSERT INTO `testdb2`.`class` (`id`, `class`, `teacher`) VALUES (4, '四班', '邓老师');

文档

某教学文档截图

关于一条蛮复杂的查询语句-解析

# stu : 学生表      class :班级表
SELECT                    # 查询
	*,                    # 所有字段
	count( stu.age )             # 以及统计(学生表的年龄)这个字段有多少条记录满足查询条件
FROM                    # 你需要查哪个表?
	stu                   # 查(学生表)表
	LEFT JOIN class ON stu.classid = class.id     # 以及(LEFT JOIN)左外连接 (班级表),满足连接表的前提条件(on)是: (学生表的班级id = 班级表的id)
WHERE                     # 查询条件
	stu.age > 20                     # 学生表的年龄大于20
GROUP BY                     # 分组
	stu.age                     # 根据学生表的年龄分组
ORDER BY                      # 排序
	stu.age DESC                     # 根据学生表的年龄排倒序

执行效果

posted @ 2022-03-10 10:52  TabKey9  阅读(108)  评论(0编辑  收藏  举报