自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数HarmonyOS鸿蒙开发工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年HarmonyOS鸿蒙开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上HarmonyOS鸿蒙开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注鸿蒙获取)
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
select workaddress as ‘工作地址’ from emp; 对于单个字段选取别名
select distinct emp.workaddress as ‘工作地址’ from emp; #去除重复字段名
![](https://img-blog.csdnimg.cn/direct/920f44ffcc18422fad5b07297bf49af1.png)
### (二)条件查询
![](https://img-blog.csdnimg.cn/direct/328d0dae3e864d029eba5cac2825e501.png)
#查询表中所有数据
select * from emp;
#查询表中年龄=18
select * from emp where age=18;
#查询表中年龄小于等于20
select * from emp where age<=20;
#查询表中身份证号为空
select * from emp where idcard is null;
#查询身份证不为空
select * from emp where idcard is not null;
#查询年龄不等于18
select * from emp where age<>18;
#查询年龄大于等于15小于等于18
select * from emp where age>=15 and age<=18;
select * from emp where age between 15 and 20; #between…and…之间只能由小到大
select * from emp where gender=‘女’ and age < 30;
select * from emp where age=18 or age=38 or age=30;
select * from emp where age in(18,20,30); #在in中满足条件
select * from emp where name like ‘'; #模糊查询两个字的员工姓名
select * from emp where name like '_’;
select * from emp where idcard like ‘%0’; #查询身份证号最后一位为0
![](https://img-blog.csdnimg.cn/direct/acf7c959bc394fdeac68c50e72b633d2.png)
### (三)聚合函数
![](https://img-blog.csdnimg.cn/direct/06c4c76ce0804923a645d085198c83bc.png)
![](https://img-blog.csdnimg.cn/direct/5e085bdb99c24f9a8cdb3009db9bc51a.png)
**注意:null值不参与所有聚合行数运算;**
select count(*) from emp;
select count(name) from emp; #统计字段数量
select count(emp.idcard) from emp;
select avg(emp.age) from emp; #查询年龄平均值
select max(emp.age) from emp; #查询年龄最大值
select min(emp.age) from emp; #查询年龄最小值
select sum(age) from emp where workaddress=‘北京’; #查询北京地区年龄之和
![](https://img-blog.csdnimg.cn/direct/1b5717209cab485fac12136aaed0fce9.png)
### (四)分组查询
![](https://img-blog.csdnimg.cn/direct/817aa1e0b72f42919323aefe2d9a56c6.png)
案例语句:
select gender,count() from emp group by gender;
#根据性别分组,统计男性员工和女性员工人数
select gender,avg(age) from emp group by gender;
#根据性别分组,统计男性员工和女性员工平均年龄
select workaddress,count() from emp where age<45 group by workaddress having count()>=2;
#查询年龄小于45,并根据工作地址来分组,获取员工数量大于等于2的工作地址
select workaddress,count() as address_count from emp where age<45 group by workaddress having address_count>=2;
![](https://img-blog.csdnimg.cn/direct/3d232099777c4e4da0eebf7e01422254.png)
### (五)排序查询
![](https://img-blog.csdnimg.cn/direct/c6e8583c1941495e8c29eeb51c32e3f7.png)
案例语句:
select * from emp order by age asc;
#根据年龄升序
select * from emp order by age desc ;
select * from emp order by entrydate desc ;
#根据工作时间降序
select * from emp order by entrydate asc ;
#根据年龄进行升序,年龄相同按工作日期降序排
select * from emp order by age asc ,entrydate desc ;
![](https://img-blog.csdnimg.cn/direct/7f379403cbda40218efba19e1facbbc1.png)
### (六)分页查询
![](https://img-blog.csdnimg.cn/direct/fb4ccec7e4524602ae56c5719ff2fc6a.png) **注意:**
**起始索引从0开始,起始索引= (查询页码 - 1) \* 每页显示记录数;**
**分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT;**
**如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 10。**
案例语句:
select * from emp limit 0,5;
#查询第一页员工数据,每页展示5条记录
select * from emp limit 10,5;
#查询员工表数据第二页,展示5条数据 ------》注意:(页码数-1)*页面展示数量
![](https://img-blog.csdnimg.cn/direct/758744766524411b95e56ee4fb507d0a.png)
**案例练习:**
![](https://img-blog.csdnimg.cn/direct/9464b5a90bf5475faef5f337cd8a1e74.png)
案例实现:
select * from emp where gender=‘女’ and age in(18,20,30);
#统计表中性别为女,年龄在18,20,30的人
select * from emp where gender=‘男’ and (age between 10 and 30) and name like ‘__’;
#统计表中性别为男,年龄在10到30之间以及姓名两个字
select gender,count(*) from emp where age<60 group by gender;
#统计表中年龄小于60,男性和女性员工人数
select name,age from emp where age<=30 order by age asc ,entrydate desc ;
#查询数据表中所有年龄小于等于30的人员性别和年龄,并对查询年龄按升序排序,年龄相同按入职时间降序排序
select * from emp where gender=‘男’ and (age between 20 and 40) order by emp.age ,entrydate desc limit 0,5;
#查询员工性别为男,且年龄在20-40以内的前52位员工信息,对查询结果按年龄升序排序,年龄相同按入职时间降序排
### (七)总结
![](https://img-blog.csdnimg.cn/direct/26fa524b89e247c9a0598a55542fce45.png)
![](https://img-blog.csdnimg.cn/direct/adafe9027da74376a8e167891e0a0f75.png)
## 三、SQL的数据控制语言(DCL)
![](https://img-blog.csdnimg.cn/direct/ea681a02caac42b59cf46f0da3158f62.png)
![](https://img-blog.csdnimg.cn/direct/b93d34b6edb7445da7bd94f6471790ef.png)
实战案例:
![](https://img-blog.csdnimg.cn/direct/367d51090a354085b4d313951a56862d.png)
![](https://img-blog.csdnimg.cn/direct/90d361ca1c224b099dec7d5a95f7a697.png)
可以到自己数据库中查看用户数
#创建用户itcast只能够在当前主机localhost访问,密码为123456
create user ‘itcast’@‘localhost’ identified by ‘123456’;
#创建用户zch,可以在任何主机上访问数据库,密码为123456
create user ‘zch’@‘%’ identified by ‘123456’;
#修改用户zch访问密码为123456789
alter user ‘zch’@‘%’ identified with mysql_native_password by ‘123456789’; #语句有误
set password for ‘zch’@‘%’ = password (‘123456789’);
set password for ‘zch’@‘%’ = password (‘123456’);
#删除用户itcast
drop user ‘itcast’@‘localhost’;
**注意:**
* **主机名可以使用 % 通配。**
* **这类SQL开发人员操作的比较少,主要是DBA(DatabaseAdministrator数据库管理员)使用。**
权限控制
![](https://img-blog.csdnimg.cn/direct/48db28a81bd244dcb75ff69b8a5a7dec.png)
**注意:**
* 多个权限之间,使用逗号分隔
* **授权时,数据库名和表名可以使用\*进行通配,代表所有。**
案例:
![](https://img-blog.csdnimg.cn/direct/5870d812ff1149bca5147e38fb7053e9.png)
#查询权限
show grants for ‘zch’@‘%’;
#授予权限
grant all on itcast.* to ‘zch’@‘%’;
#撤销权限
revoke all on itcast.* from ‘zch’@‘%’;
查询权限的结果:![](https://img-blog.csdnimg.cn/direct/44acdb501fe44273aa538a89043bdb77.png)
## **重点这是以上使用的MySQL代码:**
select * from emp;
select workno,name,age from emp;
select id,workno,name,gender,age,idcard,workaddress,entrydate from emp;
select emp.workaddress from emp;
select emp.workaddress as ‘工作地址’ from emp;
select distinct emp.workaddress as ‘工作地址’ from emp;
select * from emp;
select * from emp where age=18;
select * from emp where age<=20;
select * from emp where idcard is null;
select * from emp where idcard is not null;
select * from emp where age<>18;
select * from emp where age>=15 and age<=18;
select * from emp where age between 15 and 20;
select * from emp where gender=‘女’ and age < 30;
select * from emp where age=18 or age=38 or age=30;
select * from emp where age in(18,20,30); #在in中满足条件
select * from emp where name like ‘'; #模糊查询两个字的员工姓名
select * from emp where name like '_’;
select * from emp where idcard like ‘%0’; #查询身份证号最后一位为0
select count() from emp;
select count(name) from emp; #统计字段数量
select count(emp.idcard) from emp;
select avg(emp.age) from emp; #查询年龄平均值
select max(emp.age) from emp; #查询年龄最大值
select min(emp.age) from emp; #查询年龄最小值
select sum(age) from emp where workaddress=‘北京’; #查询北京地区年龄之和
select emp.gender,count() from emp order by gender;
select * from emp;
select gender,count() from emp group by gender; #根据性别分组,统计男性员工和女性员工人数
select gender,avg(age) from emp group by gender; #根据性别分组,统计男性员工和女性员工平均年龄
select workaddress,count() from emp where age<45 group by workaddress having count()>=2;
#查询年龄小于45,并根据工作地址来分组,获取员工数量大于等于2的工作地址
select workaddress,count() as address_count from emp where age<45 group by workaddress having address_count>=2;
select * from emp order by age asc;
#根据年龄升序
select * from emp order by age desc ;
select * from emp order by entrydate desc ;
#根据工作时间降序
select * from emp order by entrydate asc ;
#根据年龄进行升序,年龄相同按工作日期降序排
select * from emp order by age asc ,entrydate desc ;
select * from emp limit 0,5;
#查询第一页员工数据,每页展示5条记录
select * from emp limit 10,5;
#查询员工表数据第二页,展示5条数据 ------》注意:(页码数-1)*页面展示数量
select * from emp where gender=‘女’ and age in(18,20,30);
#统计表中性别为女,年龄在18,20,30的人
select * from emp where gender=‘男’ and (age between 10 and 30) and name like ‘__’;
#统计表中性别为男,年龄在10到30之间以及姓名两个字
select gender,count(*) from emp where age<60 group by gender;
#统计表中年龄小于60,男性和女性员工人数
select name,age from emp where age<=30 order by age asc ,entrydate desc ;
#查询数据表中所有年龄小于等于30的人员性别和年龄,并对查询年龄按升序排序,年龄相同按入职时间降序排序
select * from emp where gender=‘男’ and (age between 20 and 40) order by emp.age ,entrydate desc limit 0,5;
#查询员工性别为男,且年龄在20-40以内的前52位员工信息,对查询结果按年龄升序排序,年龄相同按入职时间降序排
e<60 group by gender;
#统计表中年龄小于60,男性和女性员工人数
select name,age from emp where age<=30 order by age asc ,entrydate desc ;
#查询数据表中所有年龄小于等于30的人员性别和年龄,并对查询年龄按升序排序,年龄相同按入职时间降序排序
select * from emp where gender='男' and (age between 20 and 40) order by emp.age ,entrydate desc limit 0,5;
#查询员工性别为男,且年龄在20-40以内的前52位员工信息,对查询结果按年龄升序排序,年龄相同按入职时间降序排