mysql study 7

来源:互联网 发布:notepad mac版 编辑:程序博客网 时间:2024/05/23 12:47
mysql 查询数据:1.查询语句的基本语法。SELECT 属性列表 FROM 表名和视图列表 [WHERE 条件表达式][GROUP BY 属性名1[HAVING 条件表达式2]][ORDER BY 属性名2[ASC|DESC]]];mysql> CREATE TABLE employee(    -> num INT NOT NULL PRIMARY KEY AUTO_INCREMENT,    -> id INT NOT NULL,    -> name VARCHAR(20),    -> age INT,    -> sex VARCHAR(4),    -> homeaddr VARCHAR(50)    -> );Query OK, 0 rows affected (0.00 sec)mysql> INSERT INTO employee VALUES(NULL,1001,'zhangsan',26,'man','beijing');Query OK, 1 row affected (0.00 sec)mysql> INSERT INTO employee VALUES(NULL,1001,'lisi',24,'woman','hubei');Query OK, 1 row affected, 1 warning (0.00 sec)mysql> INSERT INTO employee VALUES(NULL,1002,'wangwu',25,'woman','hunan');Query OK, 1 row affected, 1 warning (0.00 sec)mysql> INSERT INTO employee VALUES(NULL,1004,'sky',15,'man','sichuan');Query OK, 1 row affected (0.00 sec)mysql> SELECT * FROM employee;+-----+------+----------+------+------+----------+| num | id   | name     | age  | sex  | homeaddr |+-----+------+----------+------+------+----------+|   1 | 1001 | zhangsan |   26 | man  | beijing  ||   2 | 1001 | lisi     |   24 | woma | hubei    ||   3 | 1002 | wangwu   |   25 | woma | hunan    ||   4 | 1004 | sky      |   15 | man  | sichuan  |+-----+------+----------+------+------+----------+mysql> SELECT num,id,name,age,sex,homeaddr    -> FROM employee    -> WHERE age<26    -> ORDER BY id DESC;+-----+------+--------+------+------+----------+| num | id   | name   | age  | sex  | homeaddr |+-----+------+--------+------+------+----------+|   4 | 1004 | sky    |   15 | man  | sichuan  ||   3 | 1002 | wangwu |   25 | woma | hunan    ||   2 | 1001 | lisi   |   24 | woma | hubei    |+-----+------+--------+------+------+----------+3 rows in set (0.00 sec)2.在单表上查询数据。(表示从一张表中查询数据)<1>.查询所有字段mysql> SELECT num,id,name,age,sex,homeaddr    -> FROM employee;+-----+------+----------+------+------+----------+| num | id   | name     | age  | sex  | homeaddr |+-----+------+----------+------+------+----------+|   1 | 1001 | zhangsan |   26 | man  | beijing  ||   2 | 1001 | lisi     |   24 | woma | hubei    ||   3 | 1002 | wangwu   |   25 | woma | hunan    ||   4 | 1004 | sky      |   15 | man  | sichuan  |+-----+------+----------+------+------+----------+4 rows in set (0.00 sec)mysql> SELECT * FROM employee;+-----+------+----------+------+------+----------+| num | id   | name     | age  | sex  | homeaddr |+-----+------+----------+------+------+----------+|   1 | 1001 | zhangsan |   26 | man  | beijing  ||   2 | 1001 | lisi     |   24 | woma | hubei    ||   3 | 1002 | wangwu   |   25 | woma | hunan    ||   4 | 1004 | sky      |   15 | man  | sichuan  |+-----+------+----------+------+------+----------+4 rows in set (0.00 sec)<2>.查询指定字段mysql> SELECT num, id FROM employee;+-----+------+| num | id   |+-----+------+|   1 | 1001 ||   2 | 1001 ||   3 | 1002 ||   4 | 1004 |+-----+------+4 rows in set (0.00 sec)mysql> SELECT * FROM employee WHERE id=1001;+-----+------+----------+------+------+----------+| num | id   | name     | age  | sex  | homeaddr |+-----+------+----------+------+------+----------+|   1 | 1001 | zhangsan |   26 | man  | beijing  ||   2 | 1001 | lisi     |   24 | woma | hubei    |+-----+------+----------+------+------+----------+2 rows in set (0.00 sec)<3>带IN(NOT IN)关键字的查询:mysql> SELECT * FROM employee WHERE id IN(1001,1004);+-----+------+----------+------+------+----------+| num | id   | name     | age  | sex  | homeaddr |+-----+------+----------+------+------+----------+|   1 | 1001 | zhangsan |   26 | man  | beijing  ||   2 | 1001 | lisi     |   24 | woma | hubei    ||   4 | 1004 | sky      |   15 | man  | sichuan  |+-----+------+----------+------+------+----------+3 rows in set (0.00 sec)mysql> SELECT * FROM employee WHERE name NOT IN('zhangsan','lisi');+-----+------+--------+------+------+----------+| num | id   | name   | age  | sex  | homeaddr |+-----+------+--------+------+------+----------+|   3 | 1002 | wangwu |   25 | woma | hunan    ||   4 | 1004 | sky    |   15 | man  | sichuan  |+-----+------+--------+------+------+----------+2 rows in set (0.00 sec)<4>BETWEEN AND (NOT BETWEEN AND):mysql> SELECT * FROM employee WHERE age BETWEEN 15 AND 25;+-----+------+--------+------+------+----------+| num | id   | name   | age  | sex  | homeaddr |+-----+------+--------+------+------+----------+|   2 | 1001 | lisi   |   24 | woma | hubei    ||   3 | 1002 | wangwu |   25 | woma | hunan    ||   4 | 1004 | sky    |   15 | man  | sichuan  |+-----+------+--------+------+------+----------+3 rows in set (0.00 sec)mysql> SELECT * FROM employee WHERE age NOT BETWEEN 15 AND 25;+-----+------+----------+------+------+----------+| num | id   | name     | age  | sex  | homeaddr |+-----+------+----------+------+------+----------+|   1 | 1001 | zhangsan |   26 | man  | beijing  |+-----+------+----------+------+------+----------+1 row in set (0.00 sec)<5>LIKE(NOT LIKE)'字符串'mysql> SELECT * FROM employee WHERE name LIKE 's%';#匹配名字字段中开头为s的+-----+------+------+------+------+----------+| num | id   | name | age  | sex  | homeaddr |+-----+------+------+------+------+----------+|   4 | 1004 | sky  |   15 | man  | sichuan  |+-----+------+------+------+------+----------+1 row in set (0.00 sec)mysql> SELECT * FROM employee WHERE name LIKE '%s%';#匹配名字中包含有s的+-----+------+----------+------+------+----------+| num | id   | name     | age  | sex  | homeaddr |+-----+------+----------+------+------+----------+|   1 | 1001 | zhangsan |   26 | man  | beijing  ||   2 | 1001 | lisi     |   24 | woma | hubei    ||   4 | 1004 | sky      |   15 | man  | sichuan  |+-----+------+----------+------+------+----------+3 rows in set (0.00 sec)mysql> SELECT * FROM employee WHERE name NOT LIKE 's%';+-----+------+----------+------+------+----------+| num | id   | name     | age  | sex  | homeaddr |+-----+------+----------+------+------+----------+|   1 | 1001 | zhangsan |   26 | man  | beijing  ||   2 | 1001 | lisi     |   24 | woma | hubei    ||   3 | 1002 | wangwu   |   25 | woma | hunan    |+-----+------+----------+------+------+----------+3 rows in set (0.00 sec)mysql> SELECT * FROM employee WHERE name NOT LIKE '%s%';+-----+------+--------+------+------+----------+| num | id   | name   | age  | sex  | homeaddr |+-----+------+--------+------+------+----------+|   3 | 1002 | wangwu |   25 | woma | hunan    |+-----+------+--------+------+------+----------+1 row in set (0.00 sec)mysql> SELECT * FROM employee WHERE name LIKE 's_y';#_表示的是任意的字符+-----+------+------+------+------+----------+| num | id   | name | age  | sex  | homeaddr |+-----+------+------+------+------+----------+|   4 | 1004 | sky  |   15 | man  | sichuan  |+-----+------+------+------+------+----------+1 row in set (0.00 sec)<6>IS (NOT)NULLmysql> SELECT * FROM work WHERE info is NULL;+------+-----------+------+------+| id   | name      | sex  | info |+------+-----------+------+------+| 1001 | zhangsan  | NULL | NULL || 1002 | zhangsan1 | NULL | NULL |+------+-----------+------+------+2 rows in set (0.00 sec)mysql> SELECT * FROM work WHERE info is NOT NULL;+------+-----------+------+---------+| id   | name      | sex  | info    |+------+-----------+------+---------+| 1003 | zhangsan2 | NULL | student |+------+-----------+------+---------+1 row in set (0.00 sec)<7>AND 多条件查询(同时满足所有条件):mysql> SELECT * FROM employee WHERE id=1001 AND age=26;+-----+------+----------+------+------+----------+| num | id   | name     | age  | sex  | homeaddr |+-----+------+----------+------+------+----------+|   1 | 1001 | zhangsan |   26 | man  | beijing  |+-----+------+----------+------+------+----------+1 row in set (0.00 sec)mysql> SELECT * FROM employee WHERE id=1001 AND age=26;+-----+------+----------+------+------+----------+| num | id   | name     | age  | sex  | homeaddr |+-----+------+----------+------+------+----------+|   1 | 1001 | zhangsan |   26 | man  | beijing  |+-----+------+----------+------+------+----------+1 row in set (0.00 sec)mysql> SELECT * FROM employee WHERE id=1001 AND age=26 AND sex='man';+-----+------+----------+------+------+----------+| num | id   | name     | age  | sex  | homeaddr |+-----+------+----------+------+------+----------+|   1 | 1001 | zhangsan |   26 | man  | beijing  |+-----+------+----------+------+------+----------+1 row in set (0.00 sec)<8>OR 查询(满足其中一个条件即可)mysql> SELECT * FROM employee WHERE id=1001 OR age<26 OR sex='man';+-----+------+----------+------+------+----------+| num | id   | name     | age  | sex  | homeaddr |+-----+------+----------+------+------+----------+|   1 | 1001 | zhangsan |   26 | man  | beijing  ||   2 | 1001 | lisi     |   24 | woma | hubei    ||   3 | 1002 | wangwu   |   25 | woma | hunan    ||   4 | 1004 | sky      |   15 | man  | sichuan  |+-----+------+----------+------+------+----------+4 rows in set (0.00 sec)<9>DISTINCT(消除重复的值)mysql> SELECT  DISTINCT id FROM employee;+------+| id   |+------+| 1001 || 1002 || 1004 |+------+3 rows in set (0.00 sec)<10>ORDER BY 属性名[ASC(升序)|DESC]mysql> SELECT  * FROM employee ORDER BY age;+-----+------+----------+------+------+----------+| num | id   | name     | age  | sex  | homeaddr |+-----+------+----------+------+------+----------+|   4 | 1004 | sky      |   15 | man  | sichuan  ||   2 | 1001 | lisi     |   24 | woma | hubei    ||   3 | 1002 | wangwu   |   25 | woma | hunan    ||   1 | 1001 | zhangsan |   26 | man  | beijing  |+-----+------+----------+------+------+----------+4 rows in set (0.00 sec)mysql> SELECT  * FROM employee ORDER BY age DESC;+-----+------+----------+------+------+----------+| num | id   | name     | age  | sex  | homeaddr |+-----+------+----------+------+------+----------+|   1 | 1001 | zhangsan |   26 | man  | beijing  ||   3 | 1002 | wangwu   |   25 | woma | hunan    ||   2 | 1001 | lisi     |   24 | woma | hubei    ||   4 | 1004 | sky      |   15 | man  | sichuan  |+-----+------+----------+------+------+----------+4 rows in set (0.00 sec)mysql> SELECT  * FROM employee ORDER BY age ASC;+-----+------+----------+------+------+----------+| num | id   | name     | age  | sex  | homeaddr |+-----+------+----------+------+------+----------+|   4 | 1004 | sky      |   15 | man  | sichuan  ||   2 | 1001 | lisi     |   24 | woma | hubei    ||   3 | 1002 | wangwu   |   25 | woma | hunan    ||   1 | 1001 | zhangsan |   26 | man  | beijing  |+-----+------+----------+------+------+----------+4 rows in set (0.00 sec)<11>GROUP BY mysql> SELECT * FROM employee GROUP BY sex;+-----+------+----------+------+------+----------+| num | id   | name     | age  | sex  | homeaddr |+-----+------+----------+------+------+----------+|   1 | 1001 | zhangsan |   26 | man  | beijing  ||   2 | 1001 | lisi     |   24 | woma | hubei    |+-----+------+----------+------+------+----------+2 rows in set (0.00 sec)mysql> SELECT sex ,GROUP_CONCAT(name) FROM employee GROUP BY sex;+------+--------------------+| sex  | GROUP_CONCAT(name) |+------+--------------------+| man  | zhangsan,sky       || woma | lisi,wangwu        |+------+--------------------+2 rows in set (0.00 sec)mysql> SELECT sex ,COUNT(sex) FROM employee GROUP BY sex;+------+------------+| sex  | COUNT(sex) |+------+------------+| man  |          2 || woma |          2 |+------+------------+2 rows in set (0.00 sec)mysql> SELECT sex ,COUNT(sex) FROM employee GROUP BY sex HAVING COUNT(sex)>=3;Empty set (0.00 sec)mysql> SELECT sex ,COUNT(sex) FROM employee GROUP BY sex HAVING COUNT(sex)>=2;+------+------------+| sex  | COUNT(sex) |+------+------------+| man  |          2 || woma |          2 |+------+------------+2 rows in set (0.00 sec)mysql> SELECT * FROM employee GROUP BY sex,id;+-----+------+----------+------+------+----------+| num | id   | name     | age  | sex  | homeaddr |+-----+------+----------+------+------+----------+|   1 | 1001 | zhangsan |   26 | man  | beijing  ||   4 | 1004 | sky      |   15 | man  | sichuan  ||   2 | 1001 | lisi     |   24 | woma | hubei    ||   3 | 1002 | wangwu   |   25 | woma | hunan    |+-----+------+----------+------+------+----------+4 rows in set (0.00 sec)mysql> SELECT * FROM employee GROUP BY id,sex;+-----+------+----------+------+------+----------+| num | id   | name     | age  | sex  | homeaddr |+-----+------+----------+------+------+----------+|   1 | 1001 | zhangsan |   26 | man  | beijing  ||   2 | 1001 | lisi     |   24 | woma | hubei    ||   3 | 1002 | wangwu   |   25 | woma | hunan    ||   4 | 1004 | sky      |   15 | man  | sichuan  |+-----+------+----------+------+------+----------+4 rows in set (0.00 sec)mysql> SELECT sex ,COUNT(sex) FROM employee GROUP BY sex WITH ROLLUP;+------+------------+| sex  | COUNT(sex) |+------+------------+| man  |          2 || woma |          2 || NULL |          4 |+------+------------+3 rows in set (0.00 sec)mysql> SELECT * FROM employee LIMIT 6;+-----+------+----------+------+------+----------+| num | id   | name     | age  | sex  | homeaddr |+-----+------+----------+------+------+----------+|   1 | 1001 | zhangsan |   26 | man  | beijing  ||   2 | 1001 | lisi     |   24 | woma | hubei    ||   3 | 1002 | wangwu   |   25 | woma | hunan    ||   4 | 1004 | sky      |   15 | man  | sichuan  |+-----+------+----------+------+------+----------+4 rows in set (0.00 sec)mysql> SELECT * FROM employee LIMIT 0,2;+-----+------+----------+------+------+----------+| num | id   | name     | age  | sex  | homeaddr |+-----+------+----------+------+------+----------+|   1 | 1001 | zhangsan |   26 | man  | beijing  ||   2 | 1001 | lisi     |   24 | woma | hubei    |+-----+------+----------+------+------+----------+2 rows in set (0.00 sec)mysql> SELECT * FROM employee LIMIT 1,2;+-----+------+--------+------+------+----------+| num | id   | name   | age  | sex  | homeaddr |+-----+------+--------+------+------+----------+|   2 | 1001 | lisi   |   24 | woma | hubei    ||   3 | 1002 | wangwu |   25 | woma | hunan    |+-----+------+--------+------+------+----------+2 rows in set (0.00 sec)<12>集合函数:(1)COUNT:mysql> SELECT id,  COUNT(*) FROM employee GROUP BY id;#以id分组然后统计数量+------+----------+| id   | COUNT(*) |+------+----------+| 1001 |        2 || 1002 |        1 || 1004 |        1 |+------+----------+3 rows in set (0.00 sec)mysql> SELECT COUNT(*) FROM employee ;+----------+| COUNT(*) |+----------+|        4 |+----------+1 row in set (0.00 sec)(2)SUM:求和函数mysql> CREATE TABLE grade(    -> num INT(10) NOT NULL,    -> course VARCHAR(10) NOT NULL,    -> score FLOAT    -> );Query OK, 0 rows affected (0.00 sec)mysql> DESC grade;+--------+-------------+------+-----+---------+-------+| Field  | Type        | Null | Key | Default | Extra |+--------+-------------+------+-----+---------+-------+| num    | int(10)     | NO   |     | NULL    |       || course | varchar(10) | NO   |     | NULL    |       || score  | float       | YES  |     | NULL    |       |+--------+-------------+------+-----+---------+-------+3 rows in set (0.00 sec)mysql> INSERT INTO grade VALUES(1001,'shuxue',80);Query OK, 1 row affected (0.00 sec)mysql> INSERT INTO grade VALUES(1001,'yuwen',90);Query OK, 1 row affected (0.01 sec)mysql> INSERT INTO grade VALUES(1001,'English',60);Query OK, 1 row affected (0.00 sec)mysql> INSERT INTO grade VALUES(1001,'computer',79);Query OK, 1 row affected (0.01 sec)mysql> INSERT INTO grade VALUES(1002,'shuxue',99);Query OK, 1 row affected (0.00 sec)mysql> INSERT INTO grade VALUES(1002,'yuwen',91);Query OK, 1 row affected (0.00 sec)mysql> INSERT INTO grade VALUES(1002,'english',77);Query OK, 1 row affected (0.00 sec)mysql> INSERT INTO grade VALUES(1002,'computer',78);Query OK, 1 row affected (0.01 sec)mysql> SELECT    -> * FROM grade;+------+----------+-------+| num  | course   | score |+------+----------+-------+| 1001 | shuxue   |    80 || 1001 | yuwen    |    90 || 1001 | English  |    60 || 1001 | computer |    79 || 1002 | shuxue   |    99 || 1002 | yuwen    |    91 || 1002 | english  |    77 || 1002 | computer |    78 |+------+----------+-------+8 rows in set (0.00 sec)mysql> SELECT num, SUM(score) FROM grade WHERE num=1001;+------+------------+| num  | SUM(score) |+------+------------+| 1001 |        309 |+------+------------+1 row in set (0.00 sec)mysql> SELECT num, SUM(score) FROM grade GROUP BY num;+------+------------+| num  | SUM(score) |+------+------------+| 1001 |        309 || 1002 |        345 |+------+------------+2 rows in set (0.00 sec)mysql> SELECT course, SUM(score) FROM grade GROUP BY course;+----------+------------+| course   | SUM(score) |+----------+------------+| computer |        157 || English  |        137 || shuxue   |        179 || yuwen    |        181 |+----------+------------+4 rows in set (0.00 sec)(3)AVG:平均值mysql> SELECT num, AVG(score) FROM grade GROUP BY num;+------+------------+| num  | AVG(score) |+------+------------+| 1001 |      77.25 || 1002 |      86.25 |+------+------------+2 rows in set (0.00 sec)(4)MAX:最大值:mysql> SELECT MAX(score) FROM grade;+------------+| MAX(score) |+------------+|         99 |+------------+1 row in set (0.00 sec)mysql> SELECT course, MAX(score) FROM grade GROUP BY course;+----------+------------+| course   | MAX(score) |+----------+------------+| computer |         79 || English  |         77 || shuxue   |         99 || yuwen    |         91 |+----------+------------+4 rows in set (0.00 sec)mysql> SELECT  MAX(course) FROM grade ;#比较的是ASCLL码。+-------------+| MAX(course) |+-------------+| yuwen       |+-------------+1 row in set (0.00 sec)(4)MIN:最小值与最大值相反。内连接查询:mysql> SELECT * FROM department;+------+------------+--------------------+------------------+| id   | d_name     | d_function         | d_dis            |+------+------------+--------------------+------------------+| 1001 | kaifabu    | kaifachanpgongneng | asdfljkasfkljasf || 1002 | shichangbu | renliziyuan        | asdfljkasfkljasf || 1002 | shichangbu | renliziyuan        | asdfljkasfkljasf || 1004 | touzibu    | faangongguan       | asdfljkasfkljasf |+------+------------+--------------------+------------------+4 rows in set (0.00 sec)mysql> SELECT * FROM employee;+-----+------+----------+------+------+----------+| num | id   | name     | age  | sex  | homeaddr |+-----+------+----------+------+------+----------+|   1 | 1001 | zhangsan |   26 | man  | beijing  ||   2 | 1001 | lisi     |   24 | woma | hubei    ||   3 | 1002 | wangwu   |   25 | woma | hunan    ||   4 | 1004 | sky      |   15 | man  | sichuan  |+-----+------+----------+------+------+----------+4 rows in set (0.00 sec)mysql> SELECT  department.id, d_name,d_function,d_dis,name,age,sex,homeaddr FRO department,employee WHERE department.id=employee.id;+------+------------+--------------------+------------------+----------+------+-----+----------+| id   | d_name     | d_function         | d_dis            | name     | age  |sex  | homeaddr |+------+------------+--------------------+------------------+----------+------+-----+----------+| 1001 | kaifabu    | kaifachanpgongneng | asdfljkasfkljasf | zhangsan |   26 |man  | beijing  || 1001 | kaifabu    | kaifachanpgongneng | asdfljkasfkljasf | lisi     |   24 |woma | hubei    || 1002 | shichangbu | renliziyuan        | asdfljkasfkljasf | wangwu   |   25 |woma | hunan    || 1002 | shichangbu | renliziyuan        | asdfljkasfkljasf | wangwu   |   25 |woma | hunan    || 1004 | touzibu    | faangongguan       | asdfljkasfkljasf | sky      |   15 |man  | sichuan  |+------+------------+--------------------+------------------+----------+------+-----+----------+5 rows in set (0.00 sec)mysql> SELECT  department.id, d_name,name,age,sex FROM department,employee WHER department.id=employee.id;+------+------------+----------+------+------+| id   | d_name     | name     | age  | sex  |+------+------------+----------+------+------+| 1001 | kaifabu    | zhangsan |   26 | man  || 1001 | kaifabu    | lisi     |   24 | woma || 1002 | shichangbu | wangwu   |   25 | woma || 1002 | shichangbu | wangwu   |   25 | woma || 1004 | touzibu    | sky      |   15 | man  |+------+------------+----------+------+------+5 rows in set (0.00 sec)外连接查询:SELECT 属性名 FROM 表名1 LEFT|RIGHT  JOIN 表名2 ON 表名1.属性名1=表名2.属性名2;mysql> SELECT  department.id, d_name,name,age,sex FROM department LEFT JOIN employee ON department.id=employee.id;+------+------------+--------+------+------+| id   | d_name     | name   | age  | sex  |+------+------------+--------+------+------+| 1001 | kaifabu    | NULL   | NULL | NULL || 1002 | shichangbu | wangwu |   25 | woma || 1002 | shichangbu | wangwu |   25 | woma || 1004 | touzibu    | sky    |   15 | man  |+------+------------+--------+------+------+mysql> SELECT  department.id, d_name,name,age,sex FROM department LEFT JOIN employee ON department.id=employee.id AND age>15;+------+------------+--------+------+------+| id   | d_name     | name   | age  | sex  |+------+------------+--------+------+------+| 1001 | kaifabu    | NULL   | NULL | NULL || 1002 | shichangbu | wangwu |   25 | woma || 1002 | shichangbu | wangwu |   25 | woma || 1004 | touzibu    | NULL   | NULL | NULL |+------+------------+--------+------+------+4 rows in set (0.00 sec)mysql> SELECT num,name,age,sex,department.id,d_name,d_function,d_dis    -> FROM employee RIGHT JOIN department ON employee.id=department.id;+------+--------+------+------+------+------------+--------------------+------------------+| num  | name   | age  | sex  | id   | d_name     | d_function         | d_dis          |+------+--------+------+------+------+------------+--------------------+------------------+| NULL | NULL   | NULL | NULL | 1001 | kaifabu    | kaifachanpgongneng | asdfljkasfkljasf ||    3 | wangwu |   25 | woma | 1002 | shichangbu | renliziyuan        | asdfljkasfkljasf ||    3 | wangwu |   25 | woma | 1002 | shichangbu | renliziyuan        | asdfljkasfkljasf ||    4 | sky    |   15 | man  | 1004 | touzibu    | faangongguan       | asdfljkasfkljasf |+------+--------+------+------+------+------------+--------------------+------------------+4 rows in set (0.00 sec)3.使用聚合函数查询数据。4.多表上联合查询。5.子查询。mysql> SELECT * FROM department;+------+------------+--------------------+------------------+| id   | d_name     | d_function         | d_dis            |+------+------------+--------------------+------------------+| 1001 | kaifabu    | kaifachanpgongneng | asdfljkasfkljasf || 1002 | shichangbu | renliziyuan        | asdfljkasfkljasf || 1002 | shichangbu | renliziyuan        | asdfljkasfkljasf || 1004 | touzibu    | faangongguan       | asdfljkasfkljasf |+------+------------+--------------------+------------------+4 rows in set (0.00 sec)mysql> SELECT * FROM employee;+-----+------+--------+------+------+----------+| num | id   | name   | age  | sex  | homeaddr |+-----+------+--------+------+------+----------+|   3 | 1002 | wangwu |   25 | woma | hunan    ||   4 | 1004 | sky    |   15 | man  | sichuan  |+-----+------+--------+------+------+----------+2 rows in set (0.00 sec)mysql> SELECT * FROM employee WHERE id IN(SELECT id FROM department);+-----+------+--------+------+------+----------+| num | id   | name   | age  | sex  | homeaddr |+-----+------+--------+------+------+----------+|   3 | 1002 | wangwu |   25 | woma | hunan    ||   4 | 1004 | sky    |   15 | man  | sichuan  |+-----+------+--------+------+------+----------+2 rows in set (0.00 sec)mysql> SELECT * FROM employee WHERE id NOT IN(SELECT id FROM department);Empty set (0.00 sec)<1>带比较运算符的子查询:mysql> CREATE TABLE computer_stu(    -> id INT PRIMARY KEY,    -> name VARCHAR(20),    -> score FLOAT    -> );Query OK, 0 rows affected (0.00 sec)mysql> INSERT INTO computer_stu VALUES(1001,'lily',85);Query OK, 1 row affected (0.00 sec)mysql> INSERT INTO computer_stu VALUES(1002,'Tom',91);Query OK, 1 row affected (0.00 sec)mysql> INSERT INTO computer_stu VALUES(1003,'Jim',87);Query OK, 1 row affected (0.00 sec)mysql> INSERT INTO computer_stu VALUES(1004,'Aric',77);Query OK, 1 row affected (0.00 sec)mysql> INSERT INTO computer_stu VALUES(1005,'Lucy',65);Query OK, 1 row affected (0.00 sec)mysql> INSERT INTO computer_stu VALUES(1006,'Andy',99);Query OK, 1 row affected (0.00 sec)mysql> INSERT INTO computer_stu VALUES(1007,'Jack',70);Query OK, 1 row affected (0.00 sec)mysql> SELECT    -> * FROM computer_stu;+------+------+-------+| id   | name | score |+------+------+-------+| 1001 | lily |    85 || 1002 | Tom  |    91 || 1003 | Jim  |    87 || 1004 | Aric |    77 || 1005 | Lucy |    65 || 1006 | Andy |    99 || 1007 | Jack |    70 |+------+------+-------+7 rows in set (0.00 sec)mysql> CREATE TABLE scoship(    -> level INT PRIMARY KEY,    -> score INT    -> );Query OK, 0 rows affected (0.00 sec)mysql> INSERT INTO scoship VALUES(1,90);Query OK, 1 row affected (0.00 sec)mysql> INSERT INTO scoship VALUES(2,80);Query OK, 1 row affected (0.00 sec)mysql> INSERT INTO scoship VALUES(3,70);Query OK, 1 row affected (0.00 sec)mysql> SELECT * FROM scoship;+-------+-------+| level | score |+-------+-------+|     1 |    90 ||     2 |    80 ||     3 |    70 |+-------+-------+3 rows in set (0.00 sec)mysql> SELECT id,name,score FROM computer_stu WHERE score >= (SELECT score FROMscoship WHERE level=1);+------+------+-------+| id   | name | score |+------+------+-------+| 1002 | Tom  |    91 || 1006 | Andy |    99 |+------+------+-------+2 rows in set (0.00 sec)<2>EXISTS 关键字的子查询:mysql> SELECT * FROM computer_stu WHERE EXISTS (SELECT Level FROM scoship WHEREscore=90);+------+------+-------+| id   | name | score |+------+------+-------+| 1001 | lily |    85 || 1002 | Tom  |    91 || 1003 | Jim  |    87 || 1004 | Aric |    77 || 1005 | Lucy |    65 || 1006 | Andy |    99 || 1007 | Jack |    70 |+------+------+-------+7 rows in set (0.00 sec)<3>ANY (满足其中的任一条件)mysql> SELECT * FROM computer_stu WHERE score >= ANY (SELECT score FROM scoship);+------+------+-------+| id   | name | score |+------+------+-------+| 1001 | lily |    85 || 1002 | Tom  |    91 || 1003 | Jim  |    87 || 1004 | Aric |    77 || 1006 | Andy |    99 || 1007 | Jack |    70 |+------+------+-------+6 rows in set (0.00 sec)<4>ALLmysql> SELECT * FROM computer_stu WHERE score >= ALL (SELECT score FROM scoship);+------+------+-------+| id   | name | score |+------+------+-------+| 1002 | Tom  |    91 || 1006 | Andy |    99 |+------+------+-------+2 rows in set (0.00 sec)6.合并查询结果。mysql> SELECT * FROM department;+------+------------+--------------------+------------------+| id   | d_name     | d_function         | d_dis            |+------+------------+--------------------+------------------+| 1001 | kaifabu    | kaifachanpgongneng | asdfljkasfkljasf || 1002 | shichangbu | renliziyuan        | asdfljkasfkljasf || 1002 | shichangbu | renliziyuan        | asdfljkasfkljasf || 1004 | touzibu    | faangongguan       | asdfljkasfkljasf |+------+------------+--------------------+------------------+4 rows in set (0.00 sec)mysql> SELECT * FROM employee;+-----+------+----------+------+------+----------+| num | id   | name     | age  | sex  | homeaddr |+-----+------+----------+------+------+----------+|   1 | 1001 | zhangsan |   26 | man  | beijing  ||   2 | 1001 | lisi     |   24 | woma | hubei    ||   3 | 1002 | wangwu   |   25 | woma | hunan    ||   4 | 1004 | sky      |   15 | man  | sichuan  |+-----+------+----------+------+------+----------+4 rows in set (0.00 sec)<5>UNION  (UNION ALL)mysql> SELECT id FROM department UNION SELECT id FROM employee;+------+| id   |+------+| 1001 || 1002 || 1004 |+------+3 rows in set (0.00 sec)mysql> SELECT id FROM department UNION ALL SELECT id FROM employee;+------+| id   |+------+| 1001 || 1002 || 1002 || 1004 || 1002 || 1004 |+------+6 rows in set (0.00 sec)7.为表和字段取别名。mysql> SELECT * FROM department d WHERE d.id=1002;+------+------------+-------------+------------------+| id   | d_name     | d_function  | d_dis            |+------+------------+-------------+------------------+| 1002 | shichangbu | renliziyuan | asdfljkasfkljasf || 1002 | shichangbu | renliziyuan | asdfljkasfkljasf |+------+------------+-------------+------------------+2 rows in set (0.00 sec)mysql> SELECT d_name AS department_name, id AS department_id FROM department;+-----------------+---------------+| department_name | department_id |+-----------------+---------------+| kaifabu         |          1001 || shichangbu      |          1002 || shichangbu      |          1002 || touzibu         |          1004 |+-----------------+---------------+4 rows in set (0.00 sec)8.使用正则表达式查询(REGEXP)。<1> ^匹配字符串开始的部分;<2> $匹配字符串结束的部分;<3> .代表字符串的任意一个部分,包括回车和换行<4> [字符集合]匹配'字符集合'中的任何一个字符<5> [^字符集合]匹配除了'字符集合'中的任何一个字符<6> $1|$2|$3匹配$1,$2,$3中的任意一个字符串<7> * 代表多个该符号之前的字符,包括0和1个<8> + 代表多个该符号之前的字符,包括1个<9> 字符串[N]字符串出现N次<10> 字符串[M,N] 字符串出现最少M次最多N次mysql> SELECT    -> * FROM computer_stu;+------+------+-------+| id   | name | score |+------+------+-------+| 1001 | lily |    85 || 1002 | Tom  |    91 || 1003 | Jim  |    87 || 1004 | Aric |    77 || 1005 | Lucy |    65 || 1006 | Andy |    99 || 1007 | Jack |    70 |+------+------+-------+7 rows in set (0.00 sec)mysql> SELECT * FROM computer_stu WHERE name REGEXP '^l';+------+------+-------+| id   | name | score |+------+------+-------+| 1001 | lily |    85 || 1005 | Lucy |    65 |+------+------+-------+2 rows in set (0.00 sec)mysql> SELECT * FROM computer_stu WHERE name REGEXP 'y$';+------+------+-------+| id   | name | score |+------+------+-------+| 1001 | lily |    85 || 1005 | Lucy |    65 || 1006 | Andy |    99 |+------+------+-------+3 rows in set (0.00 sec)mysql> SELECT * FROM computer_stu WHERE name REGEXP '^l..y$';+------+------+-------+| id   | name | score |+------+------+-------+| 1001 | lily |    85 || 1005 | Lucy |    65 |+------+------+-------+2 rows in set (0.00 sec)mysql> SELECT * FROM computer_stu WHERE name REGEXP '[k]';+------+------+-------+| id   | name | score |+------+------+-------+| 1007 | Jack |    70 |+------+------+-------+1 row in set (0.00 sec)mysql> SELECT * FROM computer_stu WHERE name REGEXP '[y]';+------+------+-------+| id   | name | score |+------+------+-------+| 1001 | lily |    85 || 1005 | Lucy |    65 || 1006 | Andy |    99 |+------+------+-------+3 rows in set (0.00 sec)mysql> SELECT * FROM computer_stu WHERE name REGEXP '[^y]';+------+------+-------+| id   | name | score |+------+------+-------+| 1001 | lily |    85 || 1002 | Tom  |    91 || 1003 | Jim  |    87 || 1004 | Aric |    77 || 1005 | Lucy |    65 || 1006 | Andy |    99 || 1007 | Jack |    70 |+------+------+-------+7 rows in set (0.00 sec)mysql> SELECT * FROM computer_stu WHERE name REGEXP 'lily|kibi';+------+------+-------+| id   | name | score |+------+------+-------+| 1001 | lily |    85 |+------+------+-------+1 row in set (0.00 sec)mysql> SELECT * FROM computer_stu WHERE name REGEXP '[0-9a-c]';+------+------+-------+| id   | name | score |+------+------+-------+| 1004 | Aric |    77 || 1005 | Lucy |    65 || 1006 | Andy |    99 || 1007 | Jack |    70 |+------+------+-------+4 rows in set (0.00 sec)mysql> SELECT * FROM computer_stu WHERE name REGEXP 'a*c';#a最少出现0次以上+------+------+-------+| id   | name | score |+------+------+-------+| 1004 | Aric |    77 || 1005 | Lucy |    65 || 1007 | Jack |    70 |+------+------+-------+3 rows in set (0.00 sec)mysql> SELECT * FROM computer_stu WHERE name REGEXP 'a+c';#a最少出现0次以上+------+------+-------+| id   | name | score |+------+------+-------+| 1007 | Jack |    70 |+------+------+-------+1 row in set (0.00 sec)mysql> SELECT * FROM computer_stu WHERE name REGEXP 'l{2}';#L字符最少出现2次Empty set (0.00 sec)mysql> SELECT * FROM computer_stu WHERE name REGEXP 'l{1}';#L字符最少出现1次+------+------+-------+| id   | name | score |+------+------+-------+| 1001 | lily |    85 || 1005 | Lucy |    65 |+------+------+-------+2 rows in set (0.00 sec)mysql> SELECT * FROM computer_stu WHERE name REGEXP 'l{1,2}';#L字符最少出现1次,最多出现2次+------+------+-------+| id   | name | score |+------+------+-------+| 1001 | lily |    85 || 1005 | Lucy |    65 |+------+------+-------+2 rows in set (0.00 sec)

0 0