后端-navicat查找语句(单表与多表)

 

表格字段设置如图

语句:

1.输出

1.在学生表里找出name ,和 age列

SELECT name,age from student

1.2.找到学生表的所有信息

select * from student 

 1.3 在学生表里找性别为 男 的有多少个人

select count(*) from student where sex="男"

插入

insert into student(name,age,sex,class_num) values("admin",14,"女",3)

 更新

update student set name="lili" ,sex="男",age=31,class_num=3 where id=5

有就是更新,没有就找不到,不更新 

delete from student where id = 3

2.where子语句

1.运算符:

=等于

>大于

>=大于等于

<小于

<=小于等于

!=    <>不等于

select * from student where age!=24

 

select * from student where age<24

2.逻辑运算符:

and 并且
or  或者
not 取非 主要用在is 或in

select * from student where age>=24 and sex="女" and name="admin"

select * from student where age>=24 or sex="男"

select * from student where age>=20 and age<=24

3.范围 

between ..and ..范围查询,在两个值之间

in 范围查询 包含

select * from student where id between 3 and 5

select * from student where id not in(1,4,5)

4.空 

is null 为null

select * from student where age is not null

5.模糊查询

模糊查询  like 为模糊查询  需要配合占位符一起使用  _代表一位字符  %代表任意位字符

select * from student where name like "张_"

select * from student where name like "张%"

 

select * from student where name like "%张%"

 

3.分页查询-limit子语句

1.语句

limit a,b              ----a表示起始的索引值  b表示查询的个数

limit b offset a 

select * from student  limit 0,5

 

eg.

一页3个 pagesize

$1.第一页  page

select * from student  limit 0,3

$2. 第二页

select * from student  limit 3,3

$3. 第三页

select * from student  limit 6,3

$4.第四页

select * from student  limit 9,3

2.总结 :

select * from student  limit (page-1)*pagesize,pagesize

 3.位置:

limit 子语句放在最后位置

select * from student  where sex="男" limit 0,3

4.排序子语句

1.语句

order by 列名 desc降序排列 || asc升序

select * from student ORDER BY age desc

2.位置:

排序子语句的相对位置  

                在where子语句之后  在limit子语句之前

select * from student where sex="女" order by class_num desc limit 0,3

5.分组函数和聚合函数

1.聚合函数
  1. -- sum()求和
  2. -- min()取最小值
  3. -- max() 取最大值
  4. -- avg()取平均值
  5. -- count()取得的记录数量  

                count(*)表示取得当前查询表的所有记录数  

                count(字段名称)不会统计为null的记录

select count(age) from student

select count(*) from student

2.分组函数

GROUP BY 字段名称          分完组之后做查找用having

select * from student group by class_num

返回第一个

表格如图:

 

分组之后结果返回:

返回的是class_num的第一个人

select * from student group by class_num having sex="女"

筛选性别为女的

select max(age),class_num from student GROUP BY class_num

select max(age),class_num from student GROUP BY class_num having class_num=2

6. 重命名

重命名 as 新名字 as 可以省略

select student.*,class.name 班级名,class.teacher from 学生表 as student,班级表 as class where cid=class.id

 

遇到表名后加空格一个新名的,就是重命名

 

2.多表查询

1.关系

1.1 一对一

 $ 1.合并成一张表 效果最好

$ 2. 在其中一张表加入外键

 &&or

$3. 单独创建一张表存关系

 1.2 一对多

学生对班级

$1. 合成一张表

缺点:有多少学生这些信息得存多少遍 数据冗余

$2. 在多方加入外键  效果最好

修改班级等方便, &&查看班级多少人,只需看cid有多少个

②在1方加入外键 数据冗余

$3. 单独创建一张表存关系

1.3 多对多

学生对课程

课程对学生

$1. 合并成一张表----->重复

$2. 加外键

在谁方谁冗余

①学生方

 ②课程方

$3. 单独创建一张表存关系

1.4 结论:

2.查询

$1. 建立班级表和学生表

 

$2. 添加外键

$3. 填入数据

$4. 查询

select * from 班级表,学生表 where 学生表.cid=班级表.id

连表查询

-- 连表查询 join on
-- 内连接
-- 外连接   左外连接和右外连接

 

  1. -- 内连接 公共的部分

 把where的地方换成on

select * from 班级表 join 学生表 on 学生表.cid=班级表.id

后面再加条件的话加where

select * from 班级表 join 学生表 on 学生表.cid=班级表.id where age=21

 

2. -- 外连接 左外连接和右外连接

#左连接 (公共的部分加上左边空的<独有的>)

select * from 班级表 left join 学生表 on 学生表.cid=班级表.id

#右连接(公共的部分加上右边空的<独有的>)

select * from 班级表 right join 学生表 on 学生表.cid=班级表.id

多个表

select * from 学生表 join 课程表 join 选课表 on 学生表.id=选课表.sid and 选课表.cid=课程表.id

 

select * from 学生表 join 选课表 on 学生表.id=选课表.sid join 课程表 on 选课表.cid=课程表.id

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值