sql:mysql查询数据 1.基本查询 查询所有字段 select * from table_name;
查询指定字段 select 字段,字段 from table_name;
as起别名 select 字段 as name from table_name;
表名.字段 as给表起别名 select s.name from student as s;
distinct去重复 select distinct gender from student;
2.条件查询 1. select * from student where age > 18;
where 字段 [>,<或者!=] 条件 逻辑运算: and or not
2,模糊查询 like:% 替换0个或者多个 _替换一个 select name from students where name like ‘小%’;#以小开始
查询有小的:select name from students where name like ‘%小%’;
查询有两个字的:select name from students where name like ‘__’;
至少两个 :select name from students where name like ‘__%’;
rlike 正则表达式 select name from students where name rlike ‘^周.*’; 贪婪非贪婪
3.范围查询 非连续 in select name, age from students where age in (12,18,34)
非连续 not in 连续 between … and … not between … and … 年龄不在18到34 select name,age from students where age not between 18 and 34;
4.空判断 is null
is not null
a = None a谁也没有指向 a = ‘’ a指向一个空的字符串
3.排序 order by字段 asc 从小到大 desc 从大到小 在查询语句后加上order by xxx [order by[desc]]
order by支持多个字段 order by heigh desc, id desc; 先写的谁,就按照谁先排序
4.聚合函数 总数count: select count(*) as 男性人数 from students where gender = 1;
最大值max select max(age) from students ;
最小min 求和sum 平均值 avg select 表达式 from xxx;
四舍五入 round(结果,保留几位小数) 不精确计算 不适合精确处理带小数点的 不能放入两个表达式,因为他不知道把数据给谁 ceil加1 天花板 floor 取小 地板
5.分组 group by分组 分组的意义是和聚合一起用,先分组,再取数据 select gender, count(*) from students group by gender; gender代表的意义是必须能唯一区分分组的特征的字段,再结合聚合表达式筛选出信息
group_concat显示组中的各类信息 having对分组进行条件判断 where再gruop by前 having在后 where对结果判断,having对分组判断 group by常和having搭配使用
6.分页 limit 限制查询出来的个数 limit start起始下标,num查询个数 limit (第N页-1)* 每页个数,每页个数 limit总要写在最后面
7.连接查询 连接多个表,取多个表中公共部分
内连接:取交集 inner join… on条件 select * from students inner join classes on students.cls_id = classes.id;
按要求显示 select students.*, classes.name from students inner join classes on students.cls_id = classes.id;
as可以起别名
左连接 left join… on 右连接 right join … on 没啥意义 查询的结果再查询 查询语句 …+ having… 查询语句…+ where…
8.自关联 table_name1 inner join table_name1 on… having…
9.子查询 先写一个select 再嵌套一个select
10.数据库的设计: 遵循三范式: 第一范式:列的原子性,不能再拆分
第二范式:第一范式之上,必须有主键,主键之外的字段直接依赖于所有的主键,不能依赖于主键的一部分
第三范式:第二范式之上,不能存在依赖传递
E-R模型 实体-关系 实体A对实体B为1对1,则在表A或表B中创建一个字段,存储另一个表的主键值 实体A对实体B为1对多:在表B中创建一个字段,存储表A的主键值 实体A对实体B为多对多:新建一张表C,这个表只有两个字段,一个用于存储A的主键值,一个用于存储B的主键值 50条军规 https://mp.weixin.qq.com/s/Yjh_fPgrjuhhOZyVtRQ-SA --------------------- 作者:JessePinkmen 来源:CSDN 原文:blog.csdn.net/JessePinkme… 版权声明:本文为博主原创文章,转载请附上博文链接!
查询指定字段 select 字段,字段 from table_name;
as起别名 select 字段 as name from table_name;
表名.字段 as给表起别名 select s.name from student as s;
distinct去重复 select distinct gender from student;
2.条件查询 1. select * from student where age > 18;
where 字段 [>,<或者!=] 条件 逻辑运算: and or not
2,模糊查询 like:% 替换0个或者多个 _替换一个 select name from students where name like ‘小%’;#以小开始
查询有小的:select name from students where name like ‘%小%’;
查询有两个字的:select name from students where name like ‘__’;
至少两个 :select name from students where name like ‘__%’;
rlike 正则表达式 select name from students where name rlike ‘^周.*’; 贪婪非贪婪
3.范围查询 非连续 in select name, age from students where age in (12,18,34)
非连续 not in 连续 between … and … not between … and … 年龄不在18到34 select name,age from students where age not between 18 and 34;
4.空判断 is null
is not null
a = None a谁也没有指向 a = ‘’ a指向一个空的字符串
3.排序 order by字段 asc 从小到大 desc 从大到小 在查询语句后加上order by xxx [order by[desc]]
order by支持多个字段 order by heigh desc, id desc; 先写的谁,就按照谁先排序
4.聚合函数 总数count: select count(*) as 男性人数 from students where gender = 1;
最大值max select max(age) from students ;
最小min 求和sum 平均值 avg select 表达式 from xxx;
四舍五入 round(结果,保留几位小数) 不精确计算 不适合精确处理带小数点的 不能放入两个表达式,因为他不知道把数据给谁 ceil加1 天花板 floor 取小 地板
5.分组 group by分组 分组的意义是和聚合一起用,先分组,再取数据 select gender, count(*) from students group by gender; gender代表的意义是必须能唯一区分分组的特征的字段,再结合聚合表达式筛选出信息
group_concat显示组中的各类信息 having对分组进行条件判断 where再gruop by前 having在后 where对结果判断,having对分组判断 group by常和having搭配使用
6.分页 limit 限制查询出来的个数 limit start起始下标,num查询个数 limit (第N页-1)* 每页个数,每页个数 limit总要写在最后面
7.连接查询 连接多个表,取多个表中公共部分
内连接:取交集 inner join… on条件 select * from students inner join classes on students.cls_id = classes.id;
按要求显示 select students.*, classes.name from students inner join classes on students.cls_id = classes.id;
as可以起别名
左连接 left join… on 右连接 right join … on 没啥意义 查询的结果再查询 查询语句 …+ having… 查询语句…+ where…
8.自关联 table_name1 inner join table_name1 on… having…
9.子查询 先写一个select 再嵌套一个select
10.数据库的设计: 遵循三范式: 第一范式:列的原子性,不能再拆分
第二范式:第一范式之上,必须有主键,主键之外的字段直接依赖于所有的主键,不能依赖于主键的一部分
第三范式:第二范式之上,不能存在依赖传递
E-R模型 实体-关系 实体A对实体B为1对1,则在表A或表B中创建一个字段,存储另一个表的主键值 实体A对实体B为1对多:在表B中创建一个字段,存储表A的主键值 实体A对实体B为多对多:新建一张表C,这个表只有两个字段,一个用于存储A的主键值,一个用于存储B的主键值 50条军规 https://mp.weixin.qq.com/s/Yjh_fPgrjuhhOZyVtRQ-SA --------------------- 作者:JessePinkmen 来源:CSDN 原文:blog.csdn.net/JessePinkme… 版权声明:本文为博主原创文章,转载请附上博文链接!