子查询就是嵌套的select语句,可以理解为子查询是一张表。
在from语句中使用子查询,可以将该子查询看做一张表
1.查询员工信息,查询哪些人是管理者,要求显示出其员工编号和员工姓名 1.先筛选出管理者的编号 select distinct mgr from emp where mgr is not null; 2.把步骤1得出的表看为t,与表emp 进行连接,即可 select a.empno,a.ename from emp a join (select distinct mgr from emp where mgr is not null) t on a.empno=t.mgr; 2.查询各个部门的平均薪水所属等级,需要显示部门编号,平均薪水,等级编号 1.先计算每个部门的平均薪水 select a.deptno,avg(sal) from emp a group by a.deptno; 2.把步骤1得出的表看作表e,与salgrade的表进行连接,即可 select e.deptno,e.avgsal,s.grade from (select a.deptno,avg(sal) as avgsal from emp a group by a.deptno) e join salgrade s on e.avgsal between s.losal and hisal;其中m是指记录开始的index,从0开始,表示第一条记录 n是指从第m+1条开始,取n条。
select * from tablename limit 2,4即取出第3条至第6条,4条记录
3.3.2.pageSize是什么?是每页显示多少条记录
3.3.3.pageNo是什么?显示第几页
显示第2页的10条记录
java代码{ int pageNo = 2; // 页码是2 int pageSize = 10; // 每页显示10条 limit (pageNo - 1) * pageSize, pageSize }从emp表中取出前5条数据
select * from emp limit 0,5;(0可以省略,因为默认从第0个开始) 从emp表中取得工资最高的前3位 select * from emp order by sal desc limit 5;基本语法:
create table 表名( 字段名 数据类型(字段长度) 字段约束, 字段名 数据类型(字段长度), …… )字段中的数据长度不发生改变的时候,是定长的,例如:性别、生日等都是采用char。 字段的数据长度不确定,例如:简介、姓名等都是采用varchar。
4.4.1.创建学生表:
学生信息包括: 学号、姓名、性别、班级编号、生日 学号:bigint 姓名:varchar 性别:char 班级编号:int 生日:char create table t_student( no bigint, name varchar(255), sex char(1), classno varchar(255), birth char(10) );4.5.1.insert——插入 insert into 表名 (字段名1,字段名2,……) values(字段名1的值,字段名2的值,……);
插入数据:学号2020,姓名zs,性别f,班级编号001,生日2000-1-1 insert into t_student(no,name,sex,classno,birth) values (2020,'zs','f',001,'2000-1-1'); 插入数据:学号2021,姓名ww,性别m,班级编号002,生日1999-12-31 insert into t_student( ) values (2021,'ww','w',002,'1999-12-31'); 插入数据:学号2019,姓名zl,性别f,班级编号003,生日1998-11-11 insert into t_student( ) values (2019,'zl','f',003,'1998-11-11');4.5.2.表复制
create table 复制后的表 as select 字段1,字段2,… from 待复制的表; 把表t_student 复制到 t_student_copy 将查询的数据直接放到已存在的表中 insert into 已存在待插入的表 select * from 待复制的表; insert into t_student_copy select * from t_student;4.5.3.update——可以修改数据,可以根据条件修改数据
update 表名 set 字段名称1=需要修改的值1, 字段名称2=需要修改的值2 where …….如果不加where条件,那所有的都会被修改
把每个人的学号统一改成2030 update t_student set no=2030; 所有男生的班级编号改为11 update t_student set classno='11' where sex = 'f';4.5.4.delete——可以删除数据,可以根据条件删除数据
语法格式:delete from 表名 where …条件…;删除表t_student_copy中所有男生的数据 delete from t_student_copy where sex='f'; 删除表t_student_copy中所有数据 delete from t_student_copy;