聚合函数 count sum avg max min 如果查的字段名下的数据为null,则不参与计算
select count(*) from student 计算一共多少行
select count(id) from student 计算一共有多少个id
select sum(age) from student 所有学生的年龄的和
select avg(ifnull(score,0)) from student 求所有学生的平均成绩,如果成绩为null就赋值0
多个查询窗口,进行查询操作
按条件查询公司成员(employee),姓名(name)、学历(edu)、部门(dept)、职位(work)
接口的抽象方法如下:
public List<Employee> queryEmployee(String name, String edu, String dept, String work);
实现类中的sql语句书写如下:
String sql = "select e.*,post.id as pid,branch.id as bid,post.post_name,branch.branch_name "
+ "from employee as e inner "
+ "join post on post.id=e.post_id "
+ "inner join branch on branch.id=e.branch_id "
+ "where 1=1 ";
if(name!=null&&!"".equals(name)) {
sql += "and e.employee_name like '%"+name+"%'";
}
if(edu!=null&&!"".equals(edu)) {
sql += "and e.edu='"+edu+"'";
}
if(dept!=null&&!"".equals(dept)) {
sql += "and dept.dept_name='"+dept+"'";
}
if(work!=null&&!"".equals(work)) {
sql += "and work.work_name='"+work+"'";
}
逻辑运算符
ALL 和子查询的结果逐一比较,必须全部满足时表达式的值才为真
AND 允许where子句中存在多个条件,并且多个条件一起满足要求。
ANY 和子查询的结果逐一比较,其中一条记录满足条件则表达式的值就为真。
BETWEEN 表示一个范围搜索,大于等于下限,并且小于等于上限。
EXISTS 判断子查询是否存在数据,如果存在则表达式为真,反之为假
IN 允许在 where 子句中规定多个值
LIKE 用于比较相似的值,利用通配符来实现模糊查询。
NOT 与运算符含义相反
OR 允许where子句中存在多个条件,只要满足其中任意个一个条件即可。
IS NULL Is NULL操作符用来比较NULL的值。
delete语句删除
不加where条件的delete语句就能删除所有数据
delete from student
truncate语句删除
truncate table student
delete 语句与 truncate 语句的区别:
delete会记录日志,意味着删除后的数据还可以恢复,但是效率低。
truncate不会记录日志,删除后的数据不能恢复, 但是效率高。
truncate不能用于有外键约束引用的表。
delete 删除所有数据时,自动增长的值不会恢复到默认值开始,自动增长会按原值继续增长。
truncate 删除数据时,自动增长的值会恢复到默认值开始。
MYSQL数据类型
数据类型是数据的一种分类,是按照数据结构来分类的。
数据类型的出现是为了把数据分成所需内存大小不同的数据来进行存储。
数据类型分为了五种
整数、浮点型、字符串、日期时间、二进制
整数数据类型
类型 大小 范围(有符号) 范围(无符号) 用途
tinyInt 1字节 (-128,127) (0,255) 小整数值
smallInt 2字节 (-32 768,32 767) (0,65 535) 大整数值
mediumInt 3字节 (-8 388 608,8 388 607) (0,16 777 215) 大整数值
int 4字节 (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值
bigInt 8字节 (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值
浮点数据类型
类型 大小 精度 用途
float 4字节 7位小数 单精度浮点数
double 8字节 15位小数 双精度浮点数
decimal(M,D) 17字节 30位小数 小数值
DECIMAL(M,D) M 表示精度,数据的总长度,D 表示标度,小数点后的长度,M必须大于D
decimal(5,2) 表示 保留5位数,保留小数点2位数, 例如存储小数120.3434时,存入数据库为120.34
字符串数据类型
类型 范围 用途
char(n) 0-255 定长字符串
varchar(n) 0-65535 变长字符串
tinytext 0-255 短文本字符串
text 0-65 535 长文本数据
mediumtext 0-16 777 215 中等长度文本数据
longtext 0-4 294 967 295 极大文本数据
char(n) 表示定长长度
varchar(n)表示变成长度
当我们存入abc三个字符时,char(5)实际占用5个字符, 而varchar(5)实际只占用3个字符
时间日期数据类型
类型 大小 格式 用途
date 3字节 YYYY-MM-DD
(2000-10-10) 日期值
time 3字节 HH:MM:SS
(12:10:05) 时间值或持续时间
year 1字节 YYYY
(2000) 年份值
datetime 8字节 YYYY-MM-DD HH:MM:SS
(2000-10-10 12:10:05) 混合日期和时间值
timestamp 4字节 YYYYMMDD HHMMSS 混合日期和时间值,时间戳
二进制数据类型
类型 大小 用途
tinyblob 0-255字节 不超过 255 个字符的二进制字符串
blob 0-65 535字节 二进制形式的长文本数据
mediumblob 0-16 777 215字节 二进制形式的中等长度文本数据
longblob 0-4 294 967 295字节 二进制形式的极大文本数据