(133) MySQL은 단일 테이블 쿼리

첫째, 단일 테이블 쿼리

1.1 구문

  • 각 체크 아웃 일부 기록은, 그들은 테이블 있지만,이 테이블은 메모리의 존재입니다
  • 당신이 기록 차 사용을 조회하려는 경우, 당신은 별명을 기록하기 위해이 테이블을 확인하실 수 있습니다
  • 디스플레이는 다음과 같이 데이터의 일부 레코드 조회 테이블, 우리는 테이블에 필드 이름 꺼낼 때, 그리고 체크 직접 별칭으로 필드 뒤에 설정할 수 있습니다
select ditinct 字段1 as 别名1,字段2 as 别名2,···· from 表名
                                where 条件
                                group by 字段名
                                having 筛选
                                order by 字段名
                                limit 限制条数

1.2 키 우선

from : 找到表
where : 拿着where 后面的约束的条件,去表/文件中取出一些记录
group by : 将取出的某些记录进行分组,如果没有group by,则整体作为一组
select : 执行select
distinct : 对去取出的重复数据进行去重
having : 将分组的结果进行having过滤
order by : 将结果按条件排序
limit : 限制显示的记录条数

1.3주의 (중점)

  • 질의 시퀀스는 스크리닝 조건을 다양한 수의 조건은 점차 상승을하기 위해 스크리닝되어야

  • 독특한 조금 특별한 (쓰기 위치) 조건의 종류는 불완전 할 수 있습니다
  • 조건은 아니지만 순서가, 삭제할 수 있습니다

시험 뚜렷한 중복 1.4 단일 테이블

# 创建一个表
create table t1(
    id int,
    x int,
    y int
);
1.插入几条数据
insert into t1 values(1, 1, 1), (2, 1, 2), (3, 2, 2), (4, 2, 2);
############################cmd 图示
mysql> select * from t1;
+------+------+------+
| id   | x    | y    |
+------+------+------+
|    1 |    1 |    1 |
|    2 |    1 |    2 |
|    3 |    2 |    2 |
|    4 |    2 |    2 |
+------+------+------+

2.查询全部数据
select distinct * from t1; 
############################cmd 图示
mysql> select distinct * from t1;
+------+------+------+
| id   | x    | y    |
+------+------+------+
|    1 |    1 |    1 |
|    2 |    1 |    2 |
|    3 |    2 |    2 |
|    4 |    2 |    2 |
+------+------+------+
4 rows in set (0.00 sec)

3.查询结果中,把重复的数据去掉
select distinct x, y from t1
############################cmd 图示
mysql> select distinct x,y from t1;
+------+------+
| x    | y    |
+------+------+
|    1 |    1 |
|    1 |    2 |
|    2 |    2 |
+------+------+
3 rows in set (0.00 sec)

4.查询字段y,把y字段的重复值去掉
select distinct y from t1;  # 结果 1  2
############################cmd 图示
mysql> select distinct y from t1;
+------+
| y    |
+------+
|    1 |
|    2 |
+------+
2 rows in set (0.00 sec)
  • distinct对参与查询的所有字段,整体去重(所查的全部字段的值都相同,才认为是重复数据)

둘째, 테이블은 쿼리 테스트를 기록

이에 앞서, 몇 가지 일반적으로 사용되는 기능을 언급

2.1 공통 기능

  • 바느질 : CONCAT (), CONCAT_WS ()
  • 케이스 : 하부) (상단 ()
  • 부동 소수점 연산 : 천장을 만들다 (), 바닥 () | 라운드 ()
  • 정수 : 직접 운영

2.2 데이터 준비

예를 들어 저희 직원 테이블 (EMP) :

임직원 ID : ID : INT

직원 이름 : 이름 : VARCHAR

종업원 성별 : 성별 : 열거

종업원 나이 : 나이 : INT

임금 및 급여 : 연봉 : 플로트

구 직원이 위치 : 지역 : varcahr를

주소 어디에 직원 : 주소 : VARCHAR

직원 부서 : 출발 : VARCHAR

1.先创建员工表(emp)
create table emp(
    id int primary key auto_increment,
    name varchar(10) not null,
    sex enum('男','女') default '女',
    age int unsigned default 25,
    salary float default 0,
    area varchar(20) null default '中国',
    addr varchar(20) null default '上海',
    dep varchar(20) null default '咨询部'
);
########查看表结构
mysql> desc emp;
+--------+-------------------+------+-----+-----------+----------------+
| Field  | Type              | Null | Key | Default   | Extra          |
+--------+-------------------+------+-----+-----------+----------------+
| id     | int(11)           | NO   | PRI | NULL      | auto_increment |
| name   | varchar(10)       | NO   |     | NULL      |                |
| sex    | enum('男','女')   | YES  |     | 女        |                |
| age    | int(10) unsigned  | YES  |     | 25        |                |
| salary | float             | YES  |     | 0         |                |
| area   | varchar(20)       | YES  |     | 中国      |                |
| addr   | varchar(20)       | YES  |     | 上海      |                |
| dep    | varchar(20)       | YES  |     | 咨询部    |                |
+--------+-------------------+------+-----+-----------+----------------+


2.插入数据
insert into emp values
    (1, 'aaa', '男', 42, 10.5, '上海', '浦东', '教职部'),
    (2, 'bbb', '男', 38, 9.4, '山东', '济南', '教学部'),
    (3, 'ccc', '女', 30, 3.0, '江苏', '张家港', '教学部'),
    (4, 'ddd', '女', 28, 2.4, '广州', '广东', '教学部'),
    (5, 'eee', '男', 28, 2.4, '江苏', '苏州', '教学部'),
    (6, 'fff', '男', 18, 8.8, '中国', '黄浦', '咨询部'),
    (7, 'ggg', '男', 18, 8.8, '安徽', '宣城', '教学部'),
    (8, 'hhh', '男', 28, 9.8, '安徽', '巢湖', '教学部'),
    (9, 'iii', '女', 36, 1.2, '安徽', '芜湖', '咨询部'),
    (10, 'jjj', '男', 36, 5.8, '山东', '济南', '教学部'),
    (11, 'kkk', '女', 28, 1.2, '山东', '青岛', '教职部'),
    (12, 'lll', '男', 30, 9.0, '上海', '浦东', '咨询部'),
    (13, 'mmm', '男', 30, 6.0, '上海', '浦东', '咨询部'),
    (14, 'nnn', '男', 30, 6.0, '上海', '浦西', '教学部'),
    (15, 'ooo', '女', 67, 2.501, '上海', '陆家嘴', '教学部');
########查看表记录
mysql> select * from emp;
+----+------+------+------+--------+--------+-----------+-----------+
| id | name | sex  | age  | salary | area   | addr      | dep       |
+----+------+------+------+--------+--------+-----------+-----------+
|  1 | aaa  | 男   |   42 |   10.5 | 上海   | 浦东      | 教职部    |
|  2 | bbb  | 男   |   38 |    9.4 | 山东   | 济南      | 教学部    |
|  3 | ccc  | 女   |   30 |      3 | 江苏   | 张家港    | 教学部    |
|  4 | ddd  | 女   |   28 |    2.4 | 广州   | 广东      | 教学部    |
|  5 | eee  | 男   |   28 |    2.4 | 江苏   | 苏州      | 教学部    |
|  6 | fff  | 男   |   18 |    8.8 | 中国   | 黄浦      | 咨询部    |
|  7 | ggg  | 男   |   18 |    8.8 | 安徽   | 宣城      | 教学部    |
|  8 | hhh  | 男   |   28 |    9.8 | 安徽   | 巢湖      | 教学部    |
|  9 | iii  | 女   |   36 |    1.2 | 安徽   | 芜湖      | 咨询部    |
| 10 | jjj  | 男   |   36 |    5.8 | 山东   | 济南      | 教学部    |
| 11 | kkk  | 女   |   28 |    1.2 | 山东   | 青岛      | 教职部    |
| 12 | lll  | 男   |   30 |      9 | 上海   | 浦东      | 咨询部    |
| 13 | mmm  | 男   |   30 |      6 | 上海   | 浦东      | 咨询部    |
| 14 | nnn  | 男   |   30 |      6 | 上海   | 浦西      | 教学部    |
| 15 | ooo  | 女   |   67 |  2.501 | 上海   | 陆家嘴    | 教学部    |
+----+------+------+------+--------+--------+-----------+-----------+
15 rows in set (0.00 sec)

표 2.3 테스트 기록

2.3.1 곳 쿼리 조건

  • 문법

    select 字段1,字段2···· from 表名 where 条件表达式
  • 조건부 규칙

    1.比较符合  >   <   >=   <=   =    !=
    2.区间符合  between开始 and结束     in(自定义容器)
    3.逻辑符合  and    or   not
    4.相似符合  like _(下划线代表单个字符)   %(可以匹配多个)
    5.正则符合  regexp 正则语法
  • 데이터 테스트 케이스 (직원 테이블에, 예를 들어)

    • 쿼리는 5 명보다 큰 직원 급여를 임금 (라인 더)

      mysql> select * from emp where salary >5;
      
      +----+------+------+------+--------+--------+--------+-----------+
      | id | name | sex  | age  | salary | area   | addr   | dep       |
      +----+------+------+------+--------+--------+--------+-----------+
      |  1 | aaa  | 男   |   42 |   10.5 | 上海   | 浦东   | 教职部    |
      |  2 | bbb  | 男   |   38 |    9.4 | 山东   | 济南   | 教学部    |
      |  6 | fff  | 男   |   18 |    8.8 | 中国   | 黄浦   | 咨询部    |
      |  7 | ggg  | 男   |   18 |    8.8 | 安徽   | 宣城   | 教学部    |
      |  8 | hhh  | 男   |   28 |    9.8 | 安徽   | 巢湖   | 教学部    |
      | 10 | jjj  | 男   |   36 |    5.8 | 山东   | 济南   | 教学部    |
      | 12 | lll  | 男   |   30 |      9 | 上海   | 浦东   | 咨询部    |
      | 13 | mmm  | 男   |   30 |      6 | 上海   | 浦东   | 咨询部    |
      | 14 | nnn  | 男   |   30 |      6 | 上海   | 浦西   | 教学部    |
      +----+------+------+------+--------+--------+--------+-----------+
    • 쿼리 ID 번호는 모든 직원의 짝수 (라인에 더)

      mysql> select * from emp where id%2=0;
      
      +----+------+------+------+--------+--------+--------+-----------+
      | id | name | sex  | age  | salary | area   | addr   | dep       |
      +----+------+------+------+--------+--------+--------+-----------+
      |  2 | bbb  | 男   |   38 |    9.4 | 山东   | 济南   | 教学部    |
      |  4 | ddd  | 女   |   28 |    2.4 | 广州   | 广东   | 教学部    |
      |  6 | fff  | 男   |   18 |    8.8 | 中国   | 黄浦   | 咨询部    |
      |  8 | hhh  | 男   |   28 |    9.8 | 安徽   | 巢湖   | 教学部    |
      | 10 | jjj  | 男   |   36 |    5.8 | 山东   | 济南   | 教学部    |
      | 12 | lll  | 男   |   30 |      9 | 上海   | 浦东   | 咨询部    |
      | 14 | nnn  | 男   |   30 |      6 | 上海   | 浦西   | 教学部    |
      +----+------+------+------+--------+--------+--------+-----------+
    • 모든 직원은 6과 9 사이의 임금을 쿼리 (사이에 맞춰 범위)

      mysql> select * from emp where id between 6 and 9;
      
      +----+------+------+------+--------+--------+--------+-----------+
      | id | name | sex  | age  | salary | area   | addr   | dep       |
      +----+------+------+------+--------+--------+--------+-----------+
      |  6 | fff  | 男   |   18 |    8.8 | 中国   | 黄浦   | 咨询部    |
      |  7 | ggg  | 男   |   18 |    8.8 | 安徽   | 宣城   | 教学部    |
      |  8 | hhh  | 男   |   28 |    9.8 | 安徽   | 巢湖   | 教学部    |
      |  9 | iii  | 女   |   36 |    1.2 | 安徽   | 芜湖   | 咨询部    |
      +----+------+------+------+--------+--------+--------+-----------+
    • 검색어에 임금 1, 3, 7, 20 내지 (간격에 맞춰, 사용자 지정 용기)

      mysql> select * from emp where id in(1,3,7,20);
      
      +----+------+------+------+--------+--------+-----------+-----------+
      | id | name | sex  | age  | salary | area   | addr      | dep       |
      +----+------+------+------+--------+--------+-----------+-----------+
      |  1 | aaa  | 男   |   42 |   10.5 | 上海   | 浦东      | 教职部    |
      |  3 | ccc  | 女   |   30 |      3 | 江苏   | 张家港    | 教学部    |
      |  7 | ggg  | 男   |   18 |    8.8 | 安徽   | 宣城      | 教学部    |
      +----+------+------+------+--------+--------+-----------+-----------+
    • 문자 O를 모든 직원의 이름을 가진 쿼리 (%와 같은 유사한 협정)

      mysql> select * from emp where name like '%o%';
      
      +----+------+------+------+--------+--------+-----------+-----------+
      | id | name | sex  | age  | salary | area   | addr      | dep       |
      +----+------+------+------+--------+--------+-----------+-----------+
      | 15 | ooo  | 女   |   67 |  2.501 | 上海   | 陆家嘴    | 教学部    |
      +----+------+------+------+--------+--------+-----------+-----------+
    • 모든 쿼리가 두 번째 문자가 m 직원 **입니다했다 (비슷한에 맞춰 같은 _) **

      mysql> select * from emp where name like '_o%';
      
      +----+------+------+------+--------+--------+-----------+-----------+
      | id | name | sex  | age  | salary | area   | addr      | dep       |
      +----+------+------+------+--------+--------+-----------+-----------+
      | 15 | ooo  | 女   |   67 |  2.501 | 上海   | 陆家嘴    | 教学部    |
    • 두 캐릭터의 모든 이름 쿼리가 직원이되기 전에 ** (같은 비슷한에 맞춰 __) **

      mysql> select * from emp where name like '__a%';
      
      +----+------+------+------+--------+--------+--------+-----------+
      | id | name | sex  | age  | salary | area   | addr   | dep       |
      +----+------+------+------+--------+--------+--------+-----------+
      |  1 | aaa  | 男   |   42 |   10.5 | 上海   | 浦东   | 教职部    |
      +----+------+------+------+--------+--------+--------+-----------+
    • 모두 1 포함하는 모든 직원의 쿼리 ID 번호 (일반 일치)

      • SQL 지원 정규 문법의 일부
      • '* \ D.'; \ d를 지원하지 않는 것이 번호를 나타내는 \ D
      • '* [0-9]. "[] 구문을 지원
      mysql> select * from emp where id regexp '.*[1]';
      
      +----+------+------+------+--------+--------+-----------+-----------+
      | id | name | sex  | age  | salary | area   | addr      | dep       |
      +----+------+------+------+--------+--------+-----------+-----------+
      |  1 | aaa  | 男   |   42 |   10.5 | 上海   | 浦东      | 教职部    |
      | 10 | jjj  | 男   |   36 |    5.8 | 山东   | 济南      | 教学部    |
      | 11 | kkk  | 女   |   28 |    1.2 | 山东   | 青岛      | 教职部    |
      | 12 | lll  | 男   |   30 |      9 | 上海   | 浦东      | 咨询部    |
      | 13 | mmm  | 男   |   30 |      6 | 上海   | 浦东      | 咨询部    |
      | 14 | nnn  | 男   |   30 |      6 | 上海   | 浦西      | 教学部    |
      | 15 | ooo  | 女   |   67 |  2.501 | 上海   | 陆家嘴    | 教学部    |
      +----+------+------+------+--------+--------+-----------+-----------+

그룹화 질의에 의해 2.3.2 그룹

그룹 쿼리의 첫 번째 문제

  • 1. ONLY_FULL_GROUP_BY에서 제한이 수행 할 수 없습니다 sql_mode,하지만 결과는 이해가되지 않습니다

    • 각 패킷은 각 패킷 단위의 기록, 기준 패킷 필드 많은 복수의 레코드가 포함되어 있기 때문에 그룹화 한 후, 테이블을 고려하여 데이터가 하나의 기록을하지 않는 경우에는 다음 테스트는 상술
    # 按部门分组,每个部门都有哪些人
    mysql> select * from emp group by dep;
    +----+------+------+------+--------+--------+--------+-----------+
    | id | name | sex  | age  | salary | area   | addr   | dep       |
    +----+------+------+------+--------+--------+--------+-----------+
    |  6 | fff  | 男   |   18 |    8.8 | 中国   | 黄浦   | 咨询部    |
    |  2 | bbb  | 男   |   38 |    9.4 | 山东   | 济南   | 教学部    |
    |  1 | aaa  | 男   |   42 |   10.5 | 上海   | 浦东   | 教职部    |
    +----+------+------+------+--------+--------+--------+-----------+
  • 2. ONLY_FULL_GROUP_BY 제한 오류

    • 데이터베이스 구성 파일의 my.ini에 다음 코드를 구성, 다음 서비스를 다시 시작

      sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

    # 重启服务后重新进行如上的分组测试
    1.会发现直接报错,因为我们有了这个分组限制以后,那么select查询的字段只能是分组的那个字段dep
    mysql>  select dep from emp group by dep;
    
    +-----------+
    | dep       |
    +-----------+
    | 咨询部    |
    | 教学部    |
    | 教职部    |
    +-----------+

둘째, 집계 함수

우리는이 그룹의 정량을 가지고 있기 때문에, 그 필드 만 선택 쿼리 필드 출발 패킷과 얻을 수 없습니다 자신의 일 테이블 필드의 값입니다, 그래서 우리는이 그룹이 우리가 원하는 결과가 아니다, 그래서 내가 원하는 그룹 내에서 추가 정보를 얻기 위해, 우리는 도움말 기능이 필요합니다

1. 기능 분류 중합
最大值  max()
最小值  min()
平均值  avg()
求和    sum()
计数    count()
组内字段拼接,用来查看组内其他字段   group_concat()
2. 테스트 데이터 (employee 테이블, 예를 들어)
  • 섹터 그룹에 따르면, 그룹의 이름을 볼 부재 (GROUP_CONCAT ())

    mysql> select dep,group_concat(name) from emp group by dep;
    
    +-----------+-------------------------------------+
    | dep       | group_concat(name)                  |
    +-----------+-------------------------------------+
    | 咨询部    | mmm,lll,fff,iii                     |
    | 教学部    | ooo,nnn,jjj,hhh,ggg,eee,ddd,ccc,bbb |
    | 教职部    | kkk,aaa                             |
    +-----------+-------------------------------------+
  • 사람의 총 수에 설정된 부문, 최고 급여, 최소 급여, 평균 급여가있는 각 부서에 의해 그룹화

    mysql> select
        -> dep 部门,
        -> group_concat(name) 成员,
        -> max(salary) 最高薪资,
        -> min(salary) 最低薪资,
        -> avg(salary) 平均薪资,
        -> sum(salary) 总薪资,
        -> count(sex) 人数
        -> from emp group by dep;
  • 부문별로 그룹화, 최대 수명 참조

    mysql> select dep 部门,max(age) 最高年龄 from emp group by dep;
    
    +-----------+--------------+
    | 部门      | 最高年龄     |
    +-----------+--------------+
    | 咨询部    |           36 |
    | 教学部    |           67 |
    | 教职部    |           42 |
    +-----------+--------------+

2.3.3 갖는 和 곳

  • 패킷은 동일한 결과의 부재시 가짐

  • 키 : 갖는 중합 결과를 필터링 할

    # 没有分组时where和having测试
    mysql> select * from emp where id in (5, 10, 15, 20);
    +----+------+------+------+--------+--------+-----------+-----------+
    | id | name | sex  | age  | salary | area   | addr      | dep       |
    +----+------+------+------+--------+--------+-----------+-----------+
    |  5 | eee  | 男   |   28 |    2.4 | 江苏   | 苏州      | 教学部    |
    | 10 | jjj  | 男   |   36 |    5.8 | 山东   | 济南      | 教学部    |
    | 15 | ooo  | 女   |   67 |  2.501 | 上海   | 陆家嘴    | 教学部    |
    +----+------+------+------+--------+--------+-----------+-----------+
    
    
    mysql> select * from emp having salary > 5;# 报错了,这里因为我之前配置了数据库的文件
    ERROR 1463 (42000): Non-grouping field 'salary' is used in HAVING clause
  • 그룹화 선별 검사를 갖는

    • 모두가 볼 수 있도록 부문별로 그룹화, 최저 임금의 총 개수 중 가장 높은 급여, 최소 급여, 평균 임금 미만 2

      mysql> select
          -> dep 部门,
          -> group_concat(name) 成员,
          -> max(salary) 最高薪资,
          -> min(salary) 最低薪资,
          -> avg(salary) 平均薪资,
          -> sum(salary) 总薪资,
          -> count(sex) 人数
          -> from emp group by dep having min(salary)<2;
      # 由于工资是小数,所以在数据库里可能会出现一些错误
      +-----------+-----------------+--------------+--------------------+---------------
      | 部门  | 成员            |最高薪资| 最低薪资| 平均薪资| 总薪资 |人数|
      +-----------+-----------------+--------------+--------------------+---------------
      | 咨询部| mmm,lll,fff,iii |9      | 1.20  | 6.250  | 25.0  | 4 |
      | 教职部| kkk,aaa         |10.5   | 1.20  | 5.85   | 11.7  | 2 |
      +-----------+-----------------+--------------+--------------------+---------------

2.3.4 정렬 순서에 의해

문법의 첫 번째 규칙

asc : 字段升序排序,默认是升序
desc : 字段降序排序

# 语法
order by 主排序字段 [asc|desc], 次排序字段1 [asc|desc], ...次排序字段n [asc|desc]
#1.先按主排序字段排序,如果出现主排序字段有某两个或多个字段相同,那就再去按次排序字段排序

둘째, 테스트 데이터

  • 그룹이 해제 된 테스트

    • 연령 상승으로

      mysql> select * from emp order by age asc;
      +----+------+------+------+--------+--------+-----------+-----------+
      | id | name | sex  | age  | salary | area   | addr      | dep       |
      +----+------+------+------+--------+--------+-----------+-----------+
      |  7 | ggg  | 男   |   18 |    8.8 | 安徽   | 宣城      | 教学部    |
      |  6 | fff  | 男   |   18 |    8.8 | 中国   | 黄浦      | 咨询部    |
      | 11 | kkk  | 女   |   28 |    1.2 | 山东   | 青岛      | 教职部    |
      |  8 | hhh  | 男   |   28 |    9.8 | 安徽   | 巢湖      | 教学部    |
      |  5 | eee  | 男   |   28 |    2.4 | 江苏   | 苏州      | 教学部    |
      |  4 | ddd  | 女   |   28 |    2.4 | 广州   | 广东      | 教学部    |
      |  3 | ccc  | 女   |   30 |      3 | 江苏   | 张家港    | 教学部    |
      | 14 | nnn  | 男   |   30 |      6 | 上海   | 浦西      | 教学部    |
      | 12 | lll  | 男   |   30 |      9 | 上海   | 浦东      | 咨询部    |
      | 13 | mmm  | 男   |   30 |      6 | 上海   | 浦东      | 咨询部    |
      |  9 | iii  | 女   |   36 |    1.2 | 安徽   | 芜湖      | 咨询部    |
      | 10 | jjj  | 男   |   36 |    5.8 | 山东   | 济南      | 教学部    |
      |  2 | bbb  | 男   |   38 |    9.4 | 山东   | 济南      | 教学部    |
      |  1 | aaa  | 男   |   42 |   10.5 | 上海   | 浦东      | 教职部    |
      | 15 | ooo  | 女   |   67 |  2.501 | 上海   | 陆家嘴    | 教学部    |
      +----+------+------+------+--------+--------+-----------+-----------+
    • 급여에 따라 내림차순

      mysql> select * from emp order by salary desc;
      +----+------+------+------+--------+--------+-----------+-----------+
      | id | name | sex  | age  | salary | area   | addr      | dep       |
      +----+------+------+------+--------+--------+-----------+-----------+
      |  1 | aaa  | 男   |   42 |   10.5 | 上海   | 浦东      | 教职部    |
      |  8 | hhh  | 男   |   28 |    9.8 | 安徽   | 巢湖      | 教学部    |
      |  2 | bbb  | 男   |   38 |    9.4 | 山东   | 济南      | 教学部    |
      | 12 | lll  | 男   |   30 |      9 | 上海   | 浦东      | 咨询部    |
      |  6 | fff  | 男   |   18 |    8.8 | 中国   | 黄浦      | 咨询部    |
      |  7 | ggg  | 男   |   18 |    8.8 | 安徽   | 宣城      | 教学部    |
      | 14 | nnn  | 男   |   30 |      6 | 上海   | 浦西      | 教学部    |
      | 13 | mmm  | 男   |   30 |      6 | 上海   | 浦东      | 咨询部    |
      | 10 | jjj  | 男   |   36 |    5.8 | 山东   | 济南      | 教学部    |
      |  3 | ccc  | 女   |   30 |      3 | 江苏   | 张家港    | 教学部    |
      | 15 | ooo  | 女   |   67 |  2.501 | 上海   | 陆家嘴    | 教学部    |
      |  5 | eee  | 男   |   28 |    2.4 | 江苏   | 苏州      | 教学部    |
      |  4 | ddd  | 女   |   28 |    2.4 | 广州   | 广东      | 教学部    |
      | 11 | kkk  | 女   |   28 |    1.2 | 山东   | 青岛      | 教职部    |
      |  9 | iii  | 女   |   36 |    1.2 | 安徽   | 芜湖      | 咨询部    |
      +----+------+------+------+--------+--------+-----------+-----------+
    • 같은 경우, 다음 시대의 내림차순으로 내림차순으로 월급으로

      mysql> select * from emp order by salary desc,age desc;
      +----+------+------+------+--------+--------+-----------+-----------+
      | id | name | sex  | age  | salary | area   | addr      | dep       |
      +----+------+------+------+--------+--------+-----------+-----------+
      |  1 | aaa  | 男   |   42 |   10.5 | 上海   | 浦东      | 教职部    |
      |  8 | hhh  | 男   |   28 |    9.8 | 安徽   | 巢湖      | 教学部    |
      |  2 | bbb  | 男   |   38 |    9.4 | 山东   | 济南      | 教学部    |
      | 12 | lll  | 男   |   30 |      9 | 上海   | 浦东      | 咨询部    |
      |  6 | fff  | 男   |   18 |    8.8 | 中国   | 黄浦      | 咨询部    |
      |  7 | ggg  | 男   |   18 |    8.8 | 安徽   | 宣城      | 教学部    |
      | 14 | nnn  | 男   |   30 |      6 | 上海   | 浦西      | 教学部    |
      | 13 | mmm  | 男   |   30 |      6 | 上海   | 浦东      | 咨询部    |
      | 10 | jjj  | 男   |   36 |    5.8 | 山东   | 济南      | 教学部    |
      |  3 | ccc  | 女   |   30 |      3 | 江苏   | 张家港    | 教学部    |
      | 15 | ooo  | 女   |   67 |  2.501 | 上海   | 陆家嘴    | 教学部    |
      |  5 | eee  | 男   |   28 |    2.4 | 江苏   | 苏州      | 教学部    |
      |  4 | ddd  | 女   |   28 |    2.4 | 广州   | 广东      | 教学部    |
      |  9 | iii  | 女   |   36 |    1.2 | 安徽   | 芜湖      | 咨询部    |
      | 11 | kkk  | 女   |   28 |    1.2 | 山东   | 青岛      | 教职部    |
      +----+------+------+------+--------+--------+-----------+-----------+
    • 연령에 따라 내림차순으로, 같은 경우, 다음 내림차순을 지불

      mysql> select * from emp order by age desc,salary desc;
      +----+------+------+------+--------+--------+-----------+-----------+
      | id | name | sex  | age  | salary | area   | addr      | dep       |
      +----+------+------+------+--------+--------+-----------+-----------+
      | 15 | ooo  | 女   |   67 |  2.501 | 上海   | 陆家嘴    | 教学部    |
      |  1 | aaa  | 男   |   42 |   10.5 | 上海   | 浦东      | 教职部    |
      |  2 | bbb  | 男   |   38 |    9.4 | 山东   | 济南      | 教学部    |
      | 10 | jjj  | 男   |   36 |    5.8 | 山东   | 济南      | 教学部    |
      |  9 | iii  | 女   |   36 |    1.2 | 安徽   | 芜湖      | 咨询部    |
      | 12 | lll  | 男   |   30 |      9 | 上海   | 浦东      | 咨询部    |
      | 14 | nnn  | 男   |   30 |      6 | 上海   | 浦西      | 教学部    |
      | 13 | mmm  | 男   |   30 |      6 | 上海   | 浦东      | 咨询部    |
      |  3 | ccc  | 女   |   30 |      3 | 江苏   | 张家港    | 教学部    |
      |  8 | hhh  | 男   |   28 |    9.8 | 安徽   | 巢湖      | 教学部    |
      |  5 | eee  | 男   |   28 |    2.4 | 江苏   | 苏州      | 教学部    |
      |  4 | ddd  | 女   |   28 |    2.4 | 广州   | 广东      | 教学部    |
      | 11 | kkk  | 女   |   28 |    1.2 | 山东   | 青岛      | 教职部    |
      |  7 | ggg  | 男   |   18 |    8.8 | 安徽   | 宣城      | 教学部    |
      |  6 | fff  | 男   |   18 |    8.8 | 中国   | 黄浦      | 咨询部    |
      +----+------+------+------+--------+--------+-----------+-----------+
  • 그룹화 된 상태

    • (예를 들어, 이미 그룹마다 상기 후) 순으로 높은 급여에 따르면

      mysql> select
          -> dep 部门,
          -> group_concat(name)成员,
          -> max(salary) 最高薪资,
          -> min(salary) 最低薪资,
          -> avg(salary) 平均薪资,
          -> sum(salary) 总薪资,
          -> count(sex) 人数
          -> from emp group by dep order by 最高薪资 desc;
      
      # 由于工资是小数,所以在数据库里可能会出现一些错误
      +-----------+-------------------------------------+--------------+--------------+-
      | 部门 | 成员                                 |最高薪资| 最低薪资|平均薪资|总薪资|人数   |
      +-----------+-------------------------------------+--------------+--------------+-
      | 教职部| kkk,aaa                             |10.5  |1.2     |5.85   |11.7 |2 |
      | 教学部| ooo,nnn,jjj,hhh,ggg,eee,ddd,ccc,bbb |9.8   |2.4     |5.56   |50.1 |9 |
      | 咨询部| mmm,lll,fff,iii                     |9     |1.2     |6.2    |25.0 |4 |
      +-----------+-------------------------------------+--------------+--------------+-

2.3.5 제한 제한

첫째, 문법

limit 条数 
limit 偏移量,条数 偏移量就是跳过几条数据后开始取

둘째, 테스트 데이터 (제한 제한)

  • 급여 임금 직원 이름은 8 개 미만의 임금의 내림차순으로, A가 선택되고

     select name,salary from emp where salary<8 order by salary desc limit 1;
    +------+--------+
    | name | salary |
    +------+--------+
    | mmm  |      6 |
    +------+--------+
  • 기록 조건 (5)를 만족하는 모든 이동 고용인 데이터 테이블 쿼리는 다음 3 점검

    mysql> select * from emp limit 5,3;
    +----+------+------+------+--------+--------+--------+-----------+
    | id | name | sex  | age  | salary | area   | addr   | dep       |
    +----+------+------+------+--------+--------+--------+-----------+
    |  6 | fff  | 男   |   18 |    8.8 | 中国   | 黄浦   | 咨询部    |
    |  7 | ggg  | 男   |   18 |    8.8 | 安徽   | 宣城   | 教学部    |
    |  8 | hhh  | 男   |   28 |    9.8 | 安徽   | 巢湖   | 教学部    |
    +----+------+------+------+--------+--------+--------+-----------+

추천

출처www.cnblogs.com/xichenHome/p/11588406.html