一、子查询
子查询就是嵌套的 select 语句,可以理解为子查询是一张表
语法:
where子句中使用子查询
案例:
找出高于平均薪资的员工信息。
from 语句中使用子查询
在 from 语句中使用子查询,可以将该子查询看做一张 表
案例:
找出每个部门平均薪水的等级。
select 语句中使用子查询
案例:
找出每个员工所在的部门名称,要求显示员工名和部门名。
二、limit的使用
limit是mysql特有的,其他数据库中没有。
limit取结果集中的部分数据
语法机制:
limit startIndex, length
startIndex表示起始位置,从0开始,0表示第一条数据。
length表示取几个
limit是sql语句最后执行的一个环节:
案例:
取出工资前5名的员工
思路:降序取前5个
找出工资排名在第4到第9名的员工
通用的标准分页sql
每页显示pageSize条记录:
第pageNo页:(pageNo - 1) * pageSize, pageSize
pageSize是什么?是每页显示多少条记录
pageNo是什么?显示第几页
三、表
创建表
建表语句的语法格式:
create table 表名( 字段名1 数据类型, 字段名2 数据类型, 字段名3 数据类型, .... );
MySql 常用数据类型
类型 | 描述 |
Char(长度) | 定长字符串,存储空间大小固定,适合作为 主键或外键 |
Varchar(长度) | 变长字符串,存储空间等于实际数据空间 |
double(有效数字位数,小数位) | 数值型 |
Float(有效数字位数,小数位) | 数值型 |
Int( 长度) | 整型 |
bigint(长度) | 长整型 |
Date | 日期型 年月日 |
DateTime | 日期型 年月日 时分秒 毫秒 |
BLOB | Binary Large OBject(二进制大对象) |
CLOB | Character Large OBject(字符大对象) |
char和varchar怎么选择?
在实际的开发中,当某个字段中的数据长度不发生改变的时候,是定长的,例如:性别、生日等都是采用char。
当一个字段的数据长度不确定,例如:简介、姓名等都是采用varchar。
案例:
创建学生表: 学生信息包括: 学号、姓名、性别、班级编号、生日 学号:bigint 姓名:varchar 性别:char 班级编号:int 生日:char
create table t_student( no bigint, name varchar(255), sex char(1), classno int, birthday char(10) );
查看表结构:
插入数据:insert
语法格式:
insert into 表名(字段名1,字段名2,字段名3,....) values(值1,值2,值3,....)
字段的数量和值的数量相同,并且数据类型要对应相同。
给表中插入数据:
insert into t_student values(1,'jack','0',20200911,'1986-10-23'); insert into t_student values(2,'lucy','女',20200911,'1986-10-23');
查看表中数据:
修改数据:update
语法格式:
update 表名 set 字段名1=值1,字段名2=值2... where 条件;
注意:没有条件整张表数据全部更新。
修改表中的数据:
update t_student set name='zhangsan',sex='女',birthday='1995-10-23' where no=1; update t_student set name='lisa',classno=20200811,birthday='1999-05-06' where no=2;
查看表中数据:
删除数据:delete
语法格式:
delete from 表名 where 条件;
删除表中数据:
delete from t_student where no=1; delete from t_student where no=2;
当前表为一个空表: