一、运算符
1、算术运算符(+、-、*、/、%)
2、关系运算符(>、>=、<、<=、=、!=)
注意: "="在where条件判断是否相等 在全局变量中是赋值
3、逻辑运算符(and、or、not)
二、高级增(Create)
语法:insert into 表名 (字段1,...,字段n) values (值1,...,值n);
一次插入多行数据,效率比单行插入要高
insert into 表名
(字段1,....,字段n)
values
(值1,....,值n),
(值1,....,值n),
......
(值1,....,值n);
三、高级查(Select)
1、语法
语法: select 列名 from 表名 [where 条件][group by 分组] [having 条件][order by 排序][limit 限制];
2、字段名相关
- 如果有字段别名(as)
语法:select 字段 as 别名,字段2 as 别名,字段3 from表名;
- 查询语句中的选项(all 和 distinct)
语法:select [选项] 字段 from 表名;
选项:all - 显示所有数据,默认 distinct - 去重复
3、where子句/条件
- select * from stu; 查询出所有数据
- select * from stu where 1; 显示所有(1-真所有条件都成立)
select * from stu where 0; 全部不显示(0-假都不成立)
4、MySQL运算符使用
-
in | not in
概念:判断字段值是否在指定集合中
语法:
select * from 表名 where 字段 in(值1,...,值n);
select * from stu where address = '北京';
select * from stu where address in ('北京');
注意: in的执行效率没有使用关系运算符高
-
between and | not between and
概念:判断字段是否在指定范围(含本身)
语法:select * from 表名 where 字段 between 值1 and 值2;
-
is null | is not null
注意:
设计表的时候避免出现null数据,所以一般都加上not null
空字符串和null不是一个概念
-
通配符
- _ (下划线): 表示任意一个字符
- % : 表示任意字符
-
模糊查询(like)
语法:select * from 表名 where 字段 like ‘值%_组合使用’
5、分组
- 聚合函数
聚合函数 | 描述 |
---|---|
sum() | 求和 |
avg() | 求平均值 |
max() | 最大值 |
min() | 最小值 |
count() | 记录数 |
- 分组查询(group by)
概念:以分组的形式展示数据,如按性别分组、地区分组等
目的:统计数据
语法:select 列名 from 表名 group by 待分组字段名;
按学生性别分组统计平均年龄:
select sex,avg(age) from stu group by sex;
- 回溯统计(with rollup)
概念:在分组的结果之上进行相同的统计(按分组统计规则重新统计表数据)
select address,sum(money) from stu group by address with rollup;
with rollup前面是获取每个地区总资金,整个函数的意思就是获取所有地区总资金
- 结果条件(having)
where条件是对表的数据进行赛选
having是对查询的结果再次进行筛选(通常配合分组使用)
按性别分组,统计各性别人数 超过5人的:
select sex,count(id) from stu group by sex having count(id) > 5;
select sex,count(id) as num from stu group by sex having num > 5;
6、排序(order by)
概念:就是按照指定字段值升序(asc)或降序(desc)
语法:select 字段 from 表名 order by 字段 asc | desc
按年龄升序,如果年龄一样大则按钱升序
select * from stu order by age asc,money asc;
7、限制(limit)
语法:select 字段 from 表名 limit 起始位置,显示条数
说明:起始位置不写则默认0
根据id升序,查询前3个学生
select * from stu order by id asc limit 3;
四、高级改(Update)
语法:update 表名 set 字段1=值1,字段n=值n [where条件][order by 排序] [limit限制];
查询性别为男按照年龄降序取2条,将地址改为男人帮:
select * from stu where sex = '男' order by age desc limit 2;
update stu set address='男人帮' where sex = '男' order by age desc limit 2;
五、高级删(Delete)
语法:delete from 表名 [where条件][order by 排序] [limit 限制];
删除编号为1的数据:
delete from stu where id = 1;