基本格式

  1. SELECT <列名> FROM <表名> WHERE <限制条件>;
  1. mysql> create database company;
  2. Query OK, 1 row affected (0.00 sec)
  3. mysql> use company;
  4. Database changed
  5. mysql> show tables;
  6. Empty set (0.00 sec)
  7. mysql> create table employee ( name varchar(20) NOT NULL, age int );
  8. Query OK, 0 rows affected (0.02 sec)
  9. mysql> show tables;
  10. +-------------------+
  11. | Tables_in_company |
  12. +-------------------+
  13. | employee |
  14. +-------------------+
  15. 1 row in set (0.00 sec)
  16. mysql> INSERT INTO employee VALUES ('Tom', 26), ('Jack', 24), ('Rose', 22), ('Jim', 35), ('Mary', 21), ('Alex', 26), ('Ken', 27), ('Rick', 24);
  17. Query OK, 8 rows affected (0.01 sec)
  18. Records: 8 Duplicates: 0 Warnings: 0
  19. mysql> SELECT * FROM employee;
  20. +------+------+
  21. | name | age |
  22. +------+------+
  23. | Tom | 26 |
  24. | Jack | 24 |
  25. | Rose | 22 |
  26. | Jim | 35 |
  27. | Mary | 21 |
  28. | Alex | 26 |
  29. | Ken | 27 |
  30. | Rick | 24 |
  31. +------+------+
  32. 8 rows in set (0.00 sec)
  33. mysql> SELECT name FROM employee;
  34. +------+
  35. | name |
  36. +------+
  37. | Tom |
  38. | Jack |
  39. | Rose |
  40. | Jim |
  41. | Mary |
  42. | Alex |
  43. | Ken |
  44. | Rick |
  45. +------+
  46. 8 rows in set (0.00 sec)
  47. mysql> SELECT name FROM employee WHERE age>25;
  48. +------+
  49. | name |
  50. +------+
  51. | Tom |
  52. | Jim |
  53. | Alex |
  54. | Ken |
  55. +------+
  56. 4 rows in set (0.00 sec)
  57. mysql> SELECT name FROM employee WHERE name='Mary';
  58. +------+
  59. | name |
  60. +------+
  61. | Mary |
  62. +------+
  63. 1 row in set (0.00 sec)
  64. mysql> SELECT * FROM employee WHERE name='Mary';
  65. +------+------+
  66. | name | age |
  67. +------+------+
  68. | Mary | 21 |
  69. +------+------+
  70. 1 row in set (0.00 sec)


Where

  • WHERE 限制条件可以有数学符号 (=,<,>,>=,<=)
  • WHERE 后面可以有不止一条限制,而根据条件之间的逻辑关系,可以用 [条件一 OR 条件二] 和 [条件一 AND 条件二] 连接
  • 取范围:
    • <列名> BETWEEN a AND b; 注意BETWEEN AND是左右取的都是闭区间
    • <列名> >= a AND <列名> <= b;

IN 和 NOT IN

  • IN ():在选项中
  • NOT IN (): 不在选项中

通配符

LIKE

  • _ (一个未指定字符)
  • % (不定个未指定字符)

对结果排序

ORDER BY

  • ASC:默认升序,从小到大
  • DESC: 从大到小,降序排列 ```sql mysql> SELECT * FROM employee ORDER BY age DESC; +———+———+ | name | age | +———+———+ | Jim | 35 | | Ken | 27 | | Tom | 26 | | Alex | 26 | | Jack | 24 | | Rick | 24 | | Rose | 22 | | Mary | 21 | +———+———+ 8 rows in set (0.00 sec)
  1. <a name="nIGRa"></a>
  2. ## AS
  3. 对值进行重命名
  4. <a name="hCJAu"></a>
  5. ## 计数、求和、平均、最大、最小
  6. SQL 有 5 个内置函数,这些函数都对 SELECT 的结果做操作:
  7. | 函数名: | COUNT | SUM | AVG | MAX | MIN |
  8. | --- | --- | --- | --- | --- | --- |
  9. | 作用: | 计数 | 求和 | 求平均值 | 最大值 | 最小值 |
  10. ```sql
  11. mysql> SELECT COUNT(age) FROM employee;
  12. +------------+
  13. | COUNT(age) |
  14. +------------+
  15. | 8 |
  16. +------------+
  17. 1 row in set (0.00 sec)
  18. mysql> SELECT MAX(age) FROM employee;
  19. +----------+
  20. | MAX(age) |
  21. +----------+
  22. | 35 |
  23. +----------+
  24. 1 row in set (0.00 sec)
  25. mysql> SELECT MAX(age) AS max_age FROM employee;
  26. +---------+
  27. | max_age |
  28. +---------+
  29. | 35 |
  30. +---------+
  31. 1 row in set (0.00 sec)
  32. mysql> SELECT MAX(age) AS max_age, MIN(age) AS min_age FROM employee;
  33. +---------+---------+
  34. | max_age | min_age |
  35. +---------+---------+
  36. | 35 | 21 |
  37. +---------+---------+
  38. 1 row in set (0.00 sec)
  39. mysql> SELECT MAX(age) AS max_age, MIN(age) AS min_age, AVG(age) as avg_age FROM employee;;
  40. +---------+---------+---------+
  41. | max_age | min_age | avg_age |
  42. +---------+---------+---------+
  43. | 35 | 21 | 25.6250 |
  44. +---------+---------+---------+
  45. 1 row in set (0.00 sec)