LiuJinTao: 2024年4月14日
文章目录
MySQL数据库开发
一、 DataGrip安装
参考教程:DataGrip安装教程
二、DML语句
三、DML - 表 -添加数据
代码示例
-- -------------------------------表 - 插入数据----------------------------------------
-- 1. 对 emp 表 指定字段 插入数据
insert into emp(id, workno, name, gender, age, idcard, workaddress, entrydate) values(1, '1', '张三', '男', 23, 123456987456321023, '江西', '2024-04-13');
-- 2. 对 emp 表 所有字段 插入数据
insert into emp values(2, '2', '李四', '男', 24, 123456987456323023, '广东', '2024-04-13');
-- 3. 对 emp 表 所有字段 批量插入数据
insert into emp values(3, '3', '王五', '男', 25, 123456987456323023, '上海', '2024-04-13'), (4, '4', '赵六', '男', 26, 123456987456323023, '北京', '2024-04-13');
四、DML - 表 - 修改数据
#####代码示例
-- -------------------------------表 - 修改数据----------------------------------------
-- 1. 修改 id 为 1 的数据, 将 name 修改为 zhangsan
update emp set name = 'zhangsan' where id = 1;
-- 2. 修改 id 为 1 的数据,将 name 修改为 小三毛, gender 修改为 女
update emp set name = '小三毛', gender = '女' where id = 1;
-- 3. 将所有员工入职日期修改为 2024-01-01 (不添加 where 表示更新表所有字段)
update emp set entrydate = '2024-01-01';
五、DML - 表 - 删除数据
代码示例
-- -------------------------------表 - 删除数据----------------------------------------
-- 1. 删除 gender 为女 的员工
delete from emp where gender = '女';
-- 2. 删除所有员工
delete from emp;
DML 语句小结
六、DQL - 查询语句
七、DQL - 基本查询
代码示例:
-- -------------------------------表 - 基本查询----------------------------------------
-- 1. 查询指定字段 name, workno, age 返回
select name, workno, age from emp2;
-- 2. 查询所有字段返回(开发规范 不建议写 * )
select * from emp2;
select id, workno, name, gender, age, idcard, workaddress, entrydate from emp2;
-- 3. 查询所有员工工作地址,起别名
select workaddress as '工作地址' from emp2;
-- 4.查询员工上班地址(去重)
select distinct workaddress as '工作地址' from emp2;
八 DQL - 条件查询
代码示例:
-- -------------------------------表 - 条件查询----------------------------------------
-- 1. 查询年龄等于 88 的员工
select * from emp2 where age = 88;
-- 2. 查询年龄小于 20 的 员工信息
select * from emp2 where age < 20;
-- 3. 查询年龄小于等于 20 的员工信息
select * from emp2 where age <= 20;
-- 4. 查询没有身份证号码的员工信息
select * from emp2 where idcard is null;
-- 5. 查询有身份证号码的员工信息
select * from emp2 where idcard is not null;
-- 6. 查询年龄小于等于 88 的 员工信息
select * from emp2 where age <= 88;
-- 7. 查询年龄在 15 岁 (包含), 到 20 岁(包含)之间的员工信息
select * from emp2 where age between 15 and 20; -- 不能写反了
-- 8. 查询性别为 女 且 年龄小于 25 岁的 员工信息
select * from emp2 where gender = '女' and age < 25;
-- 9. 查询年龄 等于 18 或者 20 或者 40 的员工信息
select * from emp2 where age = 18 or age = 20 or age = 40;
select * from emp2 where age in (18, 20, 40);
-- 10. 查询姓名为两个字的员工信息
select * from emp2 where name like '__';
-- 11,查询身份证最后一位是 X 的员工信息
select * from emp2 where idcard like '%X';
九、DQL - 聚合函数
代码示例:
-- -------------------------------表 - 聚合函数----------------------------------------
-- 1. 统计该企业员工数量
select count(id) from emp2;
select count(*) from emp2;
-- 2. 统计该企业员工的平均年龄
select avg(age) from emp2;
-- 3. 统计该企业员工的最大年龄
select max(age) from emp2;
-- 4. 统计该企业员工的最小年龄
select min(age) from emp2;
-- 5. 统计北京地区员工的年龄之和
select sum(age) from emp2 where workaddress = '北京';
十、 DQL - 分组查询
代码示例:
-- -------------------------------表 - 分组查询 ----------------------------------------
-- 1. 根据性别分组, 统计 男性 和 女性 员工的数量
select gender, count(id) from emp2 group by gender;
-- 2. 根据性别分组, 统计男性员工 和 女性员工 的平均年龄
select gender, avg(age) from emp2 group by age;
-- 3. 查询年龄小于 45 岁的员工, 并根据工作地址分组, 获取员工数量大于等于 3 的工作地址
select workaddress, count(*) address_count from emp2 where age < 45 group by workaddress having address_count >= 3;
十一、 DQL - 排序查询
代码示例:
-- -------------------------------表 - 排序查询 ----------------------------------------
-- 1. 根据年龄对公司的员工进行升序排序
select * from emp2 order by age asc;
-- 2. 根据入职时间,对员工进行降序排序
select * from emp2 order by entrydate desc;
-- 3. 根据年龄对公司的员工进行升序排序,年龄相同, 在按照入职时间进行降序排序
select * from emp2 order by age asc, entrydate desc;
十二、 DQL - 分页查询
代码示例:
-- -------------------------------表 - 分页查询 ----------------------------------------
-- 1. 查询第一页员工数据, 每页展示 10 条记录
select * from emp2 limit 0, 10;
-- 2. 查询第二页的员工数据, 每页展示 10 条记录
select * from emp2 limit 10, 10;
- 起始索引 = 页码 - 1 * 查询条数
十三、DQL - 语句综合练习
-- -------------------------------表 - DQL综合 ----------------------------------------
-- 1. 查询年龄为 20、 21、 22、 23 岁的女性员工信息
select * from emp2 where age in (20, 21, 22, 23);
-- 2. 查询性别为 男, 并且年龄在 20 - 40岁 (含)以内的姓名为三个字的员工信息
select * from emp2 where gender = '男' and age between 20 and 40 and name like'___';
-- 3. 统计员工表中,年龄小于60 岁的, 男性员工和女性员工的人数
select gender, count(age) from emp2 where age < 60 group by gender;
-- 4. 查询所有年龄小于等于 35 岁员工姓名和年龄, 并对查询结果按年龄升序排序,如果年龄相同按入职时间降序排序
select name, age from emp2 where age <= 35 order by age asc, entrydate desc;
-- 5. 查询性别为男,且年龄在 20-40 岁(含) 以内的前 5 个员工信息,对查询的结果按年龄进行升序排序,年龄相同按入职时间排序。
select gender, age from emp2 where gender = '男' and age between 20 and 40 order by age asc, entrydate desc limit 0, 5;
十四、DQL - 语句的执行顺序
十五、DQL - 语句总结
十六、DCL - 用户管理权限
十七、DCL - 创建用户
代码示例:
-- -------------------------------用户 - DCL 管理用户权限的操作 ----------------------------------------
-- 创建用户 data_test1, 只能够在当前主机 localhost 访问, 密码 123456
create user 'data_test1'@'localhost' identified by '123456';
-- 创建用户 dats_test2, 可以在任意主机访问该数据库, 密码 123456
create user 'dats_test2'@'%' identified by '123456';
-- 修改用户名 dats_test2 的访问密码为 1234
alter user 'dats_test2'@'%' identified with mysql_native_password by '1234';
-- 删除 data_test1@localhost用户
drop user 'data_test1'@'localhost';
十八、DCL - 权限控制
代码示例:
-- -------------------------------用户 - DCL 权限控制 ----------------------------------------
-- 1. 查询权限
show grants for 'test'@'localhost';
-- 2. 授予权限
grant all on jintao.* to 'test'@'localhost';
-- 3. 撤销权限
revoke all on jintao.* from 'test'@'localhost';