MySQL 查询

本文介绍了SQL的基本操作,包括去除空值、排序、聚合函数、分组查询、分页查询、模糊查询等内容,并详细讲解了如何通过SQL语句实现数据完整性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.去除空值

   -- 过滤空值  如果该值为null 当做0来处理  用 IFNULL 处理 去除空值

   SELECT 字段1 , 字段2 ,字段1 + IFNULL(字段2,0) as total from 表名;

2.排序   ORDER BY

  降序  desc

  查询所有雇员,按月薪降序排序,如果月薪相同时,按编号降序排序

  SELECT * from 表名 ORDER BY 字段名 desc ; 

   升序 asc 一般默认为升序

   SELECT * from 表名 ORDER BY 字段名 asc;  

 3.聚合函数   sum avg max min count

  COUNT():统计指定列不为NULL的记录行数;
  MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
  MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
  SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;

  AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0; 

  查询佣金的 记录数  count(字段) 查询的是不为空 的 记录数  

  select count(字段名) from 表名;  

  统计月薪与佣金之和大于2500元的人数:

  select count(*) from 表名 where  字段 + IFNULL(字段,0)  > 2500;

  查询薪金综合 

  select sum(字段) from 表名;

  查询所有雇员月薪和,以及所有雇员佣金和:

  SELECT sum(字段),sum(字段) from 表名;

  统计所有员工平均工资

   select AVG(字段 +IFNULL(字段,0)) from 表名;

5.分组查询 GROUP BY

   查询每个部门的部门编号 和部门(按部门分组)工资和
   注意分组查询时查询的字段必须是分组的

   select deptno,sum(sal) from emp  group by deptno;

   查询每个部分门编号及人数
   字段,COUNT(*)from 表名 GROUP BY 字段;

   查询工资总和大于9000的部门编号以及工资和
   HAVING 关键字是分组之后使用的筛选条件(能使用函数) 
   where 分组之前使用(不能使用函数)

   SELECT 字段, 字段(字段) FROM 表名 GROUP BY 字段 HAVING  sum(字段) > 9000;

6.分页查询

    分页 查询 参数0 代表起始页  参数3 代表 每页显示数据  从第0条数据开始显示显示3条

    SELECT * from emp LIMIT 0,3;

7.模糊查询

   模糊查询

   当想查询姓名中包含a字母的学生时就需要使用模糊查询了。模糊查询需要使用关键字LIKE。
   通配符: 
   _ 任意一个字符
   %:任意0~n个字符
   '%张%'  '张_'

   select * from emp where ename like 'w%';

   select * from emp where ename like 'w_';

8.数据完整性

    作用:保证用户输入的数据保存到数据库中是正确的。
    确保数据的完整性 = 在创建表时给表中添加约束

   完整性的分类:

     实体完整性:
     域完整性:
     引用完整性:   

    1> . 实体完整性

     即表中的一行(一条记录)代表一个实体(entity) 
     实体完整性的作用:标识每一行数据不重复。
     约束类型: 主键约束(primary key)  唯一约束(unique)  自动增长列(auto_increment)

       第一种添加方式:
     CREATE TABLE student(
     id int primary key,
     name varchar(50)
     );

    第二种添加方式:此种方式优势在于,可以创建联合主键
    CREATE TABLE student(
    id int,
    name varchar(50),
    primary key(id)
    );    
    联合主键是一个主键 只要两个字段不完全一样 就可以
    CREATE TABLE student(
    classid int,
    stuid int,
    name varchar(50),
    primary key(classid,stuid)

    );

    第三种添加方式:
    CREATE TABLE student(
    id int,
    name varchar(50)
    );
    ADD CONSTRAINT(添加约束)
    ALTER TABLE student  ADD CONSTRAINT 

   给主键添加自动增长的数值,列只能是整数类型
  (注意数据被删除了 也会按照原来的数进行增长 不是主键也能添加自动增长列)
  CREATE TABLE student(
  Id int primary key auto_increment,
  Name varchar(50)

  );

2> 域完整性

    域完整性的作用:限制此单元格的数据正确,不对照此列的其它单元格比较
    域代表当前单元格
    域完整性约束:非空约束(not null) 默认值约束(default)  
    1.1 非空约束:not null
    CREATE TABLE student(
    Id int pirmary key,
    Name varchar(50) not null,
    Sex varchar(10)
    );
   1.2 默认值约束 default
   CREATE TABLE student(
   Id int pirmary key,
   Name varchar(50) not null,
   Sex varchar(10) default ‘男’
   );
   默认约束 插入

3>引用完整性

 外键约束:FOREIGN KEY 
 例:
  CREATE TABLE student(
  sid int pirmary key,
  name varchar(50) not null,
  sex varchar(10) default ‘男’
  );
  create table score(
id int,
score int,
sid int , -- 外键列的数据类型一定要与主键的类型一致
CONSTRAINT fk_score_sid foreign key (sid) references student(sid)
    );
   第二种添加外键方式。
   ALTER TABLE score1 ADD CONSTRAINT fk_stu_score FOREIGN KEY(sid) REFERENCES stu(id); 


 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值