MySQ的数据查询语言(DQL)

1.DQl(数据查询语言) select
emp 员工信息表 ,emp_id 员工编号,emp_name 员工姓名,emp_sal 员工薪资,emp_bir 员工生日 ,
1.1 查询表中所有数据列结果,采用*号符号
select*from emp; //查询所有的列
1.1.1 查询指定的列,可指定字段属于哪个表。
select emp.emp_id ,emp_name from emp ;

1.1.2 查询 加 条件 where
select *from emp where emp_sal>5000;
select *from emp where emp_bir>'1995-01-01';
1.2 AS
AS子句作为别名,把经过计算或总结的结果用另外一个新名词来代替,as也可省略不写。
//查询指定的列,可用as其别名,as 可以省略
select emp_name as 姓名,emp_sal 薪资 from emp;
1.3 distinct 关键字 去除重复 ALL
去掉SELECT查询返回的记录结果中重复的记录(所有返回列的值都相同),只返回一条
select distinct emp_sal from emp; //只查找薪资不一样的员工信息;
all关键字是默认的,返回所有的记录,distinct与之相反。
1.4 like 模糊查询
select *from emp where emp_bir like '20%'; // %代表0-无数个字符;
select*from emp where emp_bir like '201_'; // 下划线代表一位数;
1.5 in ( ), 在XXX内的
select*from emp where emp_id in(100001,100005,100007);
1.6 between a and b 在a和b之间。
等同与<=和>=;
1.7 查询条件为空或不为空的时候,不能使用等号,可以使用 is null,或者is not null;
1.8 order by 排序升序;
select*from emp order by emp_sal; //由低到高排序 ,默认为asc
select*from emp order by emp_sal desc ; //由高到底排序,desc 降序
1.9 分页查询
limit [m,]n limit n offset m
限制select返回结果的行数
m制定第一个返回记录行的偏移量,不指定返回偏移量为0;
n制定返回记录行的最大数目
示例:
select*from emp limit 3,8; //从第4条开始显示8条员工信息。
#MySQL语句中的注释符,也可以用/*---*/
2.MySQL统计函数
1.count();返回满足select条件的记录总和数,如selectcount
2.sum();返回一列的总和;
select sum(emp_sal) from emp;
3.avg(); 通常作为数值字段或表达列作统计,返回一列的平均值。
4.max(); 可以为数值字段、字符字段或表达式列作统计,返回最大的值。
5.min(); 可以为数值字段、字符字段或表达式列作统计,返回最小的值。
select max(emp_sal) 最大值,min(emp_sal) 最小值,avg(emp_sal) 平均值 form emp;
3.Group by 分组
对所有的数据进行分组统计,分组的一句字段可以有多个,兵一次分组。
having(过滤分组的记录必须满足的次要条件)结合使用,进行分组后的数据筛选;
select em p_sex 员工性别,count(*) 人数 from emp group by emp_sex;
select emp_sex 员工性别,count(*) 人数 from emp having emp_sal>3000 group by emp_sex
select dept_id,max(emp_sal) from emp group by dept_id having max (emp_sal)>5000;
4.多表关联查询方式;
Inner内连接(innner join) ; 内连接查询方式。
//表的别名:emp e,dept d
select e.emp_name,d.dept_name from emp e,dept d where e.dept_id=d.dept_id;
left左外连接(Left join); 左边emp e表中返回所有的记录。
select e.emp_name,d.dept_id from emp e left join dept d on e.dept_id=d.dept_id;
Right 右边连接(Right join);从右表 中返回所有的记录,即便在左()中没有匹配。
select e.emp_name,d.dept_id from emp r right jion dept d on e.dept_id=d.dept_id;
操作符名称 描述
INNERJOIN(JOIN) 如果表中有至少一个匹配,则返回行
LEFTJOIN 即使右表中没有匹配,也从左表中返回所有的行
RIGHTJOIN 即使左表中没有匹配,也从右表中返回所有的行


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值