1-6 点此链接→ 零基础3分钟快速入门MYSQL【1-6】
7、数据操作
1、插入数据:
insert into 表名 (字段名1,字段名2....)
values (字段对应的值1,字段对应的值2,.......),(字段对应的值1,字段对应的值2,.......);
2、修改数据:
update 表名 set 字段名1= 新的数据值, 字段名2=新的数据值 [where 条件];
3、删除数据:
(1)delete from 表名;----------删除表里的数据,但是表仍然存在
delete from 表名 [where 条件];------------根据条件进行删除表里的数据
(2)truncate table 表名;---------清空表里的数据,但表仍然存在,而且不能加条件
4、数据查询:
4.1基本查询:
(1)查询全部字段的全部数据:
select * from 表名;
(2)查询部分字段的全部数据:
select 字段名1,字段名2......from 表名;
(3)根据条件查询数据:
select * from 表名 where 条件;
(4)多个条件的查询:
运算符
算术运算符 + - * / %
关系运算符 > < = <> >=
赋值运算符 =
逻辑运算符 and or not && || !
条件与条件之间可以用and、or、in、between...and...来进行条件的连接
(5)模糊查询:
select * from 表名 where 字段名 like '值';----------% _
(6)去重:
select distinct 字段名 from 表名;
示例:查询性别有几种分类
select distinct gender from students;
示例:查询有几个班级
select distinct cls_id from students;
(7)按照单个字段排序:
select * from 表名 order by 字段名 asc/desc;(asc升序-默认,desc降序)
按照多个字段排序:select * from 表名 order by 字段名1 asc/desc,字段名2 asc/desc;
有条件的排序:select * from 表名 where 条件 order by 字段名 asc/desc;
(8)限制查询结果的数量:limit
示例:只看前2条学生信息
select * from students limit 2;
4.2 连接查询:
(涉及到两个表以上,在查询的时候至少要有一个必备的连接条件,这个必备的条件就是两个表共有的那个字段相等,而且这个字段一定在一个表里是主键,在另一个表里是外健)
1、内连接
(1)显示内连接:select 表1.字段,表2.字段 from 表名1 inner join 表名2 on 两个表连接的条件 [where 条件];
示例:查看学生所在班级
select students.name,classes.name from students inner join classes on students.cls_id=classes.id;
提问:查看学生所在班级并且班级是1
(2)隐式内连接:select 表1.字段,表2.字段 from 表名1,表名2 where 两个表连接的条件 [and 其他查询的条件];
示例:查看学生所在班级
select students.name as'姓名',classes.name as '班级'from students,classes where students.cls_id=classes.id;
2、外连接
(1)左外连接:select 字段 from 表名1 left join 表名2 on 两个表连接的条件 [where 条件];------左表的数据全部查询出来,右表符合条件的查询出来
(2)右外连接:select 字段 from 表名1 right join 表名2 on 两个表连接的条件 [where 条件];------右表的数据全部查询出来,左表符合条件的查询出来
5. 聚合函数查询:
count()-计数 sum()-求和 max()-最大值 min()-最小值 avg()-平均值
select 聚合函数名(字段名) from 表名 [where 条件];
select 分组的字段名,聚合函数名(字段名) from 表名 [group by 分组的字段名];
6.子查询:查询嵌套查询
6.1简单子查询:
select * from 表名 where 字段名=(select 字段名 from 表名);-------子查询的结果只有一个值
示例:查看刘德华同学的所在班级的所有同学
select * from students where cls_id = (select cls_id from students where name = '刘德华');
6.2ANY/SOME子查询
select * from 表名 where 字段名=any(select 字段名 from 表名);--------子查询的结果有多个值,等于其中的任意一个值
示例:查看赵老师所带的学生信息
select * from students where cls_id = any(select id from classes where teacher_id = (select id from teachers where name='赵老师'));
6.3 All子查询
select * from 表名 where 字段名>all(select 字段名 from 表名);--------子查询的结果有多个值,大于所有值
示例:查看学生所在班级
select * from students where cls_id >= all(select id from classes where teacher_id = (select id from teachers where name='赵老师'));
6.4 EXISTS子查询
示例1:删除表
DROP TABLE IF EXISTS temp;
eg: drop table if exists students;
示例2:查看存在王老师的班级表
select * from classes where exists (select * from teachers where name='王老师');
select * from 表名 where exists (select 字段名 from 表名);------子查询如果有查询的结果,外查询就执行
6.5 NOT EXISTS子查询
示例:创建教师表
create table IF NOT EXISTS teachers( id int primary key, name varchar(20));
可避免重复创建。
标签:入门,MYSQL,查询,关系数据库,字段名,表名,where,id,select From: https://blog.csdn.net/weixin_56261190/article/details/143331912