企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
# 查询数据 ``` select 列名1, 列名2, from 表名 where条件 ``` ## 语法: ``` select*from user where sex!=1; //sex为表的列字段 select*from user where sex=1; //sex为表的列字段 select*from user where age=40 or age=23; //age为列字段 这个意思是40或者23 select*from user where user_name='liudehua'and age=36; //两个条件 select*from user where age between 30 and 60; //between用法 select*from user where age in(36,33); //in() 用法 select*from user where age not in(36,33); // no in() 用法 select*from user where user_name like '%u%'; //模糊查询用法 这里是查含字符串里有u字符的。 select*from user where user_name like '%g'; //模糊查询以某个字符开头实例, 这里是查含字符串里以g开头的字符串。 select*from user where user_name like 'g%'; //模糊查询以某个字符结尾实例, 这里是查含字符串里以g结尾的字符串。 查所有字段用* 不带where条件 把表的所有记录查出来 ``` # 条件付号 ``` and并且的意思与&&相同 or 与 || 相同 < > <= >= != = 逻辑运算符。 between 30 and 60 范围 (多少到多少的意思,这里是30-60的意思) in(36,33); 与or大至相同 not in(36,33); 非36和33的 like '%这里写含有某个字符字符%'; 模糊查询(这个查的必须是字符串) like '这里写含有某个字符字符%'; 以这个字符串开始 模糊查询 (这个查的必须是字符串) like '%这里写含有某个字符字符'; 以这个字符串结束 模糊查询(这个查的必须是字符串) ``` # 改别名 意思:把查询回来的名称改名 ## 语法: ``` select 字段名称 as 改后的字段名称 from 数据库表名; 代码案例:select user_name as name from user; ``` # 字段值连接一起 ## 语法: ``` concat() select concat(字段名,字段名,字段名) from 数据库表名; //可以把几个字段连到一起 select concat_ws("分隔符==",字段名,字段名,字段名) from 数据库表名 //可以用分割连接一起看起来更清楚 ``` ## 代码案例: ``` select concat_ws('==',user_name,age,sex) from user; ``` # 过滤重复值 ## 语法: ``` select distinct 字段名 from 数据库表名; 代码案例:select distinct user_name from user; ``` # LIMIT 查询 限制查询的条数 ## 语法: ``` select *from 表名 limit (从第几个开),(到后面几个) //从1后面开始的2个 代码案例: select*from user limit 0,3; //从第0个开始后面的3个表 ``` # 聚合函数 ## 查询行总数 ###语法: ``` select count(*) from 表名 // 查询表行数 一共多少行 代码案例: select count(id)from user; //查表中id行数 ``` ## 求查询字段的和值 ###语法: ``` select sum(字段名) from 表名; ``` ## 求查询字段的平均值 ``` select avg (字段名) from 表名; 代码案例: select avg(age)from user; //求age字段平均值 ``` ## 求查询字段的最大值 ``` select max(字段名) from 表名 代码案例: select max(age)from user; //求age的最大值 ``` ## 求查询字段的最小值 ``` select min(字段名) from 表名 代码案例: select min(age)from user; //求age的最小值 ``` # 分组查询(聚合查询) ## 语法: ``` select 要分组的字段 from 表名 group by 要分组的字段; //把字段里共同的值分到一个组里 ``` ## 代码案例: ``` select sex from user group by sex; //sex字段分组分组 select avg(age), sex from user group by sex; //两条语句执行 先求平均age(年龄),在把sex(男女)进行分组 ``` # 分组查询条件查询 ## 语法: ``` select 要分组的字段 from user group by 要分组的字段 having 条件 ; ``` ## 代码案例: ``` select avg(age), sex from user group by sex having count(age)>2; //两条语句执行 先求平均age(年龄),在把sex(男女) 并且年龄总行数大于2的 ``` # 连表查询 ``` 2个表或者多个表查询 内连接查询 inner join(显示和隐式) ``` 笛卡尔积 ## 连表查询隐式方法: ## 语法: ``` select*from 表名,另一个表名称 where 条件 select 表名.字段名 from 表名,另一个表名称 where 条件 //这里的点语法与JS一样 (点语法这里也可也用别名法) ``` ## 连表查询内连接(显示方法) ``` select*from 表名inner join 另一个表名称 on 条件 //显示方法(条件也是用点语法) ``` 代码案例: ~~~ select*from guo_article inner join guo_cat on guo_article.cat_id=guo_cat.id; ~~~ ![](https://img.kancloud.cn/a1/41/a1410c20670d87b7f213d5e26aa5751a_1318x81.png) ``` select*from student,mark where mark.stu_id=student.id; //这个意思就是student与mark表一起查 条件里的stu_id是mark的 ,id是student的 这里用的是点语法,与JS的点语法一样,就是包含的意思(父包含子,父里的什么什么子) select*from student,mark where mark.stu_id=student.id and student.id=1; //student与 mark表一起查出,并且查出student.id=1的数据 ``` 代码案例 : ``` select s.name,s.mobile, m.mark,s. id from student as s left join mark as m on m.stu_id=s.id; ``` ## 连表查询左连接 ``` 两个表以左边数据数量为主,右边不够给自动补偿 select*from 表名 left join 另一个表名称 on 条件 代码案例: select*from student left join mark on student.id=mark.stu_id; ``` ## 连表查询右连接 ``` 两个表以右边数据数量为主,左边多出去的不展示 select*from 表名 right join 另一个表名称 on 条件 代码案例: select*from student right join mark on student.id=mark.stu_id; ``` ## 连表查询内连接 ``` 只要有数据的时候就显示出来,没有的不显示(比较智能,用的多,推荐用) select*from 表名inner join 另一个表名称 on 条件 注意:inner left right 不能用where条件否则报错。 ``` # 子查询 select*from 表名 where 字段名 in(外面查询语句的一个条件 ) ## 代码案例: ``` select*from student where id in(select id from student where id>1); //括号里其实是一个条件语句,也就是子查询。 ``` # 联合查询 select 字段名 from 表名 union select 字段名 from 第二个表名 ## 代码案例: ``` select id,neme from php union select id,neme from java; select 字段名 from 表名 union all select 字段名 from 第二个表名 select id,neme from php union all select id,neme from java; ``` ## union与union all 的区别 ``` 当用union 两个表的字段值位置内容如果相同(比如id1都是同一个值),就会去掉一个, 用union all的时候两个表的字段值位置内容如果相同(比如id1都是同一个值),会保留这个2个值,一起展示出出来。 注意:字段必须相等 也就是查询的时候必须是同样个数的字段,共同查1个或者2个。不能表1查一个字段,表2查二个字段。 ``` # union 与join区别 ## union只是将两条select语句的查询结果组合在一起,而join是将两个表建立起关联后再查询。