与数据库的重逢(一)

本文介绍了数据库的操作,包括单表操作、约束设定,重点讲解了数据库事务的概念,如事务的四大特性、隔离级别,以及如何解决脏读、不可重复读和幻读问题,并通过实例演示了事务的使用。
摘要由CSDN通过智能技术生成

1.操作单表

1. 创建数据库,复制表

1)创建一个数据库db2

CREATE DATABASE db2 CHARACTER SET utf8;

2)将db1数据库中的 emp表 复制到当前 db2数据库;
负指表操作

2. 排序
通过 ORDER BY 子句,可以将查询出的结果进行排序(排序只是显示效果,不会影响真实数据)
语法格式:SELECT 字段名 FROM 表名 [WHERE 字段 = 值] ORDER BY 字段名 [ASC / DESC]。
注意:

  • ASC 表示升序排序(默认)
  • DESC 表示降序排序

单列排序-----只按照某一个字段进行排序, 就是单列排序
案例:使用 salary 字段,对emp 表数据进行排序 (升序/降序)

-- 默认升序排序 ASC
SELECT * FROM emp ORDER BY salary;
-- 降序排序
SELECT * FROM emp ORDER BY salary DESC;

组合排序----同时对多个字段进行排序, 如果第一个字段相同 就按照第二个字段进行排序,以此类推
案例:在薪水排序的基础上,再使用id进行排序, 如果薪水相同就以id 做降序排序

-- 组合排序
SELECT * FROM emp ORDER BY salary DESC, eid DESC;

3.聚合函数

  • 作用:将一列数据作为一个整体,进行纵向的计算。
  • 常用的聚合函数:
    1)count(字段) 统计记录数
    2)sum(字段) 求和操作
    3)max(字段)求最大值操作
    4)min(字段)求最小值操作
    5)avg(字段)求平均值操作
  • 语法格式:SELECT 聚合函数(字段名) FROM 表名;
    案例:
  • 1 查询员工的总数
  • 2 查看员工总薪水、最高薪水、最小薪水、薪水的平均值
  • 3 查询薪水大于4000员工的个数
  • 4 查询部门为’教学部’的所有员工的个数
  • 5 查询部门为’市场部’所有员工的平均薪水
#1 查询员工的总数
-- 统计表中的记录条数 使用 count()
SELECT COUNT(eid) FROM emp; -- 使用某一个字段
SELECT COUNT(*) FROM emp; -- 使用 *
SELECT COUNT(1) FROM emp; -- 使用 1,与 * 效果一样
-- 下面这条SQL 得到的总条数不准确,因为count函数忽略了空值
-- 所以使用时注意不要使用带有null的列进行统计
SELECT COUNT(dept_name) FROM emp;
#2 查看员工总薪水、最高薪水、最小薪水、薪水的平均值
-- sum函数求和, max函数求最大, min函数求最小, avg函数求平均值
SELECT
SUM(salary) AS '总薪水',
MAX(salary) AS '最高薪水',
MIN(salary) AS '最低薪水',
AVG(salary) AS '平均薪水'
FROM emp;
#3 查询薪水大于4000员工的个数
SELECT COUNT(*) FROM emp WHERE salary > 4000;
#4 查询部门为'教学部'的所有员工的个数
SELECT COUNT(*) FROM emp WHERE dept_name = '教学部';
#5 查询部门为'市场部'所有员工的平均薪水
SELECT
AVG(salary) AS '市场部平均薪资'
FROM emp
WHERE dept_name = '市场部';

4.分组查询

分组查询指的是使用 GROUP BY 语句,对查询的信息进行分组,相同数据作为一组

  • 语法格式:SELECT 分组字段/聚合函数 FROM 表名 GROUP BY 分组字段 [HAVING 条件];
    案例:
-- 按照性别进行分组操作
SELECT * FROM emp GROUP BY sex; -- 注意 这样写没有意义

在这里插入图片描述
分组的过程:
分组过程分析
注意:

  1. 分组时可以查询要分组的字段, 或者使用聚合函数进行统计操作.
  2. 查询其他字段没有意义
    案例:通过性别字段 进行分组,求各组的平均薪资
# 通过性别字段 进行分组,求各组的平均薪资
SELECT sex, AVG(salary) FROM emp GROUP BY sex;

#1.查询所有部门信息
#2.查询每个部门的平均薪资
#3.查询每个部门的平均薪资, 部门名称不能为null

#1. 查询有几个部门
SELECT dept_name AS '部门名称' FROM emp GROUP BY dept_name;
#2.查询每个部门的平均薪资
SELECT
dept_name AS '部门名称',
AVG(salary) AS '平均薪资'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值