高级更新
update 表名 set 字段= 值 【 where 】;
高级新型 语法
UPDATE 表名 SET 字段 = 值 【where条件】【limit 更新数量】;
【高级操作】update student set name = 'jake' where name = 'xiaoming' limit 3;
高级删除
Delete from student where name = 'jake' limit 10;
删除:如果表中存在主键自增长,那么删除之后,自增长不会还原
思路:数据的删除是不会改变表结构,只能删除表后重新建表
Truncate 表名:--先删除改变,再创建 重置自增长
高级select
基本语法
Select 字段列表/* from 表名【where条件】;
完整语法
Select [select选项] 字段列表【字段别名】/*from 数据源 【where 条件子句】【gruop by 子句】【having 子句】【order子句】【limit子句】;
- Select选项
Select选项:select对查出来的结果的处理方式
All:默认的,保留所有的结果
Distinct:去重,查出来的结果,将重复给去除(所有的字段都相同);
select * from student;
select all * from student;
字段别名:当数据进行查询出来的时候,有时候·名字并不一定就满足需求(多表查询会有同字段名),需要对字段名进行别名:别名
字段名【as】别名
SELECT id, mignZi as 名字, age as 年龄, score as 分数 from student;
文章图片
Paste_Image.png 数据源
数据源:数据的来源 关系型数据库的来源都是数据表:本质上只要保证数据类似二维表最终都可以作为数据源
数据源分为多中: 单表数据源,多表数据源 查询语句
多表数据源
select *from 表名1, 表名2;
子查询:
select * from (select * from 表名) as 别名;
where子句
Where子句:用来判断数据,筛选数据
Where 子句返回的结果:0 或者1,0代表false, 1代表true
判断条件
比较运算符:> 、< 、>= 、!= 、<>(不等于) 、=、like, between and, in/not in
逻辑运算符:&&(and), ||(or), !(not)
where原理:where是唯一一个直接从磁盘获取数据的时候就开始判断;从磁盘取出记录,开始进行where判断:判断的结果,如果判断成立保存到内容;如果失败直接放弃
select * from student WHERE id in(1,3, 5);
-- 逻辑判断
select * from student WHERE id = 3 || id =5;
-- 落在集合中
gruop by子句
Group by:分组,根据某个字段进行分组,(相同的放一组,不同的分到一组 )
基本语法:group by 字段名;
分组的意思:视为了统计数据(按组统计:按分组字段进行数据统计);
SQL:提供了一些列的统计函数:
count(): 统计分组后的记录数;每一组有多少记录
Max(): 统计每一组的最大的值
Min():统计最小的值
Avg():统计平均数
Sum:统计和
select sex, count(*), max(height), min(height), avg(age), sum(age) from student group by sex;
having子句
与where一样:进行条件判断的
where是针对磁盘数据进行判断:进入到内存之后,会进行分组处理:分组结果操作就需要having来处理;
having能做where能做的几乎所有的事情;
。。。。。
Order by子句
根据某个字段进行升序或者降序
order by 字段名 【asc/desc】; -- asc是升序(默认的)
SELECT *from student order BY age ASC;
排序可以进行多个字段排序:先根据某个字段进行排序,然后排序好的内部,在按照某个数据进行再次排序;
select student *from student order by age, score desc;
文章图片
Paste_Image.png Limit子句
方案1,:只用来显示长度(数据量): limit 数据量
方案2:限制起始位置,限制数量:limit 起始位置,长度;
limit 0, 2;
limit 2, 2
limit 4, 2;
limit 6, 2
主要用于实现数据的分页:为用户节省时间,提交服务器的响应效率,减少资源的浪费。
对于用户来讲:可以点击的分页按钮:1,2,3,4,5
对于服务器来讲: 根据用户选择的页码来获取不同的数据:limit offset,length;
length:每一页显示的数据量:基本不变
offset:offset = (页码 - 1) *每页显示量