Sql查询总结
SELECT
[ALL | DISTINCT | DISTINCTROW ]
select_expr [, select_expr] ...
[FROM table_references[PARTITION partition_list]]
[WHERE where_condition] --指定结果需要的条件
[GROUP BY {col_name | expr | position}] --按照那几个字段分组
[HAVING where_condition] --过滤分组记录需满足的条件
[ORDER BY {col_name | expr | position} [ASC | DESC]] --按照一个或多个条件排序
[LIMIT {[offset,] row_count | row_count OFFSET offset}] --分页
注意:[]表示可选,{}表示必选
1.简单查询
--查询全部的学生信息
select * from student;
--查询所有学生的学号,姓名
select id,name from student;
--列别名和字符串连接函数concat(a,b)
SELECT CONCAT('姓名:',NAME) AS 学生姓名 FROM student
--去重 distinct
--查看有哪些同学参加了考试
select * from result;--查询所有的成绩。
select studentNum from result;--发现重复数据。
select distinct studentNum from result;--去重。
--数据库的列(表达式):函数,计算表达式,变量,文本值
select version(); --函数
select 100*3-1 as 计算结果; --计算表达式
select @@auto_increment_increment --查询自增的步长(变量)
select studentResult + 1 ad '提分后' from result
应当养成一个好习惯,即:凡是表达式或函数都指定一个别名。
2.where条件子句
搜索的条件有一个或者多个表达式组成!结果为布尔值
逻辑运算符:
-
逻辑与:And &&
-
逻辑或:or ||
-
逻辑非:not !
SELECT * FROM student WHERE gradeid=3 AND sex='男';--And
SELECT * FROM student WHERE gradeid=4 OR sex='男';--or
SELECT * FROM student WHERE NOT gradeid=4;--not
模糊查询:比较运算符
-
null
-
not null
-
between and
-
like %(代表任意个字符)、_(一个字符)
-
in
3.联表查询
select * from 表1 a inner join 表2 b on a.id =b.aid; --内连接
select * from 表1 a left join 表2 b on a.id =b.aid; --左连接
select * from 表1 a right join 表2 b on a.id =b.aid; --右连接
4.自连接
--核心,将一张表拆分成两张表。
select * from 表 a left join 表 b on a.id =b.pid; --自连接
5.分页和排序(重点)
--page:页数,pageSize:页面大小
limit (page-1)*pageSize,pageSize;--分页
limit pageSize;--默认第一页
select * from student order by birthday desc/asc;--降序/升序
6. 子查询和嵌套查询
略
7.函数
-
常用函数
--数值:
select ABC(-8);--绝对值
select ceiling(9.4);--向上取整
select floor(9.4);--向下取整
select random();--0~1的随机数
select sing(0);--判断一个数的正负 0-0 -10 - -1 10 - 1
--字符串
select char_length('我是一个小小鸟');--字符串长度
select concat('姓名:','薛之谦');--拼接字符串
select insert('我爱编程',1,2,'超级热爱');--替换
select lower('KuBaKuBa');--小写
select upper('KuBaKuBa');--大写
select replease('KuBaKuBa','Ku','Tu')--替换
select substr('KuBaKuBa',4,6)--截取
select reverse('上海自来水来自海上')--反转
--日期函数
select current_date()
select curdate()
select now()
select localtime()
select sysdate()
--系统
select system_user()
select user()
select version()
-
聚合函数(重要)
count()--统计表中的数据
select count(name) from student;--统计指定列的数量,忽略null值
select count(*) from student;--统计所有列的数量,不忽略null值,本质上 计算行数
select count(1) from student;--忽略所有列,统计1的数量,不忽略null值,本质上 计算行数
sum()--求和
avg()--平均分
max()--最大
min()--最小
8.分组和过滤
当SELECT中含有聚合函数时,那么凡不在聚合函数中的单独字段,都需要出现在GROUP BY子句中。
SELECT AVG(birthday),id
FROM student
GROUP BY id
HAVING AVG(birthday)<now()
posted on 2021-12-08 22:39 lilele200706 阅读(44) 评论(0) 收藏 举报
浙公网安备 33010602011771号