CRUD : Create(创建), Retrieve(读取),Update(更新),Delete(删除)
INSERT [INTO] table_name
[(column [, column] ...)]
VALUES (value_list) [, (value_list)] ...
value_list: value, [, value] ...
INSERT ... ON DUPLICATE KEY UPDATE column = value [, column = value] ...
SELECT
[DISTINCT] {* | {column [, column] ...}
[FROM table_name]
[WHERE ...]
[ORDER BY column [ASC | DESC], ...]
LIMIT ...
CREATE TABLE exam_result (
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20) NOT NULL COMMENT '同学姓名',
chinese float DEFAULT 0.0 COMMENT '语文成绩',
math float DEFAULT 0.0 COMMENT '数学成绩',
english float DEFAULT 0.0 COMMENT '英语成绩'
);
INSERT INTO exam_result (name, chinese, math, english) VALUES
('唐三藏', 67, 98, 56),
('孙悟空', 87, 78, 77),
('猪悟能', 88, 98, 90),
('曹孟德', 82, 84, 67),
('刘玄德', 55, 85, 45),
('孙权', 70, 73, 78),
('宋公明', 75, 65, 30);
如果你的数据本身就是有序的,那么查询是也是需要有排序的
因为:返回的顺序是未定义的,别人可能会修改你的数据
运算符 说明
>, >=, <, <= 大于,大于等于,小于,小于等于
= 等于,NULL 不安全,例如 NULL = NULL 的结果是 NULL
<=> 等于,NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1)
!=, <> 不等于
BETWEEN a0 AND a1 范围匹配,[a0, a1],如果 a0 <= value <= a1,返回 TRUE(1)
IN (option, …) 如果是 option 中的任意一个,返回 TRUE(1)
IS NULL 是 NULL
IS NOT NULL 不是 NULL
LIKE 模糊匹配。% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字符
AND 多个条件必须都为 TRUE(1),结果才是 TRUE(1)
OR 任意一个条件为 TRUE(1), 结果为 TRUE(1)
NOT 条件为 TRUE(1),结果为 FALSE(0)
英语成绩及格的
= and <=>
<=>不建议使用,建议使用 IS NULL和IS NOT NULL
[a0,a1]
limit永远在最后的未知
UPDATE table_name SET column = expr [, column = expr ...]
[WHERE ...] [ORDER BY ...] [LIMIT ...]
DELETE FROM table_name [WHERE ...] [ORDER BY ...] [LIMIT ...]
职业素养:
别人让你删除表
先备份(给表起个别名,然后保存)
然后输出表的数据
日志:承担很大的功能要求
delete会更新bin
truncate不更新bin
删除表内重复数据
COUNT([DISTINCT] expr) 返回查询到的数据的 数量。NULL不计入总数 ,‘ ’计入总数
SUM([DISTINCT] expr) 返回查询到的数据的 总和,不是数字没有意义
AVG([DISTINCT] expr) 返回查询到的数据的 平均值,不是数字没有意义
MAX([DISTINCT] expr) 返回查询到的数据的 最大值,不是数字没有意义
MIN([DISTINCT] expr) 返回查询到的数据的 最小值,不是数字没有意义
聚合函数不能和特定函数放在一起,容易出错的
但是因为一些版本的原因,有些会直接报错,有些则会错误输出
select column1, column2, .. from table group by column;
EMP员工表
DEPT部门表
SALGRADE工资等级表
如何显示每个部门的平均工资和最高工资
显示每个部门的每种岗位的平均工资和最低工资
group by先对数据进行分组
显示平均工资低于2000的部门和它的平均工资
having经常和group by搭配使用,作用是对分组进行筛选,作用有些像where
两者的执行位置,次序时不同的!
where:过滤表中数据
having:过滤分组数据