指定字段组合不重复记载
类型说明根本语法select distinct 字段名 from 数据表名;#distinct 表示去重;示例select distinct username from users;示例说明表示查询users表中username不重复的记载 (1)like暗昧查询(%表示通配符)
示例:
select * from users where username like '王%'; #表示查询姓名中姓王的数据
复制代码
(2)限定查询的结果集
类型说明根本语法select 字段 from 表名 limit 数量;示例select * from users limit 3;示例说明查询users表中的前3条数据 (3)分组查询
类型说明根本语法select 字段 from 表名 group by 字段名;示例select username from users group by username;示例说明查询users表中的数据按用户名分组,查询总共有哪些用户; (4)分组统计
类型说明根本语法select count(字段名) ,字段名 from 表名 group by 字段名;示例select count(*) as 数量,province from users group by province ;示例说明统计users表中各个省份的明星的数量; (5)结果集过滤
类型说明根本语法select count(字段名) as result,字段名 from 表名 group by 字段名 having 条件;示例select count(*) as result,province from users group by province having result >=2;示例说明统计users表中明星的数量大于便是2的省份; (6)结果集排序
单字段排序,根本语法:
select 字段名 from 数据表名字 order by 字段 排序关键字;
复制代码
关键词说明asc升序排序(默认值)desc降序排序 示例:
select * from users order by age asc; #查询出users的数据,按照age字段的升序排序
复制代码
多字段排序:
类型说明根本语法select 字段名 from 表名 order by 字段1 desc示例select * from users order by money desc ,age asc;示例说明查询users表中所有的数据,按照money字段降序,若money字段值一样,按照age字段升序
限定排序后的结果集:
类型说明根本语法select 字段名 from 表名 order by 字段 排序规则 limit 数量;示例select * from users order by money desc limit 3;示例说明查询users表中所有的数据,按照money字段降序,最有钱的3个人;
结果集区间选择:
类型说明根本语法select 字段名 from 表名 order by 字段 排序规则 limit 偏移量 数量;示例select * from users order by money desc limit 3 3;示例说明查询users表中按照money字段降序,从第4条数据开始往后取3条数据; 3. 更新数据
使用update语句来更新数据表中的数据,语法如下:
update 数据表名 set 字段1 = 新的值, 字段2 = 新的值,... where 条件;
复制代码
例如,将名为users的数据表中id为1的记载的name字段更新为John Smith:
update users set name = 'John Smith' where id = 1;
类型说明示例sum求和select sum(money) as 别名 from users;统计users表中的money字段的总和count统计数量select count(id) as 别名 from users;统计users表中的数据总条数max最大值select max(money) as 最大值 from users;统计users表中的money字段的最大值min最小值select min(money) as 最大值 from users;统计users表中的money字段的最小值avg均匀值select avg(money) as 最大值 from users;统计users表中的money字段的均匀值 6.联合查询
insert into user(username,password,gid) values('张三',123,2),('李四',987,4),('王五',5677,1),('赵六',88776,3),('宋琦',23435,0),('刘元',34545,7),('郭德纲',456,2),('王波',123,0),('王强',123,3),('宋桥',123,3);
复制代码
create table goods( id int auto_increment, name char(100), price int(20), primary key(id));
复制代码
insert into goods(name,price) values('奥迪',99999),('比亚迪',99999),('奔驰',99999),('大众',99999),('特斯拉',99999),('宝马',99999),('丰田',99999);
复制代码
6.1内毗连
隐式内毗连
类型说明示例根本语法select 表1.字段名【as 别名】,表n.字段名 from 表1【as 别名】,表n where 条件;示例select user.username,goods.name from user,goods where user.gid=goods.id;示例说明查询用户表中的哪些用户购买过商品以及商品名称;gid和goods中的id必须一一对应 注意:以上的方式属于隐式内毗连,是由于sql语句中未出现inner join关键字。
显式内毗连
类型说明示例根本语法select 表1.字段名【as 别名】,表n.字段名 from 表1 inner jion 表n on 条件;示例select user.username,goods.name from user inner join goods on user.gid=goods.id;示例说明查询用户表中的哪些用户购买过商品以及商品名称;gid和goods中的id必须一一对应 注意:在显式内毗连,通过inner join 关键字实现表之间的毗连,inner可以省略。
6.2外毗连
外毗连之左毗连
类型说明示例根本语法select 表1.字段名【as 别名】,表n.字段名 from 表1 left jion 表n on 条件;示例select * from user left join goods on user.gid=goods.id;示例说明以(左表suer)为主,查询出用户购买过哪些商品,而且将商品信息查询出来; 注意:左外毗连会把左表中所有的数据查询出来,会把右表中符合条件的数据查询出来。
外毗连之右毗连
类型说明示例根本语法select 表1.字段名【as 别名】,表n.字段名 from 表1 right jion 表n on 条件;示例select * from user right join goods on user.gid=goods.id;示例说明以(右表goods)为主,查询出哪些商品被用户购买过,而且将用户信息查询出来; 注意:右外毗连会把右表中所有的数据查询出来,会把左表中符合条件的数据查询出来。
6.3子嵌套查询
类型说明示例根本语法select 字段名 from 表名 where 字段 in (子查询语句);示例select * from user where gid in (select id from goods);示例说明将购买过商品的用户信息查询出来;
7.窗口函数
用法:窗口函数 over(partition by 分组字段 order by 排序字段)
(1)序号函数: