SQL基础知识(1)

一、基本查询语句

对学生管理系统中的字段进行基本的查询

1、查询所有字段

语法:select * from 表名
select * from student

2、查询指定字段

语法:select 字段名 from 表名
select name from student

3、使用as给字段起别名

语法:select 字段名 as 别名 from 表名
select name as 姓名 from student

4、使用as给表起别名

语法:select 字段名 from 表名 as 别名
select name from student as st

5、清除重复行

语法:select distinct 字段名 from 表名
select distinct age from student

二、条件查询语句

1、where

语法:select 字段名 from 表名 where 条件
查询年龄为18岁的人名
select name from student where age = 18

2、比较运算符(> < = !=)

select name from student where age != 18

3、逻辑运算符(and、or、not)

select name from student where age=18 and not gender=‘男’

4、模糊查询

like 语法:select 字段名1 from 表名 where 字段名2 like ’ like条件’
1)、%替换零个或多个
–例:查询以小开头的信息–
select * from student where name like ‘小%’
2)、下划线是一个占位符
–例:查询以小开头名字为两个字的学生信息–
select * from student where name like ‘小_’
–例:查询两个字以上的学生信息–
select * from student where name like
not like语法:select 字段名1 from 表名 where 字段名2 not like ’ like条件(上面两个例子适用)’
rlike:是正则匹配方式
1)、.单个字符
2)、*0个或者多个前一个字符
3)、^以…开头
4)、$以…结尾
5)、[abc]取一个
6)、{n}前边字符匹配n次

三、范围查询语句

1、in在一个非连续的范围内(not in)

–例:查询id号在1,3,8范围内的学生的姓名和年龄
select name,age from student where id in{1,3,8}
not in查询不在一个非连续的范围内

2、between…and…在什么到什么范围内,连续查询(not between…and…)

–例:查询年龄在18-20岁之间学生的姓名
select name from student where age between 18 and 20

3、isnull判断空(is not null)

–例:查询年龄为空的学生的姓名
select name from student where age is null

四、排序查询语句

语法:order by 字段 排列方式
——asc 从小到大 正序
——desc 从大到小 倒序
——在排列过程中遇到相同值时会按照主键进行排序

1、单个字段

–例:将年龄在18-34岁之间的男性按照年龄正序排序
select * from student where age between 18 and 34 and gender = ‘男’ order by age asc

2、多个字段

–例:按照年龄正序排序,并按照身高倒序排列
select * from student order by age asc,height desc

五、聚合函数

——count 求总数
——例:select count(name) from student
——max 求最大值
——min 求最小值
——sum 求和
——avg 求平均值
——round 四舍五入
——例:select round(avg(age),2) from student

六、分组查询

1、分组中的特殊情形

在这里插入图片描述
执行语句:select * from table group by name 语句报错
由于该表分组后拿到的虚拟表,name字段每个单元格只有一个值,而id和number字段每个单元格存在多个值,而关系数据库就是基于关系的单元格不允许有多个值,所以select * 会报错
——应用:如果出现过滤条件,可以先使用where 再group by或者 先group by再having

1、get_concat()

–在mysql中,可以使用group_concat 把分组(虚拟表)各个字段显示出来
——例:按照性别进行分组
select gender,group_concat(name,age,id) from table group by gender

2、where、having

–where是对原表数据进行判断
–having 表示对分组进行条件判断,是进行分组之后再判断
——例:select gender,group_concat(name) from student group by gender having avg(age)>8

3、多字段分组

–就是把多个字段看成一个整体
——(1,'女’)(2,‘男’)…看成整体
在这里插入图片描述

4、group by和order by同时使用

——例子:明确使用顺序
select gender,group_concat(name,age,height) from student group by gender having avg(age)>8 order by count(height)

七、分页查询

–limit start,count–直接限制查询出来的个数
——start 是从第几条开始默认是0 count时返回几条数据
——带一个参数的limit 指定从查询结果的首行开始,唯一的参数表示返回的行数,如limit n和limit 0,n等价
——带两个参数的limit可以返回从任何一个位置开始的指定行数
——例:带一个参数:查看年龄小于18岁的五条数据
在这里插入图片描述
——例:带两个参数
在这里插入图片描述
——注意:limit 必须放在最后
——顺序:where–>order by–>limit

八、连接查询

——即多表之间进行关联查询

1、内连接,即取交集

——inner join…on on意味着条件
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210128111945870.png
——using简化 join on
在这里插入图片描述

2、外连接

——包括左连接,右连接,全连接
——左连接
——left join … on on意味着条件
——以左表为基准查询信息,没有的默认为 null
——left 是指 left 左边的数据表
——以student为左表进行查询
在这里插入图片描述
——右连接
——right join … on on意味着条件
在这里插入图片描述
——全连接
——union 实现全连接 select 语句必须有相同数量的列,并且数据类型要相似
——union 只保留唯一值
在这里插入图片描述
——union all全部保留
在这里插入图片描述
——交叉连接
——cross join 也称笛卡尔积
——不带where条件子句,他将返回被连接的两个表的笛卡尔积,返回结果的行数等于两个表行数的乘积
其实就是,左表所有的数据都和右表匹配一遍!

——自关联
在这里插入图片描述

九、子查询

子查询其实就是一个select中嵌套一个select
——查询学生表中年龄最大的学生的姓名
在这里插入图片描述
——查询学生的姓名的id在学生表中的学生的姓名
——查询出年龄等于最大值并且性别为男的学生的姓名
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值