mysql에서 조건부 제한문을 구현한 예 (1)

黄舟
풀어 주다: 2017-09-09 14:54:27
원래의
1510명이 탐색했습니다.

1.between 문:

mysql> select * from 4a where score between 76 and 89;
+--------+------+--------+------+--------+------+------+-------+
| sname  | sage | tname  | t    | cname  | s    | c    | score |
+--------+------+--------+------+--------+------+------+-------+
| 刘一   |   18 | 贺高   |    2 | 数学   |    1 |    2 |    78 |
| 钱二   |   19 | 叶平   |    1 | 语文   |    2 |    1 |    79 |
| 钱二   |   19 | 贺高   |    2 | 数学   |    2 |    2 |    81 |
| 张三   |   17 | 杨艳   |    3 | 英语   |    3 |    3 |    88 |
| 李四   |   18 | 贺高   |    2 | 数学   |    4 |    2 |    88 |
| 王五   |   17 | 杨艳   |    3 | 英语   |    5 |    3 |    78 |
+--------+------+--------+------+--------+------+------+-------+
6 rows in set (0.02 sec)
로그인 후 복사
mysql> select * from 4a where score between 78 and 88;
+--------+------+--------+------+--------+------+------+-------+
| sname  | sage | tname  | t    | cname  | s    | c    | score |
+--------+------+--------+------+--------+------+------+-------+
| 刘一   |   18 | 贺高   |    2 | 数学   |    1 |    2 |    78 |
| 钱二   |   19 | 叶平   |    1 | 语文   |    2 |    1 |    79 |
| 钱二   |   19 | 贺高   |    2 | 数学   |    2 |    2 |    81 |
| 张三   |   17 | 杨艳   |    3 | 英语   |    3 |    3 |    88 |
| 李四   |   18 | 贺高   |    2 | 数学   |    4 |    2 |    88 |
| 王五   |   17 | 杨艳   |    3 | 英语   |    5 |    3 |    78 |
+--------+------+--------+------+--------+------+------+-------+
6 rows in set (0.00 sec)
로그인 후 복사

이 두 가지 예를 보면 between 절이 실행될 때 값 범위에 경계 값이 포함되어 있음을 알 수 있습니다.

2.or 문:

mysql> select * from 4a where score=78 or score=88 or score>88 or score<60;
+--------+------+--------+------+--------+------+------+-------+
| sname  | sage | tname  | t    | cname  | s    | c    | score |
+--------+------+--------+------+--------+------+------+-------+
| 刘一   |   18 | 叶平   |    1 | 语文   |    1 |    1 |    56 |
| 刘一   |   18 | 贺高   |    2 | 数学   |    1 |    2 |    78 |
| 刘一   |   18 | 周磊   |    4 | 物理   |    1 |    4 |    58 |
| 钱二   |   19 | 杨艳   |    3 | 英语   |    2 |    3 |    92 |
| 张三   |   17 | 叶平   |    1 | 语文   |    3 |    1 |    91 |
| 张三   |   17 | 贺高   |    2 | 数学   |    3 |    2 |    47 |
| 张三   |   17 | 杨艳   |    3 | 英语   |    3 |    3 |    88 |
| 张三   |   17 | 周磊   |    4 | 物理   |    3 |    4 |    56 |
| 李四   |   18 | 贺高   |    2 | 数学   |    4 |    2 |    88 |
| 李四   |   18 | 杨艳   |    3 | 英语   |    4 |    3 |    90 |
| 李四   |   18 | 周磊   |    4 | 物理   |    4 |    4 |    93 |
| 王五   |   17 | 叶平   |    1 | 语文   |    5 |    1 |    46 |
| 王五   |   17 | 杨艳   |    3 | 英语   |    5 |    3 |    78 |
| 王五   |   17 | 周磊   |    4 | 物理   |    5 |    4 |    53 |
| 赵六   |   19 | 叶平   |    1 | 语文   |    6 |    1 |    35 |
| NULL   | NULL | NULL   | NULL | NULL   | NULL | NULL |    93 |
+--------+------+--------+------+--------+------+------+-------+
16 rows in set (0.00 sec)
로그인 후 복사

이 예를 통해 mysql 문에 or 절이 많이 있을 수 있음을 알 수 있습니다.

3.in 문:

mysql> select * from 4a where score in (78,93);
+--------+------+--------+------+--------+------+------+-------+
| sname  | sage | tname  | t    | cname  | s    | c    | score |
+--------+------+--------+------+--------+------+------+-------+
| 刘一   |   18 | 贺高   |    2 | 数学   |    1 |    2 |    78 |
| 李四   |   18 | 周磊   |    4 | 物理   |    4 |    4 |    93 |
| 王五   |   17 | 杨艳   |    3 | 英语   |    5 |    3 |    78 |
| NULL   | NULL | NULL   | NULL | NULL   | NULL | NULL |    93 |
+--------+------+--------+------+--------+------+------+-------+
4 rows in set (0.00 sec)
로그인 후 복사
mysql> select * from 4a where score in (score>60);
Empty set (0.00 sec)
로그인 후 복사

in 문은 특정 레코드나 괄호 안의 레코드만 일치할 수 있지만 논리적으로 일치할 수는 없는 것 같습니다.

mysql> select * from 4a where score>85;
+--------+------+--------+------+--------+------+------+-------+
| sname  | sage | tname  | t    | cname  | s    | c    | score |
+--------+------+--------+------+--------+------+------+-------+
| 钱二   |   19 | 杨艳   |    3 | 英语   |    2 |    3 |    92 |
| 张三   |   17 | 叶平   |    1 | 语文   |    3 |    1 |    91 |
| 张三   |   17 | 杨艳   |    3 | 英语   |    3 |    3 |    88 |
| 李四   |   18 | 贺高   |    2 | 数学   |    4 |    2 |    88 |
| 李四   |   18 | 杨艳   |    3 | 英语   |    4 |    3 |    90 |
| 李四   |   18 | 周磊   |    4 | 物理   |    4 |    4 |    93 |
| NULL   | NULL | NULL   | NULL | NULL   | NULL | NULL |    93 |
+--------+------+--------+------+--------+------+------+-------+
7 rows in set (0.00 sec)
로그인 후 복사

분명히 where의 기능은 in보다 훨씬 강력하므로 where의 명령 우선순위도 더 높습니다. 동일한 조건에서 where의 검색 범위는 in의 검색 범위보다 약간 더 큽니다. 결국 기능이 많을수록 검색할 항목이 더 많아집니다. 따라서 동일한 쿼리 조건에서 where의 효율성은 in에 비해 약간 떨어지겠지만, 물론 그 정도는 조금밖에 되지 않습니다. 물론 in의 명령 우선순위가 where보다 낮기 때문에 in을 사용할 때 SQL 문에서 오류를 보고할 가능성이 더 높습니다.

and 문:

mysql> select * from 4a where (score>85 and sage=18) and t=2;
+--------+------+--------+------+--------+------+------+-------+
| sname  | sage | tname  | t    | cname  | s    | c    | score |
+--------+------+--------+------+--------+------+------+-------+
| 李四   |   18 | 贺高   |    2 | 数学   |    4 |    2 |    88 |
+--------+------+--------+------+--------+------+------+-------+
1 row in set (0.00 sec)
로그인 후 복사

이 예를 통해 우리는 mysql 문에 많은 and 절이 있을 수 있음을 알 수 있습니다.

위 내용은 mysql에서 조건부 제한문을 구현한 예 (1)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!