• day40 增删改 单表查询的语法与关键字的执行优先级 简单查询,where关键字,group by关键字,having关键字,order by关键字,limit关键字,正则表达式,多表连接,子查询,查询语句的执行优先级


    增删改

    egon上课笔记

    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | db1                |
    | mysql              |
    | performance_schema |
    | sb1                |
    | sb2                |
    | sb3                |
    | test               |
    +--------------------+
    8 rows in set (0.00 sec)
    
    mysql> create database sb4;
    Query OK, 1 row affected (0.00 sec)
    
    mysql> use sb4;
    Database changed
    mysql> desc mysql.user;
    +------------------------+-----------------------------------+------+-----+-----
    ------------------+-------+
    | Field                  | Type                              | Null | Key | Defa
    ult               | Extra |
    +------------------------+-----------------------------------+------+-----+-----
    ------------------+-------+
    | Host                   | char(60)                          | NO   | PRI |
                      |       |
    | User                   | char(16)                          | NO   | PRI |
                      |       |
    | Password               | char(41)                          | NO   |     |
                      |       |
    | Select_priv            | enum('N','Y')                     | NO   |     | N
                      |       |
    | Insert_priv            | enum('N','Y')                     | NO   |     | N
                      |       |
    | Update_priv            | enum('N','Y')                     | NO   |     | N
                      |       |
    | Delete_priv            | enum('N','Y')                     | NO   |     | N
                      |       |
    | Create_priv            | enum('N','Y')                     | NO   |     | N
                      |       |
    | Drop_priv              | enum('N','Y')                     | NO   |     | N
                      |       |
    | Reload_priv            | enum('N','Y')                     | NO   |     | N
                      |       |
    | Shutdown_priv          | enum('N','Y')                     | NO   |     | N
                      |       |
    | Process_priv           | enum('N','Y')                     | NO   |     | N
                      |       |
    | File_priv              | enum('N','Y')                     | NO   |     | N
                      |       |
    | Grant_priv             | enum('N','Y')                     | NO   |     | N
                      |       |
    | References_priv        | enum('N','Y')                     | NO   |     | N
                      |       |
    | Index_priv             | enum('N','Y')                     | NO   |     | N
                      |       |
    | Alter_priv             | enum('N','Y')                     | NO   |     | N
                      |       |
    | Show_db_priv           | enum('N','Y')                     | NO   |     | N
                      |       |
    | Super_priv             | enum('N','Y')                     | NO   |     | N
                      |       |
    | Create_tmp_table_priv  | enum('N','Y')                     | NO   |     | N
                      |       |
    | Lock_tables_priv       | enum('N','Y')                     | NO   |     | N
                      |       |
    | Execute_priv           | enum('N','Y')                     | NO   |     | N
                      |       |
    | Repl_slave_priv        | enum('N','Y')                     | NO   |     | N
                      |       |
    | Repl_client_priv       | enum('N','Y')                     | NO   |     | N
                      |       |
    | Create_view_priv       | enum('N','Y')                     | NO   |     | N
                      |       |
    | Show_view_priv         | enum('N','Y')                     | NO   |     | N
                      |       |
    | Create_routine_priv    | enum('N','Y')                     | NO   |     | N
                      |       |
    | Alter_routine_priv     | enum('N','Y')                     | NO   |     | N
                      |       |
    | Create_user_priv       | enum('N','Y')                     | NO   |     | N
                      |       |
    | Event_priv             | enum('N','Y')                     | NO   |     | N
                      |       |
    | Trigger_priv           | enum('N','Y')                     | NO   |     | N
                      |       |
    | Create_tablespace_priv | enum('N','Y')                     | NO   |     | N
                      |       |
    | ssl_type               | enum('','ANY','X509','SPECIFIED') | NO   |     |
                      |       |
    | ssl_cipher             | blob                              | NO   |     | NULL
                      |       |
    | x509_issuer            | blob                              | NO   |     | NULL
                      |       |
    | x509_subject           | blob                              | NO   |     | NULL
                      |       |
    | max_questions          | int(11) unsigned                  | NO   |     | 0
                      |       |
    | max_updates            | int(11) unsigned                  | NO   |     | 0
                      |       |
    | max_connections        | int(11) unsigned                  | NO   |     | 0
                      |       |
    | max_user_connections   | int(11) unsigned                  | NO   |     | 0
                      |       |
    | plugin                 | char(64)                          | YES  |     | mysq
    l_native_password |       |
    | authentication_string  | text                              | YES  |     | NULL
                      |       |
    | password_expired       | enum('N','Y')                     | NO   |     | N
                      |       |
    +------------------------+-----------------------------------+------+-----+-----
    ------------------+-------+
    43 rows in set (0.01 sec)
    
    mysql> create table user(host char(60),user char(16),password char(41));
    Query OK, 0 rows affected (0.02 sec)
    
    mysql> desc user;
    +----------+----------+------+-----+---------+-------+
    | Field    | Type     | Null | Key | Default | Extra |
    +----------+----------+------+-----+---------+-------+
    | host     | char(60) | YES  |     | NULL    |       |
    | user     | char(16) | YES  |     | NULL    |       |
    | password | char(41) | YES  |     | NULL    |       |
    +----------+----------+------+-----+---------+-------+
    3 rows in set (0.04 sec)
    
    mysql> select host,user,password from mysql.user;
    +-----------+------+----------+
    | host      | user | password |
    +-----------+------+----------+
    | localhost | root |          |
    | 127.0.0.1 | root |          |
    | ::1       | root |          |
    | localhost |      |          |
    +-----------+------+----------+
    4 rows in set (0.00 sec)
    
    mysql> insert into user select host,user,password from mysql.user;
    Query OK, 4 rows affected (0.01 sec)
    Records: 4  Duplicates: 0  Warnings: 0
    
    mysql> select*from user;
    +-----------+------+----------+
    | host      | user | password |
    +-----------+------+----------+
    | localhost | root |          |
    | 127.0.0.1 | root |          |
    | ::1       | root |          |
    | localhost |      |          |
    +-----------+------+----------+
    4 rows in set (0.00 sec)
    
    mysql> select*from user;
    +-----------+------+----------+
    | host      | user | password |
    +-----------+------+----------+
    | localhost | root |          |
    | 127.0.0.1 | root |          |
    | ::1       | root |          |
    | localhost |      |          |
    +-----------+------+----------+
    4 rows in set (0.00 sec)
    
    mysql> update user set user="ROOT" where host="localhost";
    Query OK, 2 rows affected (0.01 sec)
    Rows matched: 2  Changed: 2  Warnings: 0
    
    mysql> select*from user;
    +-----------+------+----------+
    | host      | user | password |
    +-----------+------+----------+
    | localhost | ROOT |          |
    | 127.0.0.1 | root |          |
    | ::1       | root |          |
    | localhost | ROOT |          |
    +-----------+------+----------+
    4 rows in set (0.00 sec)
    
    mysql> delete from user where user="ROOT";
    Query OK, 4 rows affected (0.00 sec)
    
    mysql> select*from user;
    Empty set (0.00 sec)
    
    mysql> create table t5(id int);
    Query OK, 0 rows affected (0.02 sec)
    
    mysql> insert into t5 values(1),(2),(3),(4);
    Query OK, 4 rows affected (0.01 sec)
    Records: 4  Duplicates: 0  Warnings: 0
    
    mysql> select*from t5;
    +------+
    | id   |
    +------+
    |    1 |
    |    2 |
    |    3 |
    |    4 |
    +------+
    4 rows in set (0.00 sec)
    
    mysql> delete from t5 where id>2;
    Query OK, 2 rows affected (0.00 sec)
    
    mysql> delete from t5 where id>2;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> select*from t5;
    +------+
    | id   |
    +------+
    |    1 |
    |    2 |
    +------+
    2 rows in set (0.00 sec)
    

    column name 代表字段的意思


    # 1、跟权限有关的几张表
    user->db->table_priv->columns_priv

    # 2、只创建账号
    #create user tom@"客户端的ip" identified by "123";
    create user tom@"192.168.15.%" identified by "123";
    create user tom@"%" identified by "123";

    #客户端:192.168.15.13 服务端:192.168.15.90

    create user tom@"192.168.15.13 " identified by "123";
    mysql -utom -p"123" -h 192.168.15.90 -P 3306

    # 3、创建账号并且授权(只有root账号才能为其他账号授权grant)
    # *.* ===> mysql.user
    grant all on *.* to "tom"@"192.168.15.90" identified by "123";#all代表除了grant以外的所有权限

    # db1.* ===> mysql.db
    grant all on db1.* to "jack"@"192.168.15.90" identified by "123";#all代表除了grant以外的所有权限

    # db1.t1 ===> mysql.tables_priv
    grant all on db1.t1 to "rose"@"192.168.15.90" identified by "123";#all代表除了grant以外的所有权限

    # db1.t1(id) ===> mysql.columns_priv
    grant select(id),update(name) on db1.t1 to "lili"@"192.168.15.90" identified by "123";


    # 修改完权限一定要
    flush privileges;


    drop user "tom"@"192.168.15.90";
    drop user "jack"@"192.168.15.90";
    drop user "rose"@"192.168.15.90";
    drop user "lili"@"192.168.15.90";
    flush privileges;

    如何创建账号,以及具体步骤

    增删改 视频有32分钟到结束

    =============================================================================================================

    03 单表查询的语法与关键字的执行优先级

    #1、完整语法(语法级别关键字的排列顺序如下)
    select distinct 字段1,字段2,字段3,... from 库名.表名 #distinct去重的意思
    where 约束条件
    group by 分组依据
    having 过滤条件
    order by 排序的字段
    limit 限制显示的条数
    ;
    # 必须要有的关键字如下:
    select * from t1;


    # 关键字执行的优先级
    from
    where
    group by
    having
    distinct
    order by
    limit


    def from():
    pass

    def where():
    pass

    def group():
    pass

    def having():
    pass

    def distinct():
    pass

    def order():
    pass

    def limit():
    pass

    def select():
    f=from()
    res1=where(f)
    res2=group(res1)
    res3=having(res2)
    res4=distinct(res3)
    res5=order(res4)
    limit(res5)


     where关键字

    2、where
    select * from emp where id >= 10 and id <=15; # 等同于select * from emp where id between 10 and 15;
    select * from emp where id = 6 or id = 9 or id = 12; # 等同于select * from emp where id in (6,9,12);

    _代表任意单个字符
    %代表任意无穷个字符
    select * from emp where name like "__";
    select * from emp where name like "jin%";
    select * from emp where id not in (6,9,12);
    select * from emp where id not between 10 and 15;

    egon上机笔记

    ----------+------------+
    | id | name       | sex    | age | hire_date  | post                       | pos
    t_comment | salary     |
    +----+------------+--------+-----+------------+----------------------------+----
    ----------+------------+
    |  1 | egon       | male   |  18 | 2017-03-01 | 老男孩驻沙河办事处外交大使 | NUL
    L         |    7300.33 |
    |  2 | alex       | male   |  78 | 2015-03-02 | teacher                    | NUL
    L         | 1000000.31 |
    |  3 | wupeiqi    | male   |  81 | 2013-03-05 | teacher                    | NUL
    L         |    8300.00 |
    |  4 | yuanhao    | male   |  73 | 2014-07-01 | teacher                    | NUL
    L         |    3500.00 |
    |  5 | liwenzhou  | male   |  28 | 2012-11-01 | teacher                    | NUL
    L         |    2100.00 |
    |  6 | jingliyang | female |  18 | 2011-02-11 | teacher                    | NUL
    L         |    9000.00 |
    |  7 | jinxin     | male   |  18 | 1900-03-01 | teacher                    | NUL
    L         |   30000.00 |
    |  8 | 成龙       | male   |  48 | 2010-11-11 | teacher                    | NUL
    L         |   10000.00 |
    |  9 | 歪歪       | female |  48 | 2015-03-11 | sale                       | NUL
    L         |    3000.13 |
    | 10 | 丫丫       | female |  38 | 2010-11-01 | sale                       | NUL
    L         |    2000.35 |
    | 11 | 丁丁       | female |  18 | 2011-03-12 | sale                       | NUL
    L         |    1000.37 |
    | 12 | 星星       | female |  18 | 2016-05-13 | sale                       | NUL
    L         |    3000.29 |
    | 13 | 格格       | female |  28 | 2017-01-27 | sale                       | NUL
    L         |    4000.33 |
    | 14 | 张野       | male   |  28 | 2016-03-11 | operation                  | NUL
    L         |   10000.13 |
    | 15 | 程咬金     | male   |  18 | 1997-03-12 | operation                  | NUL
    L         |   20000.00 |
    | 16 | 程咬银     | female |  18 | 2013-03-11 | operation                  | NUL
    L         |   19000.00 |
    | 17 | 程咬铜     | male   |  18 | 2015-04-11 | operation                  | NUL
    L         |   18000.00 |
    | 18 | 程咬铁     | female |  18 | 2014-05-12 | operation                  | NUL
    L         |   17000.00 |
    +----+------------+--------+-----+------------+----------------------------+----
    ----------+------------+
    18 rows in set (0.01 sec)
    
    mysql> select*from emp where id>10 and id<15;
    +----+------+--------+-----+------------+-----------+--------------+----------+
    | id | name | sex    | age | hire_date  | post      | post_comment | salary   |
    +----+------+--------+-----+------------+-----------+--------------+----------+
    | 11 | 丁丁 | female |  18 | 2011-03-12 | sale      | NULL         |  1000.37 |
    | 12 | 星星 | female |  18 | 2016-05-13 | sale      | NULL         |  3000.29 |
    | 13 | 格格 | female |  28 | 2017-01-27 | sale      | NULL         |  4000.33 |
    | 14 | 张野 | male   |  28 | 2016-03-11 | operation | NULL         | 10000.13 |
    +----+------+--------+-----+------------+-----------+--------------+----------+
    4 rows in set (0.00 sec)
    
    mysql> select*from emp where id=10 and id=15;
    Empty set (0.00 sec)
    
    mysql> select*from emp where id between 10 and 15;
    +----+--------+--------+-----+------------+-----------+--------------+----------
    +
    | id | name   | sex    | age | hire_date  | post      | post_comment | salary
    |
    +----+--------+--------+-----+------------+-----------+--------------+----------
    +
    | 10 | 丫丫   | female |  38 | 2010-11-01 | sale      | NULL         |  2000.35
    |
    | 11 | 丁丁   | female |  18 | 2011-03-12 | sale      | NULL         |  1000.37
    |
    | 12 | 星星   | female |  18 | 2016-05-13 | sale      | NULL         |  3000.29
    |
    | 13 | 格格   | female |  28 | 2017-01-27 | sale      | NULL         |  4000.33
    |
    | 14 | 张野   | male   |  28 | 2016-03-11 | operation | NULL         | 10000.13
    |
    | 15 | 程咬金 | male   |  18 | 1997-03-12 | operation | NULL         | 20000.00
    |
    +----+--------+--------+-----+------------+-----------+--------------+----------
    +
    6 rows in set (0.00 sec)
    
    mysql> select*from emp;
    +----+------------+--------+-----+------------+----------------------------+----
    ----------+------------+
    | id | name       | sex    | age | hire_date  | post                       | pos
    t_comment | salary     |
    +----+------------+--------+-----+------------+----------------------------+----
    ----------+------------+
    |  1 | egon       | male   |  18 | 2017-03-01 | 老男孩驻沙河办事处外交大使 | NUL
    L         |    7300.33 |
    |  2 | alex       | male   |  78 | 2015-03-02 | teacher                    | NUL
    L         | 1000000.31 |
    |  3 | wupeiqi    | male   |  81 | 2013-03-05 | teacher                    | NUL
    L         |    8300.00 |
    |  4 | yuanhao    | male   |  73 | 2014-07-01 | teacher                    | NUL
    L         |    3500.00 |
    |  5 | liwenzhou  | male   |  28 | 2012-11-01 | teacher                    | NUL
    L         |    2100.00 |
    |  6 | jingliyang | female |  18 | 2011-02-11 | teacher                    | NUL
    L         |    9000.00 |
    |  7 | jinxin     | male   |  18 | 1900-03-01 | teacher                    | NUL
    L         |   30000.00 |
    |  8 | 成龙       | male   |  48 | 2010-11-11 | teacher                    | NUL
    L         |   10000.00 |
    |  9 | 歪歪       | female |  48 | 2015-03-11 | sale                       | NUL
    L         |    3000.13 |
    | 10 | 丫丫       | female |  38 | 2010-11-01 | sale                       | NUL
    L         |    2000.35 |
    | 11 | 丁丁       | female |  18 | 2011-03-12 | sale                       | NUL
    L         |    1000.37 |
    | 12 | 星星       | female |  18 | 2016-05-13 | sale                       | NUL
    L         |    3000.29 |
    | 13 | 格格       | female |  28 | 2017-01-27 | sale                       | NUL
    L         |    4000.33 |
    | 14 | 张野       | male   |  28 | 2016-03-11 | operation                  | NUL
    L         |   10000.13 |
    | 15 | 程咬金     | male   |  18 | 1997-03-12 | operation                  | NUL
    L         |   20000.00 |
    | 16 | 程咬银     | female |  18 | 2013-03-11 | operation                  | NUL
    L         |   19000.00 |
    | 17 | 程咬铜     | male   |  18 | 2015-04-11 | operation                  | NUL
    L         |   18000.00 |
    | 18 | 程咬铁     | female |  18 | 2014-05-12 | operation                  | NUL
    L         |   17000.00 |
    +----+------------+--------+-----+------------+----------------------------+----
    ----------+------------+
    18 rows in set (0.00 sec)
    
    mysql> select*from emp where id>10;
    +----+--------+--------+-----+------------+-----------+--------------+----------
    +
    | id | name   | sex    | age | hire_date  | post      | post_comment | salary
    |
    +----+--------+--------+-----+------------+-----------+--------------+----------
    +
    | 11 | 丁丁   | female |  18 | 2011-03-12 | sale      | NULL         |  1000.37
    |
    | 12 | 星星   | female |  18 | 2016-05-13 | sale      | NULL         |  3000.29
    |
    | 13 | 格格   | female |  28 | 2017-01-27 | sale      | NULL         |  4000.33
    |
    | 14 | 张野   | male   |  28 | 2016-03-11 | operation | NULL         | 10000.13
    |
    | 15 | 程咬金 | male   |  18 | 1997-03-12 | operation | NULL         | 20000.00
    |
    | 16 | 程咬银 | female |  18 | 2013-03-11 | operation | NULL         | 19000.00
    |
    | 17 | 程咬铜 | male   |  18 | 2015-04-11 | operation | NULL         | 18000.00
    |
    | 18 | 程咬铁 | female |  18 | 2014-05-12 | operation | NULL         | 17000.00
    |
    +----+--------+--------+-----+------------+-----------+--------------+----------
    +
    8 rows in set (0.00 sec)
    
    mysql> select*from emp where id=6 or id=9 or id=12;
    +----+------------+--------+-----+------------+---------+--------------+--------
    -+
    | id | name       | sex    | age | hire_date  | post    | post_comment | salary
     |
    +----+------------+--------+-----+------------+---------+--------------+--------
    -+
    |  6 | jingliyang | female |  18 | 2011-02-11 | teacher | NULL         | 9000.00
     |
    |  9 | 歪歪       | female |  48 | 2015-03-11 | sale    | NULL         | 3000.13
     |
    | 12 | 星星       | female |  18 | 2016-05-13 | sale    | NULL         | 3000.29
     |
    +----+------------+--------+-----+------------+---------+--------------+--------
    -+
    3 rows in set (0.00 sec)
    
    mysql> select*from emp;
    +----+------------+--------+-----+------------+----------------------------+----
    ----------+------------+
    | id | name       | sex    | age | hire_date  | post                       | pos
    t_comment | salary     |
    +----+------------+--------+-----+------------+----------------------------+----
    ----------+------------+
    |  1 | egon       | male   |  18 | 2017-03-01 | 老男孩驻沙河办事处外交大使 | NUL
    L         |    7300.33 |
    |  2 | alex       | male   |  78 | 2015-03-02 | teacher                    | NUL
    L         | 1000000.31 |
    |  3 | wupeiqi    | male   |  81 | 2013-03-05 | teacher                    | NUL
    L         |    8300.00 |
    |  4 | yuanhao    | male   |  73 | 2014-07-01 | teacher                    | NUL
    L         |    3500.00 |
    |  5 | liwenzhou  | male   |  28 | 2012-11-01 | teacher                    | NUL
    L         |    2100.00 |
    |  6 | jingliyang | female |  18 | 2011-02-11 | teacher                    | NUL
    L         |    9000.00 |
    |  7 | jinxin     | male   |  18 | 1900-03-01 | teacher                    | NUL
    L         |   30000.00 |
    |  8 | 成龙       | male   |  48 | 2010-11-11 | teacher                    | NUL
    L         |   10000.00 |
    |  9 | 歪歪       | female |  48 | 2015-03-11 | sale                       | NUL
    L         |    3000.13 |
    | 10 | 丫丫       | female |  38 | 2010-11-01 | sale                       | NUL
    L         |    2000.35 |
    | 11 | 丁丁       | female |  18 | 2011-03-12 | sale                       | NUL
    L         |    1000.37 |
    | 12 | 星星       | female |  18 | 2016-05-13 | sale                       | NUL
    L         |    3000.29 |
    | 13 | 格格       | female |  28 | 2017-01-27 | sale                       | NUL
    L         |    4000.33 |
    | 14 | 张野       | male   |  28 | 2016-03-11 | operation                  | NUL
    L         |   10000.13 |
    | 15 | 程咬金     | male   |  18 | 1997-03-12 | operation                  | NUL
    L         |   20000.00 |
    | 16 | 程咬银     | female |  18 | 2013-03-11 | operation                  | NUL
    L         |   19000.00 |
    | 17 | 程咬铜     | male   |  18 | 2015-04-11 | operation                  | NUL
    L         |   18000.00 |
    | 18 | 程咬铁     | female |  18 | 2014-05-12 | operation                  | NUL
    L         |   17000.00 |
    +----+------------+--------+-----+------------+----------------------------+----
    ----------+------------+
    18 rows in set (0.00 sec)
    
    mysql> select*from emp where name like "__";
    +----+------+--------+-----+------------+-----------+--------------+----------+
    | id | name | sex    | age | hire_date  | post      | post_comment | salary   |
    +----+------+--------+-----+------------+-----------+--------------+----------+
    |  8 | 成龙 | male   |  48 | 2010-11-11 | teacher   | NULL         | 10000.00 |
    |  9 | 歪歪 | female |  48 | 2015-03-11 | sale      | NULL         |  3000.13 |
    | 10 | 丫丫 | female |  38 | 2010-11-01 | sale      | NULL         |  2000.35 |
    | 11 | 丁丁 | female |  18 | 2011-03-12 | sale      | NULL         |  1000.37 |
    | 12 | 星星 | female |  18 | 2016-05-13 | sale      | NULL         |  3000.29 |
    | 13 | 格格 | female |  28 | 2017-01-27 | sale      | NULL         |  4000.33 |
    | 14 | 张野 | male   |  28 | 2016-03-11 | operation | NULL         | 10000.13 |
    +----+------+--------+-----+------------+-----------+--------------+----------+
    7 rows in set (0.00 sec)
    
    mysql> select*from emp where name like "jin%";
    +----+------------+--------+-----+------------+---------+--------------+--------
    --+
    | id | name       | sex    | age | hire_date  | post    | post_comment | salary
      |
    +----+------------+--------+-----+------------+---------+--------------+--------
    --+
    |  6 | jingliyang | female |  18 | 2011-02-11 | teacher | NULL         |  9000.0
    0 |
    |  7 | jinxin     | male   |  18 | 1900-03-01 | teacher | NULL         | 30000.0
    0 |
    +----+------------+--------+-----+------------+---------+--------------+--------
    --+
    2 rows in set (0.00 sec)
    
    mysql> select*from emp where id not between 10 and 15;
    +----+------------+--------+-----+------------+----------------------------+----
    ----------+------------+
    | id | name       | sex    | age | hire_date  | post                       | pos
    t_comment | salary     |
    +----+------------+--------+-----+------------+----------------------------+----
    ----------+------------+
    |  1 | egon       | male   |  18 | 2017-03-01 | 老男孩驻沙河办事处外交大使 | NUL
    L         |    7300.33 |
    |  2 | alex       | male   |  78 | 2015-03-02 | teacher                    | NUL
    L         | 1000000.31 |
    |  3 | wupeiqi    | male   |  81 | 2013-03-05 | teacher                    | NUL
    L         |    8300.00 |
    |  4 | yuanhao    | male   |  73 | 2014-07-01 | teacher                    | NUL
    L         |    3500.00 |
    |  5 | liwenzhou  | male   |  28 | 2012-11-01 | teacher                    | NUL
    L         |    2100.00 |
    |  6 | jingliyang | female |  18 | 2011-02-11 | teacher                    | NUL
    L         |    9000.00 |
    |  7 | jinxin     | male   |  18 | 1900-03-01 | teacher                    | NUL
    L         |   30000.00 |
    |  8 | 成龙       | male   |  48 | 2010-11-11 | teacher                    | NUL
    L         |   10000.00 |
    |  9 | 歪歪       | female |  48 | 2015-03-11 | sale                       | NUL
    L         |    3000.13 |
    | 16 | 程咬银     | female |  18 | 2013-03-11 | operation                  | NUL
    L         |   19000.00 |
    | 17 | 程咬铜     | male   |  18 | 2015-04-11 | operation                  | NUL
    L         |   18000.00 |
    | 18 | 程咬铁     | female |  18 | 2014-05-12 | operation                  | NUL
    L         |   17000.00 |
    +----+------------+--------+-----+------------+----------------------------+----
    ----------+------------+
    12 rows in set (0.00 sec)
    
    3、group by分组
    什么分组:按照所有记录相同的部分进行归类,一定区分度低的字段
    为何要分组:当我们要以组为单位进行统计时就必须分组,分组的目的是为了以组为单位进行统计的,再去考虑单条记录毫无意义


    set global sql_mode="strict_trans_tables,only_full_group_by";
    注意:分组之后,只能查到分组的字段以及组内多条记录聚合的成果
    select * from emp group by post;

    聚合函数
    max
    min
    avg
    sum
    count


    select post,count(id) from emp group by post;
    select post,max(salary) from emp group by post;
    select post,avg(salary) from emp group by post;
    select sex,count(sex) from emp group by sex;

    统计出每个部门年龄30以上的员工的平均薪资
    select post,avg(salary) from emp where age >= 30 group by post;

    注意:分组是在where之后发生的
    mysql> select * from emp where max(salary) > 3000;
    ERROR 1111 (HY000): Invalid use of group function

    group_concat

    egon上机笔记
    mysql> select*from emp group by post;
    +----+------+--------+-----+------------+----------------------------+----------
    ----+------------+
    | id | name | sex    | age | hire_date  | post                       | post_comm
    ent | salary     |
    +----+------+--------+-----+------------+----------------------------+----------
    ----+------------+
    | 14 | 张野 | male   |  28 | 2016-03-11 | operation                  | NULL
        |   10000.13 |
    |  9 | 歪歪 | female |  48 | 2015-03-11 | sale                       | NULL
        |    3000.13 |
    |  2 | alex | male   |  78 | 2015-03-02 | teacher                    | NULL
        | 1000000.31 |
    |  1 | egon | male   |  18 | 2017-03-01 | 老男孩驻沙河办事处外交大使 | NULL
        |    7300.33 |
    +----+------+--------+-----+------------+----------------------------+----------
    ----+------------+
    4 rows in set (0.00 sec)
    
    mysql> select*from emp;
    +----+------------+--------+-----+------------+----------------------------+----
    ----------+------------+
    | id | name       | sex    | age | hire_date  | post                       | pos
    t_comment | salary     |
    +----+------------+--------+-----+------------+----------------------------+----
    ----------+------------+
    |  1 | egon       | male   |  18 | 2017-03-01 | 老男孩驻沙河办事处外交大使 | NUL
    L         |    7300.33 |
    |  2 | alex       | male   |  78 | 2015-03-02 | teacher                    | NUL
    L         | 1000000.31 |
    |  3 | wupeiqi    | male   |  81 | 2013-03-05 | teacher                    | NUL
    L         |    8300.00 |
    |  4 | yuanhao    | male   |  73 | 2014-07-01 | teacher                    | NUL
    L         |    3500.00 |
    |  5 | liwenzhou  | male   |  28 | 2012-11-01 | teacher                    | NUL
    L         |    2100.00 |
    |  6 | jingliyang | female |  18 | 2011-02-11 | teacher                    | NUL
    L         |    9000.00 |
    |  7 | jinxin     | male   |  18 | 1900-03-01 | teacher                    | NUL
    L         |   30000.00 |
    |  8 | 成龙       | male   |  48 | 2010-11-11 | teacher                    | NUL
    L         |   10000.00 |
    |  9 | 歪歪       | female |  48 | 2015-03-11 | sale                       | NUL
    L         |    3000.13 |
    | 10 | 丫丫       | female |  38 | 2010-11-01 | sale                       | NUL
    L         |    2000.35 |
    | 11 | 丁丁       | female |  18 | 2011-03-12 | sale                       | NUL
    L         |    1000.37 |
    | 12 | 星星       | female |  18 | 2016-05-13 | sale                       | NUL
    L         |    3000.29 |
    | 13 | 格格       | female |  28 | 2017-01-27 | sale                       | NUL
    L         |    4000.33 |
    | 14 | 张野       | male   |  28 | 2016-03-11 | operation                  | NUL
    L         |   10000.13 |
    | 15 | 程咬金     | male   |  18 | 1997-03-12 | operation                  | NUL
    L         |   20000.00 |
    | 16 | 程咬银     | female |  18 | 2013-03-11 | operation                  | NUL
    L         |   19000.00 |
    | 17 | 程咬铜     | male   |  18 | 2015-04-11 | operation                  | NUL
    L         |   18000.00 |
    | 18 | 程咬铁     | female |  18 | 2014-05-12 | operation                  | NUL
    L         |   17000.00 |
    +----+------------+--------+-----+------------+----------------------------+----
    ----------+------------+
    18 rows in set (0.00 sec)
    
    mysql> select @@sql_mode;
    +------------------------+
    | @@sql_mode             |
    +------------------------+
    | NO_ENGINE_SUBSTITUTION |
    +------------------------+
    1 row in set (0.00 sec)
    
    写sql语句的时候只能按照严格模式
    mysql> set global sql_mode="strict_trans_tables,only_full_group_by";
    Query OK, 0 rows affected (0.00 sec) #只能取分组的字段和聚合的结果
    
    mysql> use sb5;
    Database changed
    mysql> select*from emp group by post;
    ERROR 1055 (42000): 'sb5.emp.id' isn't in GROUP BY
    mysql> select post from emp group by post;
    +----------------------------+
    | post                       |
    +----------------------------+
    | operation                  |
    | sale                       |
    | teacher                    |
    | 老男孩驻沙河办事处外交大使 |
    +----------------------------+
    4 rows in set (0.00 sec)
    
    # 聚合函数(切记分组以后才能用聚合函数)
    max
    min
    avg
    sum
    count
    
    mysql> select post from emp group by post;
    +----------------------------+
    | post                       |
    +----------------------------+
    | operation                  |
    | sale                       |
    | teacher                    |
    | 老男孩驻沙河办事处外交大使 |
    +----------------------------+
    4 rows in set (0.00 sec)
    
    mysql> select post,count(id) from emp group by post;
    +----------------------------+-----------+
    | post                       | count(id) |
    +----------------------------+-----------+
    | operation                  |         5 |
    | sale                       |         5 |
    | teacher                    |         7 |
    | 老男孩驻沙河办事处外交大使 |         1 |
    +----------------------------+-----------+
    4 rows in set (0.00 sec)
    
    mysql> select post,max(salary) from emp group by post;
    +----------------------------+-------------+
    | post                       | max(salary) |
    +----------------------------+-------------+
    | operation                  |    20000.00 |
    | sale                       |     4000.33 |
    | teacher                    |  1000000.31 |
    | 老男孩驻沙河办事处外交大使 |     7300.33 |
    +----------------------------+-------------+
    4 rows in set (0.00 sec)
    
    mysql> select post,avg(salary) from emp group by post;
    +----------------------------+---------------+
    | post                       | avg(salary)   |
    +----------------------------+---------------+
    | operation                  |  16800.026000 |
    | sale                       |   2600.294000 |
    | teacher                    | 151842.901429 |
    | 老男孩驻沙河办事处外交大使 |   7300.330000 |
    +----------------------------+---------------+
    4 rows in set (0.00 sec)
    
    mysql> select post,sum(salary) from emp group by post;
    +----------------------------+-------------+
    | post                       | sum(salary) |
    +----------------------------+-------------+
    | operation                  |    84000.13 |
    | sale                       |    13001.47 |
    | teacher                    |  1062900.31 |
    | 老男孩驻沙河办事处外交大使 |     7300.33 |
    +----------------------------+-------------+
    4 rows in set (0.00 sec)
    
    mysql> select post,avg(salary) from emp group by post;
    +----------------------------+---------------+
    | post                       | avg(salary)   |
    +----------------------------+---------------+
    | operation                  |  16800.026000 |
    | sale                       |   2600.294000 |
    | teacher                    | 151842.901429 |
    | 老男孩驻沙河办事处外交大使 |   7300.330000 |
    +----------------------------+---------------+
    4 rows in set (0.00 sec)
    
    mysql> select post,sum(salary) from emp group by post;
    +----------------------------+-------------+
    | post                       | sum(salary) |
    +----------------------------+-------------+
    | operation                  |    84000.13 |
    | sale                       |    13001.47 |
    | teacher                    |  1062900.31 |
    | 老男孩驻沙河办事处外交大使 |     7300.33 |
    +----------------------------+-------------+
    4 rows in set (0.00 sec)
    
    mysql> select post,count(id) from emp group by post;
    +----------------------------+-----------+
    | post                       | count(id) |
    +----------------------------+-----------+
    | operation                  |         5 |
    | sale                       |         5 |
    | teacher                    |         7 |
    | 老男孩驻沙河办事处外交大使 |         1 |
    +----------------------------+-----------+
    4 rows in set (0.00 sec)
    
    mysql> select post,count(sex) from emp group by post;
    +----------------------------+------------+
    | post                       | count(sex) |
    +----------------------------+------------+
    | operation                  |          5 |
    | sale                       |          5 |
    | teacher                    |          7 |
    | 老男孩驻沙河办事处外交大使 |          1 |
    +----------------------------+------------+
    4 rows in set (0.00 sec)
    
     为什么用id呢?
     innodb表达id字段,primary本身就是一个索引用他排序速度很快
    统计出每个部门年龄30以上的员工的平均薪资
    
    
    mysql> select*from emp where max(salary)>3000;
    ERROR 1111 (HY000): Invalid use of group function
    mysql> select max(salary) from emp;
    +-------------+
    | max(salary) |
    +-------------+
    |  1000000.31 |
    +-------------+
    1 row in set (0.00 sec)
    
    mysql> select*from emp where max(salary)>3000;
    ERROR 1111 (HY000): Invalid use of group function
    mysql> select max(salary) from emp;
    +-------------+
    | max(salary) |
    +-------------+
    |  1000000.31 |
    +-------------+
    1 row in set (0.00 sec)
    
    concat字符拼接
    mysql> select post from emp group by post;
    +----------------------------+
    | post                       |
    +----------------------------+
    | operation                  |
    | sale                       |
    | teacher                    |
    | 老男孩驻沙河办事处外交大使 |
    +----------------------------+
    4 rows in set (0.00 sec)
    
    mysql> select post,group_concat(name) from emp group by post;
    +----------------------------+--------------------------------------------------
    -----+
    | post                       | group_concat(name)
         |
    +----------------------------+--------------------------------------------------
    -----+
    | operation                  | 程咬铁,程咬铜,程咬银,程咬金,张野
         |
    | sale                       | 格格,星星,丁丁,丫丫,歪歪
         |
    | teacher                    | 成龙,jinxin,jingliyang,liwenzhou,yuanhao,wupeiqi,
    alex |
    | 老男孩驻沙河办事处外交大使 | egon
         |
    +----------------------------+--------------------------------------------------
    -----+
    4 rows in set (0.00 sec)
    
    mysql> select post,group_concat_ws(":",name,age,sex) from emp group by post;
    ERROR 1305 (42000): FUNCTION sb5.group_concat_ws does not exist
    mysql> select post,group_concat(name,age) from emp group by post;
    +----------------------------+--------------------------------------------------
    -------------------+
    | post                       | group_concat(name,age)
                       |
    +----------------------------+--------------------------------------------------
    -------------------+
    | operation                  | 程咬铁18,程咬铜18,程咬银18,程咬金18,张野28
                       |
    | sale                       | 格格28,星星18,丁丁18,丫丫38,歪歪48
                       |
    | teacher                    | 成龙48,jinxin18,jingliyang18,liwenzhou28,yuanhao7
    3,wupeiqi81,alex78 |
    | 老男孩驻沙河办事处外交大使 | egon18
                       |
    +----------------------------+--------------------------------------------------
    -------------------+
    4 rows in set (0.00 sec)
    
    mysql> select post,group_concat(name,';',age) from emp group by post;
    +----------------------------+--------------------------------------------------
    --------------------------+
    | post                       | group_concat(name,';',age)
                              |
    +----------------------------+--------------------------------------------------
    --------------------------+
    | operation                  | 程咬铁;18,程咬铜;18,程咬银;18,程咬金;18,张野;28
                              |
    | sale                       | 格格;28,星星;18,丁丁;18,丫丫;38,歪歪;48
                              |
    | teacher                    | 成龙;48,jinxin;18,jingliyang;18,liwenzhou;28,yuan
    hao;73,wupeiqi;81,alex;78 |
    | 老男孩驻沙河办事处外交大使 | egon;18
                              |
    +----------------------------+--------------------------------------------------
    --------------------------+
    4 rows in set (0.00 sec)
    
    #4、having 过滤条件
    # where是在分组之前的过滤,即在分组之前做了一次整体性的筛选
    # having是在分组之后的过滤,即在分组之后专门针对聚合的结果进行进一步的筛选

    select post,avg(salary) from emp group by post having avg(salary) > 10000;
    select post,avg(salary) from emp group by post ;
    mysql> select post,avg(salary) from emp group by post having avg(salary)>10000;
    +-----------+---------------+
    | post      | avg(salary)   |
    +-----------+---------------+
    | operation |  16800.026000 |
    | teacher   | 151842.901429 |
    +-----------+---------------+
    2 rows in set (0.00 sec)
    
    mysql> select post,avg(salary) from emp group by post ;
    +----------------------------+---------------+
    | post                       | avg(salary)   |
    +----------------------------+---------------+
    | operation                  |  16800.026000 |
    | sale                       |   2600.294000 |
    | teacher                    | 151842.901429 |
    | 老男孩驻沙河办事处外交大使 |   7300.330000 |
    +----------------------------+---------------+
    4 rows in set (0.00 sec)

    小练习:

    相关小练习:
    1. 查询各岗位内包含的员工个数小于2的岗位名、岗位内包含员工名字、个数
    3. 查询各岗位平均薪资大于10000的岗位名、平均工资
    4. 查询各岗位平均薪资大于10000且小于20000的岗位名、平均工资

    6、limit 限制显示的条件
    select * from emp limit 3;

    #薪资最高那个人的详细信息
    select * from emp order by salary desc limit 1;

    分页显示
    select * from emp limit 0,5; # 从0开始往后取5条
    select * from emp limit 5,5; #从5开始往后取5条
    egon上机笔记
    mysql> select*from emp;
    +----+------------+--------+-----+------------+----------------------------+--------------+------------+
    | id | name       | sex    | age | hire_date  | post                       | post_comment | salary     |
    +----+------------+--------+-----+------------+----------------------------+--------------+------------+
    |  1 | egon       | male   |  18 | 2017-03-01 | 老男孩驻沙河办事处外交大使 | NULL         |    7300.33 |
    |  2 | alex       | male   |  78 | 2015-03-02 | teacher                    | NULL         | 1000000.31 |
    |  3 | wupeiqi    | male   |  81 | 2013-03-05 | teacher                    | NULL         |    8300.00 |
    |  4 | yuanhao    | male   |  73 | 2014-07-01 | teacher                    | NULL         |    3500.00 |
    |  5 | liwenzhou  | male   |  28 | 2012-11-01 | teacher                    | NULL         |    2100.00 |
    |  6 | jingliyang | female |  18 | 2011-02-11 | teacher                    | NULL         |    9000.00 |
    |  7 | jinxin     | male   |  18 | 1900-03-01 | teacher                    | NULL         |   30000.00 |
    |  8 | 成龙       | male   |  48 | 2010-11-11 | teacher                    | NULL         |   10000.00 |
    |  9 | 歪歪       | female |  48 | 2015-03-11 | sale                       | NULL         |    3000.13 |
    | 10 | 丫丫       | female |  38 | 2010-11-01 | sale                       | NULL         |    2000.35 |
    | 11 | 丁丁       | female |  18 | 2011-03-12 | sale                       | NULL         |    1000.37 |
    | 12 | 星星       | female |  18 | 2016-05-13 | sale                       | NULL         |    3000.29 |
    | 13 | 格格       | female |  28 | 2017-01-27 | sale                       | NULL         |    4000.33 |
    | 14 | 张野       | male   |  28 | 2016-03-11 | operation                  | NULL         |   10000.13 |
    | 15 | 程咬金     | male   |  18 | 1997-03-12 | operation                  | NULL         |   20000.00 |
    | 16 | 程咬银     | female |  18 | 2013-03-11 | operation                  | NULL         |   19000.00 |
    | 17 | 程咬铜     | male   |  18 | 2015-04-11 | operation                  | NULL         |   18000.00 |
    | 18 | 程咬铁     | female |  18 | 2014-05-12 | operation                  | NULL         |   17000.00 |
    +----+------------+--------+-----+------------+----------------------------+--------------+------------+
    18 rows in set (0.00 sec)
    
    mysql> select*from emp limit 0,5;
    +----+-----------+------+-----+------------+----------------------------+--------------+------------+
    | id | name      | sex  | age | hire_date  | post                       | post_comment | salary     |
    +----+-----------+------+-----+------------+----------------------------+--------------+------------+
    |  1 | egon      | male |  18 | 2017-03-01 | 老男孩驻沙河办事处外交大使 | NULL         |    7300.33 |
    |  2 | alex      | male |  78 | 2015-03-02 | teacher                    | NULL         | 1000000.31 |
    |  3 | wupeiqi   | male |  81 | 2013-03-05 | teacher                    | NULL         |    8300.00 |
    |  4 | yuanhao   | male |  73 | 2014-07-01 | teacher                    | NULL         |    3500.00 |
    |  5 | liwenzhou | male |  28 | 2012-11-01 | teacher                    | NULL         |    2100.00 |
    +----+-----------+------+-----+------------+----------------------------+--------------+------------+
    5 rows in set (0.00 sec)
    
    mysql> select*from emp limit 5,10;
    +----+------------+--------+-----+------------+-----------+--------------+----------+
    | id | name       | sex    | age | hire_date  | post      | post_comment | salary   |
    +----+------------+--------+-----+------------+-----------+--------------+----------+
    |  6 | jingliyang | female |  18 | 2011-02-11 | teacher   | NULL         |  9000.00 |
    |  7 | jinxin     | male   |  18 | 1900-03-01 | teacher   | NULL         | 30000.00 |
    |  8 | 成龙       | male   |  48 | 2010-11-11 | teacher   | NULL         | 10000.00 |
    |  9 | 歪歪       | female |  48 | 2015-03-11 | sale      | NULL         |  3000.13 |
    | 10 | 丫丫       | female |  38 | 2010-11-01 | sale      | NULL         |  2000.35 |
    | 11 | 丁丁       | female |  18 | 2011-03-12 | sale      | NULL         |  1000.37 |
    | 12 | 星星       | female |  18 | 2016-05-13 | sale      | NULL         |  3000.29 |
    | 13 | 格格       | female |  28 | 2017-01-27 | sale      | NULL         |  4000.33 |
    | 14 | 张野       | male   |  28 | 2016-03-11 | operation | NULL         | 10000.13 |
    | 15 | 程咬金     | male   |  18 | 1997-03-12 | operation | NULL         | 20000.00 |
    +----+------------+--------+-----+------------+-----------+--------------+----------+
    10 rows in set (0.00 sec)
    
    mysql> select*from emp limit 10,5;
    +----+--------+--------+-----+------------+-----------+--------------+----------+
    | id | name   | sex    | age | hire_date  | post      | post_comment | salary   |
    +----+--------+--------+-----+------------+-----------+--------------+----------+
    | 11 | 丁丁   | female |  18 | 2011-03-12 | sale      | NULL         |  1000.37 |
    | 12 | 星星   | female |  18 | 2016-05-13 | sale      | NULL         |  3000.29 |
    | 13 | 格格   | female |  28 | 2017-01-27 | sale      | NULL         |  4000.33 |
    | 14 | 张野   | male   |  28 | 2016-03-11 | operation | NULL         | 10000.13 |
    | 15 | 程咬金 | male   |  18 | 1997-03-12 | operation | NULL         | 20000.00 |
    +----+--------+--------+-----+------------+-----------+--------------+----------+
    5 rows in set (0.00 sec)
    
    mysql> select*from emp limit 15,5;
    +----+--------+--------+-----+------------+-----------+--------------+----------+
    | id | name   | sex    | age | hire_date  | post      | post_comment | salary   |
    +----+--------+--------+-----+------------+-----------+--------------+----------+
    | 16 | 程咬银 | female |  18 | 2013-03-11 | operation | NULL         | 19000.00 |
    | 17 | 程咬铜 | male   |  18 | 2015-04-11 | operation | NULL         | 18000.00 |
    | 18 | 程咬铁 | female |  18 | 2014-05-12 | operation | NULL         | 17000.00 |
    +----+--------+--------+-----+------------+-----------+--------------+----------+
    3 rows in set (0.00 sec)
    
    #正则表达式
    select * from emp where name regexp "^jin.*(g|n)$";
    #1、笛卡儿积

    select * from emp,dep; #左表和右表全部建立对应关系

    select * from emp,dep where emp.dep_id = dep.id;

    select * from emp,dep where emp.dep_id = dep.id and dep.name = "技术";

    #2、内连接:只取两张表有对应关系的记录 #where专门干筛选的活
    select * from emp inner join dep on emp.dep_id = dep.id;
    select * from emp inner join dep on emp.dep_id = dep.id
    where dep.name = "技术";


    #3、左连接: 在内连接的基础上保留左表没有对应关系的记录
    select * from emp left join dep on emp.dep_id = dep.id;

    #4、右连接: 在内连接的基础上保留右表没有对应关系的记录
    select * from emp right join dep on emp.dep_id = dep.id;

    #5、全连接:在内连接的基础上保留左、右面表没有对应关系的的记录
    select * from emp left join dep on emp.dep_id = dep.id
    union
    select * from emp right join dep on emp.dep_id = dep.id;

    egon上机笔记
    mysql> create database sb5 charset gbk;
    Query OK, 1 row affected (0.00 sec)
    
    mysql> use sb5;
    Database changed
    mysql> create table department(
        -> id int,
        -> name varchar(20)
        -> );
    Query OK, 0 rows affected (0.01 sec)
    
    mysql>
    mysql> create table employee(
        -> id int primary key auto_increment,
        -> name varchar(20),
        -> sex enum('male','female') not null default 'male',
        -> age int,
        -> dep_id int
        -> );
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> desc department;
    +-------+-------------+------+-----+---------+-------+
    | Field | Type        | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | id    | int(11)     | YES  |     | NULL    |       |
    | name  | varchar(20) | YES  |     | NULL    |       |
    +-------+-------------+------+-----+---------+-------+
    2 rows in set (0.01 sec)
    
    mysql> desc employee;
    +--------+-----------------------+------+-----+---------+----------------+
    | Field  | Type                  | Null | Key | Default | Extra          |
    +--------+-----------------------+------+-----+---------+----------------+
    | id     | int(11)               | NO   | PRI | NULL    | auto_increment |
    | name   | varchar(20)           | YES  |     | NULL    |                |
    | sex    | enum('male','female') | NO   |     | male    |                |
    | age    | int(11)               | YES  |     | NULL    |                |
    | dep_id | int(11)               | YES  |     | NULL    |                |
    +--------+-----------------------+------+-----+---------+----------------+
    5 rows in set (0.01 sec)
    
    mysql> insert into department values
        -> (200,'技术'),
        -> (201,'人力资源'),
        -> (202,'销售'),
        -> (203,'运营');
    Query OK, 4 rows affected (0.00 sec)
    Records: 4  Duplicates: 0  Warnings: 0
    
    mysql> insert into employee(name,sex,age,dep_id) values
        -> ('egon','male',18,200),
        -> ('alex','female',48,201),
        -> ('wupeiqi','male',38,201),
        -> ('yuanhao','female',28,202),
        -> ('liwenzhou','male',18,200),
        -> ('jingliyang','female',18,204)
        -> ;
    Query OK, 6 rows affected (0.00 sec)
    Records: 6  Duplicates: 0  Warnings: 0
    
    mysql> alter table department rename dep;
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> select*from employee;
    +----+------------+--------+------+--------+
    | id | name       | sex    | age  | dep_id |
    +----+------------+--------+------+--------+
    |  1 | egon       | male   |   18 |    200 |
    |  2 | alex       | female |   48 |    201 |
    |  3 | wupeiqi    | male   |   38 |    201 |
    |  4 | yuanhao    | female |   28 |    202 |
    |  5 | liwenzhou  | male   |   18 |    200 |
    |  6 | jingliyang | female |   18 |    204 |
    +----+------------+--------+------+--------+
    6 rows in set (0.00 sec)
    
    mysql> alter table employee rename empp;
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> select*from dep;
    +------+----------+
    | id   | name     |
    +------+----------+
    |  200 | 技术     |
    |  201 | 人力资源 |
    |  202 | 销售     |
    |  203 | 运营     |
    +------+----------+
    4 rows in set (0.00 sec)
    
    mysql> select*from empp,dep;
    +----+------------+--------+------+--------+------+----------+
    | id | name       | sex    | age  | dep_id | id   | name     |
    +----+------------+--------+------+--------+------+----------+
    |  1 | egon       | male   |   18 |    200 |  200 | 技术     |
    |  1 | egon       | male   |   18 |    200 |  201 | 人力资源 |
    |  1 | egon       | male   |   18 |    200 |  202 | 销售     |
    |  1 | egon       | male   |   18 |    200 |  203 | 运营     |
    |  2 | alex       | female |   48 |    201 |  200 | 技术     |
    |  2 | alex       | female |   48 |    201 |  201 | 人力资源 |
    |  2 | alex       | female |   48 |    201 |  202 | 销售     |
    |  2 | alex       | female |   48 |    201 |  203 | 运营     |
    |  3 | wupeiqi    | male   |   38 |    201 |  200 | 技术     |
    |  3 | wupeiqi    | male   |   38 |    201 |  201 | 人力资源 |
    |  3 | wupeiqi    | male   |   38 |    201 |  202 | 销售     |
    |  3 | wupeiqi    | male   |   38 |    201 |  203 | 运营     |
    |  4 | yuanhao    | female |   28 |    202 |  200 | 技术     |
    |  4 | yuanhao    | female |   28 |    202 |  201 | 人力资源 |
    |  4 | yuanhao    | female |   28 |    202 |  202 | 销售     |
    |  4 | yuanhao    | female |   28 |    202 |  203 | 运营     |
    |  5 | liwenzhou  | male   |   18 |    200 |  200 | 技术     |
    |  5 | liwenzhou  | male   |   18 |    200 |  201 | 人力资源 |
    |  5 | liwenzhou  | male   |   18 |    200 |  202 | 销售     |
    |  5 | liwenzhou  | male   |   18 |    200 |  203 | 运营     |
    |  6 | jingliyang | female |   18 |    204 |  200 | 技术     |
    |  6 | jingliyang | female |   18 |    204 |  201 | 人力资源 |
    |  6 | jingliyang | female |   18 |    204 |  202 | 销售     |
    |  6 | jingliyang | female |   18 |    204 |  203 | 运营     |
    +----+------------+--------+------+--------+------+----------+
    24 rows in set (0.01 sec)
    
    连成一张大的表然后单表去查就可以了
    
    mysql> select*from empp,dep where empp.dep_id = dep.id;
    +----+-----------+--------+------+--------+------+----------+
    | id | name      | sex    | age  | dep_id | id   | name     |
    +----+-----------+--------+------+--------+------+----------+
    |  1 | egon      | male   |   18 |    200 |  200 | 技术     |
    |  2 | alex      | female |   48 |    201 |  201 | 人力资源 |
    |  3 | wupeiqi   | male   |   38 |    201 |  201 | 人力资源 |
    |  4 | yuanhao   | female |   28 |    202 |  202 | 销售     |
    |  5 | liwenzhou | male   |   18 |    200 |  200 | 技术     |
    +----+-----------+--------+------+--------+------+----------+
    5 rows in set (0.00 sec)
    
    mysql> select*from empp,dep where empp.dep_id=dep.id and dep.name="技术";
    +----+-----------+------+------+--------+------+------+
    | id | name      | sex  | age  | dep_id | id   | name |
    +----+-----------+------+------+--------+------+------+
    |  1 | egon      | male |   18 |    200 |  200 | 技术 |
    |  5 | liwenzhou | male |   18 |    200 |  200 | 技术 |
    +----+-----------+------+------+--------+------+------+
    2 rows in set (0.00 sec)
    
    mysql> select * from empp inner join dep on empp.dep_id = dep.id
        ->                             where dep.name = "技术";
    +----+-----------+------+------+--------+------+------+
    | id | name      | sex  | age  | dep_id | id   | name |
    +----+-----------+------+------+--------+------+------+
    |  1 | egon      | male |   18 |    200 |  200 | 技术 |
    |  5 | liwenzhou | male |   18 |    200 |  200 | 技术 |
    +----+-----------+------+------+--------+------+------+
    2 rows in set (0.00 sec)
    
    mysql> select * from empp left join dep on empp.dep_id = dep.id;
    +----+------------+--------+------+--------+------+----------+
    | id | name       | sex    | age  | dep_id | id   | name     |
    +----+------------+--------+------+--------+------+----------+
    |  1 | egon       | male   |   18 |    200 |  200 | 技术     |
    |  5 | liwenzhou  | male   |   18 |    200 |  200 | 技术     |
    |  2 | alex       | female |   48 |    201 |  201 | 人力资源 |
    |  3 | wupeiqi    | male   |   38 |    201 |  201 | 人力资源 |
    |  4 | yuanhao    | female |   28 |    202 |  202 | 销售     |
    |  6 | jingliyang | female |   18 |    204 | NULL | NULL     |
    +----+------------+--------+------+--------+------+----------+
    6 rows in set (0.00 sec)
    
    mysql> select * from empp right join dep on empp.dep_id = dep.id;
    +------+-----------+--------+------+--------+------+----------+
    | id   | name      | sex    | age  | dep_id | id   | name     |
    +------+-----------+--------+------+--------+------+----------+
    |    1 | egon      | male   |   18 |    200 |  200 | 技术     |
    |    2 | alex      | female |   48 |    201 |  201 | 人力资源 |
    |    3 | wupeiqi   | male   |   38 |    201 |  201 | 人力资源 |
    |    4 | yuanhao   | female |   28 |    202 |  202 | 销售     |
    |    5 | liwenzhou | male   |   18 |    200 |  200 | 技术     |
    | NULL | NULL      | NULL   | NULL |   NULL |  203 | 运营     |
    +------+-----------+--------+------+--------+------+----------+
    6 rows in set (0.00 sec)
    
    mysql> select * from empp left join dep on empp.dep_id = dep.id
        -> union
        -> select * from empp right join dep on empp.dep_id = dep.id;
    +------+------------+--------+------+--------+------+----------+
    | id   | name       | sex    | age  | dep_id | id   | name     |
    +------+------------+--------+------+--------+------+----------+
    |    1 | egon       | male   |   18 |    200 |  200 | 技术     |
    |    5 | liwenzhou  | male   |   18 |    200 |  200 | 技术     |
    |    2 | alex       | female |   48 |    201 |  201 | 人力资源 |
    |    3 | wupeiqi    | male   |   38 |    201 |  201 | 人力资源 |
    |    4 | yuanhao    | female |   28 |    202 |  202 | 销售     |
    |    6 | jingliyang | female |   18 |    204 | NULL | NULL     |
    | NULL | NULL       | NULL   | NULL |   NULL |  203 | 运营     |
    +------+------------+--------+------+--------+------+----------+
    7 rows in set (0.01 sec)
    

      



  • 相关阅读:
    序列化与反序列化
    进程与线程
    winform基础
    MD5加密
    Docker安装Nextcloud+collabora office+ocdownloader
    Docker安装MariaDB
    Docker 安装 Nginx
    Docker命令大全
    Docker之镜像操作
    Linux入门-Docker安装
  • 原文地址:https://www.cnblogs.com/wangmiaolu/p/9333608.html
Copyright © 2020-2023  润新知