SQL 查询
查询基本原则
基本操作
select
从哪里选,选什么?
show用法
use `student` -- 切换数据
show databases; -- 查看数据库
show tables; -- 查看有多少表
show columns from student; -- 有多少列
order by
order by
可以按照多列排序,中间用 ,
隔开。
SELECT
*
FROM
student
ORDER BY
class DESC,
grade ASC;
where 子句查询
操作符 | 说明 |
---|---|
= | 等于 |
!= | 不等于 |
> | 大于 |
between .. and .. | 在两个值之间 |
is null | 非空 |
in | 范围内的条件匹配 |
not | 起否定作用,比如 not in (1,5,8) |
and | 并且 |
or | 或 |
通配符过滤
%:任意字符串出现任意的次数
_: 只匹配一个字符
使用正则表达匹配
暂时没学会。。。
语句拼接和计算字段
select concat(class,name) as fullname from student; --对select出来的语句进行拼接
select class*grade as allsum from student; --对两列进行相乘
汇总数据
我们有些时候,总是想要些汇总信息,而不是把他们都检索出来,因此,返回实际表中的数据,是对表和处理资源的一种浪费,更别说是带宽了
函数 | 说明 |
---|---|
avg | 平均 |
count | 总行数 |
max | 某列的最大值 |
min | 某列的最小值 |
sum | 某列总和 |
group by 分组函数
分组允许把数据分成多个分组,以便对每个分组进行聚集计算。
先创建基本表
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for webside
-- ----------------------------
DROP TABLE IF EXISTS `webside`;
CREATE TABLE `webside` (
`id` int(0) NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`alexa` int(0) NULL DEFAULT NULL COMMENT '网络排名',
`country` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of webside
-- ----------------------------
INSERT INTO `webside` VALUES (1, 'Google', 'https://www.google.cm/ ', 1, 'USA');
INSERT INTO `webside` VALUES (2, '淘宝', 'https://www.taobao.com/', 13, 'CN');
INSERT INTO `webside` VALUES (3, '菜鸟教程', 'http://www.runoob.com/ ', 4689, 'CN');
INSERT INTO `webside` VALUES (4, '微博', 'http://weibo.com/ ', 20, 'CN');
INSERT INTO `webside` VALUES (5, 'facebook', 'https://www.facebook.com/', 3, 'USA');
SET FOREIGN_KEY_CHECKS = 1;
建好的数据库
错误提示
left join
应该和on
相搭配使用。而不是where
。