lilele200706

 

Sql查询总结

DQL查询数据(最重要)

0.select完整的语法

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)    收藏  举报

导航