1、查询语句:
select * from 表名 as 表别名;
select 表别名.列名,列名, ... from 表名 as表别名;
select 表别.列名 as列别名,列名 ... as 列别名 from 表名 as表别名;
2、distinct关键字
select distinct 字段名from表名;
--相同学号只取一次,distinct只能在select后面,不能在字段后面
- 1
- 2
3、select排序
select distinct 字段 from表名 order by 某个字段;--默认升序排列
select distinct 字段 from表名 order by 某个字段 desc;--降序排列
- 1
- 2
4、select 的函数语句
select rand();--求随机数
select sqrt(2);--求2的开方
select 表名*字段名,@a:=@a+1 from 字段,(select @a:=0)a;
--嵌套语句进行增加行键,a是这个(select @a:=0)临时表的表别名
- 4
5、where语句
select *from 表名 where 字段 between 下限 and 上限 not in (值1,值2);--筛选值
- 1
6、查找某个表中不在区间的记录
select *from 表名 where not(区间);
- 1
7、判断某个表的字段是否为空
select *from 表名 where 字段 is not null;
- 1
8、查找某个字段为值的所有记录
select * from 表名 where 字段 in(值1,值2,...);
- 1
9、模糊查询like:主要用于查询字符串类型的字段
select *from 表名 where 字段 like'_%';--_匹配一个字符, %表示【匹配任意字符
- 1
10、联合查询join:用于多表查询
select 字段名1 别名1,字段名2 别名2 from 表名1,表别名1 join 表名2 表别名2 on 表别名1.字段=表别名2.字段 where 判断条件;
- 1
11、自连接:易产生笛卡尔交集,会导致数据计算量激增导致性能急剧下降
select 字段名 from 表名 表别名1 where 条件;
select 字段名 from 表名 表别名2 where 条件;
select 表别名1.字段,表别名2.字段 from 表名 表别名1 join 表名 表别名2 on 条件;
--优化条件,先从表1筛选出字段,拿出字段再与表2进行筛选
select 表别名1.字段,表别名2.字段 from 表名 表别名1 join 表名 表别名2 where 条件;
--会产生笛卡尔交集,会导致数据量激增
- 4
- 5
- 6
12、 左连接:以左表为主
select 字段名1 别名1,字段名2 别名2 from 表名1,表别名1 left join 表名2 表别名2 on 表别名1.字段=表别名2.字段 where 判断条件;
- 1
13、右连接:以右表为主
select 字段名1 别名1,字段名2 别名2 from 表名1,表别名1 right join 表名2 表别名2 on 表别名1.字段=表别名2.字段 where 判断条件;
- 1
14、限制展示多少条,默认下标为0
SQL语句 limit 起始坐标,显示条数;
SQL语句 limit 显示条数 offset 起始坐标;
- 1
- 2
15、子查询(遇事不决就用子查询)
select 待查字段 from 表1 where 字段 in(select 与字段关联数据 from 表2 where 条件);
- 1
16、MySQL统计函数(聚合函数)
--count()函数,其中*号代表所有字段,某个字段就是按照列,1就是自己添加一个字段按列统计
select count(*、某个字段、1) from 表 where 条件;
--sum()函数用于统计,字段类型必须为数值类型
select sum(字段名) from 表 where 条件;
--avg()函数求平均数,字段类型必须是数值类型
select avg(字段名) from 表 where 条件;
- 4
- 5
- 6
17、group by分组按照某一个字段值进行分组
select 待查内容 from 表 group by 字段名 where 条件;
- 1
18、having关键字和where关键字一样,都是用于筛选判断,where在分组之前进行筛选,having是分组后进行筛选
select 待查内容 from 表 group by 字段名 having 条件;
- 1
19、复制新表:create table
create table 新表 as select* from 旧表;
create table 新表 as select* from 旧表 where 1=0;--只复制表结构
- 1
- 2
20、复制表,新表结构必须和旧表结构一样
insert into 新表 select * from 旧表;
insert into 新表 select 字段1,字段2 from 旧表;
- 1
- 2
21、case-when语句
--筛选变量(字段内属性),当变量等于值时,新增字段的属性值为值1,其他的全为值2
case 变量 when 值 then 值1 else 值2 end as '新增字段';
--筛选变量(字段内属性),当变量属性值满足表达式时,新增字段的属性值为值1,其他的全为值2
case 变量 when 表达式 then 值1 else 值2 end as '新增字段';
- 4