liuxiaoyun111 发表于 2018-10-6 10:22:43

MySQL第三天(管理表记录)

  day03
  一、管理表记录?
  导入数据:
  把系统文件的内容存储到数据库服务器的表里。
  把系统用户信息/etc/passwod存储到数据库服务器的db3库下的user里。
  用户名 密码 UID GID 描述信息 家目录shell
  mysql> create table user(
  -> name char(50),
  -> password char(8),
  -> uid tinyint(6),
  -> gid tinyint(6),
  -> comment char(100),
  -> homedir char(100),
  -> shell   char(30),
  -> index(name)
  ->);
  Query OK, 0 rows affected (0.06 sec)
  mysql> desc user;
  +----------+------------+------+-----+---------+-------+
  | Field    | Type       | Null | Key | Default | Extra |
  +----------+------------+------+-----+---------+-------+
  | name   | char(50)   | YES| MUL | NULL    |       |
  | password | char(8)    | YES|   | NULL    |       |
  | uid      | tinyint(6) | YES|   | NULL    |       |
  | gid      | tinyint(6) | YES|   | NULL    |       |
  | comment| char(100)| YES|   | NULL    |       |
  | homedir| char(100)| YES|   | NULL    |       |
  | shell    | char(30)   | YES|   | NULL    |       |
  +----------+------------+------+-----+---------+-------+
  7 rows in set (0.00 sec)
  # cp/etc/passwd/var/lib/mysql-files/##复制passwd文件到数据库默认载体目录内
  mysql> load data infile                           ##导入文件到数据库默认目录
  -> "/var/lib/mysql-files/passwd"                ##字段分隔为:行分隔为换行(字段分隔符要与文件一致)
  -> into table db3.user                        ##导入的数据要与表字段匹配
  -> fields terminated by ":"                     ##禁止selinux
  -> lines terminated by "\n";
  Query OK, 44 rows affected, 33 warnings (0.01 sec)
  Records: 44Deleted: 0Skipped: 0Warnings: 33
  mysql> select * from db3.user;
  +---------------------+----------+------+------+-----------------------------------------------------------------+---------------------------+----------------+
  | name                | password | uid| gid| comment                                                         | homedir                   | shell          |
  +---------------------+----------+------+------+-----------------------------------------------------------------+---------------------------+----------------+
  | root                | x      |    0 |    0 | root                                                            | /root                     | /bin/bash      |
  | bin               | x      |    1 |    1 | bin                                                             | /bin                      | /sbin/nologin|
  | daemon            | x      |    2 |    2 | daemon                                                          | /sbin                     | /sbin/nologin|
  | adm               | x      |    3 |    4 | adm                                                             | /var/adm                  | /sbin/nologin|
  | lp                  | x      |    4 |    7 | lp                                                            | /var/spool/lpd            | /sbin/nologin|
  | sync                | x      |    5 |    0 | sync                                                            | /sbin                     | /bin/sync      |
  | shutdown            | x      |    6 |    0 | shutdown                                                      | /sbin                     | /sbin/shutdown |
  | halt                | x      |    7 |    0 | halt                                                            | /sbin                     | /sbin/halt   |
  | mail                | x      |    8 |   12 | mail                                                            | /var/spool/mail         | /sbin/nologin|
  | operator            | x      |   11 |    0 | operator                                                      | /root                     | /sbin/nologin|
  | games               | x      |   12 |100 | games                                                         | /usr/games                | /sbin/nologin|
  | ftp               | x      |   14 |   50 | FTP User                                                      | /var/ftp                  | /sbin/nologin|
  | nobody            | x      |   99 |   99 | Nobody                                                          | /                         | /sbin/nologin|

  mysql>>  Query OK, 44 rows affected (0.05 sec)
  Records: 44Duplicates: 0Warnings: 0
  mysql> select * from db3.user;
  +----+---------------------+----------+------+------+-----------------------------------------------------------------+---------------------------+----------------+

  |>  +----+---------------------+----------+------+------+-----------------------------------------------------------------+---------------------------+----------------+
  |1 | root                | x      |    0 |    0 | root                                                            | /root                     | /bin/bash      |
  |2 | bin               | x      |    1 |    1 | bin                                                             | /bin                      | /sbin/nologin|
  |3 | daemon            | x      |    2 |    2 | daemon                                                          | /sbin                     | /sbin/nologin|
  |4 | adm               | x      |    3 |    4 | adm                                                             | /var/adm                  | /sbin/nologin|
  |5 | lp                  | x      |    4 |    7 | lp                                                            | /var/spool/lpd            | /sbin/nologin|
  |6 | sync                | x      |    5 |    0 | sync                                                            | /sbin                     | /bin/sync      |
  |7 | shutdown            | x      |    6 |    0 | shutdown                                                      | /sbin                     | /sbin/shutdown |
  |8 | halt                | x      |    7 |    0 | halt                                                            | /sbin                     | /sbin/halt   |
  |9 | mail                | x      |    8 |   12 | mail                                                            | /var/spool/mail         | /sbin/nologin|
  | 10 | operator            | x      |   11 |    0 | operator                                                      | /root                     | /sbin/nologin|
  | 11 | games               | x      |   12 |100 | games                                                         | /usr/games                | /sbin/nologin|
  | 12 | ftp               | x      |   14 |   50 | FTP User                                                      | /var/ftp                  | /sbin/nologin|
  | 13 | nobody            | x      |   99 |   99 | Nobody                                                          | /                         | /sbin/nologin|
  修改数据库默认载体目录
  mysql> showvariableslike   "secure_file_priv";    ##查看数据库默认目录
  +------------------+-----------------------+
  | Variable_name    | Value               |
  +------------------+-----------------------+
  | secure_file_priv | /var/lib/mysql-files/ |
  +------------------+-----------------------+
  1 row in set (0.01 sec)
  mysql> quit
  bye
  # vim /etc/my.cnf
  # mkdir/mydata
  # ls -ld/mydata/
  drwxr-xr-x. 2 root root 6 2月23 22:51 /mydata/
  # chownmysql/mydata
  # setenforce0
  # getenforce
  Permissive
  # systemctl restart mysqld
  mysql> showvariableslike   "secure_file_priv";
  +------------------+----------+
  | Variable_name    | Value    |
  +------------------+----------+
  | secure_file_priv | /mydata/ |
  +------------------+----------+
  1 row in set (0.01 sec)
  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  导出数据:把表记录存储到系统文件里。
  命令格式:
  sql查询intooutfile"目录名/文件名"fieldsterminated by "符号"lines terminated by "符号";    ##目录为"secure_file_priv"指定的目录,文件自动生成,行分隔默认为"\n"
  mysql> select * from db3.user into outfile"/mydata/a.txt" fieldsterminated by ":";
  Query OK, 44 rows affected (0.02 sec)
  mysql> quit
  Bye
  mysql> select * from db3.user into outfile"/mydata/b.txt";                           ##字段分隔默认为tab
  Query OK, 44 rows affected (0.00 sec)
  mysql> quit
  Bye
  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  表记录的增、删、改、查
  插入数据(增)
  一次插入1条记录给所有字段赋值
  一次插入1条记录给指定字段赋值
  insert into 库.表 values(字段值列表);
  insert into 库.表(字段名列表)values(字段值列表),(字段值列表),(字段值列表);
  mysql> insert intodb3.uservalues(45,"jack","x",30,30,"this is student","/home/jack","/bin/bash");   ##一次插入1条记录给所有字段赋值
  Query OK, 1 row affected (0.00 sec)
  mysql> insert into db3.user(name,uid,gid) values("tom",31,31);                                       ##一次插入1条记录给指定字段赋值
  Query OK, 1 row affected (0.00 sec)
  查询记录:
  select字段名列表from库.表;
  select * fromdb3.user;
  select name,uid from db3.user;                     ##查询 name,uid字段

  mysql> select name,uid from db3.user where>  +--------+------+
  | name   | uid|
  +--------+------+
  | root   |    0 |
  | bin    |    1 |
  | daemon |    2 |
  +--------+------+
  3 rows in set (0.00 sec)
  查询/删除/更新数据时的匹配条件?
  1)数值比较 >>=<   select name from db3.user where uid=500;
  Empty set (0.00 sec)
  mysql> select * from db3.user where uid select name from db3.user where name=&quot;root&quot;;
  +------+
  | name |
  +------+
  | root |
  +------+
  1 row in set (0.00 sec)
  mysql> select name from db3.user where shell!=&quot;/bin/bash&quot;;
  3)范围内匹配
  between 数字1 and 数字2    ##在...之间
  mysql> select * from db3.user where uid between 10 and 20;
  +----+----------+----------+------+------+----------+------------+---------------+

  |>  +----+----------+----------+------+------+----------+------------+---------------+
  | 10 | operator | x      |   11 |    0 | operator | /root      | /sbin/nologin |
  | 11 | games    | x      |   12 |100 | games    | /usr/games | /sbin/nologin |
  | 12 | ftp      | x      |   14 |   50 | FTP User | /var/ftp   | /sbin/nologin |
  +----+----------+----------+------+------+----------+------------+---------------+
  3 rows in set (0.00 sec)
  4)in (值列表)   ##在..里面
  not in (值列表)   ##不在...里面
  mysql> select * from db3.user where name in(&quot;root&quot;,&quot;bin&quot;,&quot;adm&quot;);
  +----+------+----------+------+------+---------+----------+---------------+

  |>  +----+------+----------+------+------+---------+----------+---------------+
  |4 | adm| x      |    3 |    4 | adm   | /var/adm | /sbin/nologin |
  |2 | bin| x      |    1 |    1 | bin   | /bin   | /sbin/nologin |
  |1 | root | x      |    0 |    0 | root    | /root    | /bin/bash   |
  +----+------+----------+------+------+---------+----------+---------------+
  3 rows in set (0.00 sec)
  mysql> select name,uid from db3.user where uid in(500,100,20);   ##查询name,uid列的记录,条件是字段uid是500或者100或者20的
  Empty set (0.01 sec)
  mysql> select name,uid from db3.user where uid not in (20,50,80);##查询name,uid列的记录,条件是字段uid不是20或者50或者80的
  5)逻辑比较 (有多个判断条件)
  逻辑与and多个条件必须同时成立
  逻辑或 or多个条件某一个成立即可
  逻辑非 not
  mysql> select * from db3.user where name=&quot;jin&quot;oruid=100orshell=&quot;/bin/bash&quot;;
  +----+-------+----------+------+------+-----------------+-------------+-----------+

  |>  +----+-------+----------+------+------+-----------------+-------------+-----------+
  |1 | root| x      |    0 |    0 | root            | /root       | /bin/bash |
  | 43 | usetr | x      |127 |127 | usetr         | /home/usetr | /bin/bash |
  | 45 | jack| x      |   30 |   30 | this is student | /home/jack| /bin/bash |
  +----+-------+----------+------+------+-----------------+-------------+-----------+
  3 rows in set (0.00 sec)
  mysql> select * from db3.user where name=&quot;root&quot;anduid=0;
  +----+------+----------+------+------+---------+---------+-----------+

  |>  +----+------+----------+------+------+---------+---------+-----------+
  |1 | root | x      |    0 |    0 | root    | /root   | /bin/bash |
  +----+------+----------+------+------+---------+---------+-----------+
  1 row in set (0.00 sec)
  6)匹配空   is null
  匹配非空   is not null
  mysql> select * fromdb3.user where shell is null;
  +----+------+----------+------+------+---------+---------+-------+

  |>  +----+------+----------+------+------+---------+---------+-------+
  | 46 | tom| NULL   |   31 |   31 | NULL    | NULL    | NULL|
  +----+------+----------+------+------+---------+---------+-------+
  1 row in set (0.00 sec)
  mysql> select name,uid from db3.user where uid is not null;
  7)不显示查询结果的重复值
  mysql> select distinct shell from db3.user;
  +----------------+
  | shell          |
  +----------------+
  | /bin/bash      |
  | /sbin/nologin|
  | /bin/sync      |
  | /sbin/shutdown |
  | /sbin/halt   |
  | /bin/false   |
  | NULL         |
  +----------------+
  7 rows in set (0.00 sec)
  8)查询时做四则运算(+ - * /)

  mysql>>  Query OK, 46 rows affected (0.05 sec)
  Records: 46Duplicates: 0Warnings: 0
  mysql> select name,agefrom db3.user;      ##查看name,age的记录
  +---------------------+------+
  | name                | age|
  +---------------------+------+
  | root                |   21 |
  | bin               |   21 |
  | daemon            |   21 |
  | adm               |   21 |
  | lp                  |   21 |
  | sync                |   21 |
  | shutdown            |   21 |
  | halt                |   21 |
  | mail                |   21 |
  | operator            |   21 |
  | games               |   21 |
  | ftp               |   21 |
  | nobody            |   21 |
  | avahi-autoipd       |   21 |
  | systemd-bus-proxy   |   21 |
  | systemd-network   |   21 |
  mysql> select name,age,2018-age as syear from db3.user where name=&quot;root&quot;;   查看name,age,2018-age(字段名为syear)的记录,条件为字段name为root
  +------+------+-------+
  | name | age| syear |
  +------+------+-------+
  | root |   21 |1997 |
  +------+------+-------+
  1 row in set (0.00 sec)
  mysql> select name,uid,gid,(uid+gid)/2 as pjz fromdb3.user where name=&quot;sync&quot;;
  +------+------+------+--------+
  | name | uid| gid| pjz    |
  +------+------+------+--------+
  | sync |    5 |    0 | 2.5000 |
  +------+------+------+--------+
  1 row in set (0.00 sec)
  mysql> select name,uid,gid from db3.user where uid=gid;
  +---------------------+------+------+
  | name                | uid| gid|
  +---------------------+------+------+
  | root                |    0 |    0 |
  | bin               |    1 |    1 |
  | daemon            |    2 |    2 |
  | nobody            |   99 |   99 |
  | avahi-autoipd       |127 |127 |
  | systemd-bus-proxy   |127 |127 |
  | systemd-network   |127 |127 |
  | dbus                |   81 |   81 |
  | polkitd             |127 |127 |
  9)使用聚集函数(内置的,对数据做统计的命令)
  count(字段名)   统计个数(null值不做统计)
  sum(字段名)    求和
  avg(字段名)    计算平均数
  max(字段名)    求最大值
  min(字段名)    求最小值
  mysql> select min(uid) from db3.user where uid>100;   ##查看最小uid,条件为uid大于100
  +----------+
  | min(uid) |
  +----------+
  |      107 |
  +----------+
  1 row in set (0.00 sec)
  mysql> select count(name) from db3.user where shell=&quot;/bin/bash&quot;;   ##查看name的个数,条件为shell字段为&quot;/bin/bash&quot;
  +-------------+
  | count(name) |
  +-------------+
  |         3 |
  +-------------+
  1 row in set (0.00 sec)
  mysql> select count(name),count(id) from db3.user;                ##查看name字段值的个数,id字段值的个数
  +-------------+-----------+
  | count(name) | count(id) |
  +-------------+-----------+
  |          46 |      46 |
  +-------------+-----------+
  1 row in set (0.00 sec)
  mysql> insert into db3.user(name) values(null);                ##插入name字段的值,值为空
  Query OK, 1 row affected (0.00 sec)
  mysql> select count(name),count(id) from db3.user;             ##查看name,id字段值的个数,id多一个,因为自增,name为空没有增加个数
  +-------------+-----------+
  | count(name) | count(id) |
  +-------------+-----------+
  |          46 |      47 |
  +-------------+-----------+
  1 row in set (0.00 sec)
  mysql> select count(name) from db3.user where name is null;    ##查看name字段值的个数,条件为name为空,个数为0,因为值为空什么都没有,不统计。
  +-------------+
  | count(name) |
  +-------------+
  |         0 |
  +-------------+
  1 row in set (0.00 sec)
  mysql> select count(id) from db3.user where name is null;   ##查看id字段值的个数,条件为name字段值为空。(名字为空的id个数)
  +-----------+
  | count(id) |
  +-----------+
  |         1 |
  +-----------+
  1 row in set (0.00 sec)
  模糊匹配 like '表达式';
  %    匹配零个或多个字符
  _    匹配任意一个字符
  mysql> select name from db3.user where name like '___';      ##查看name字段值位数为3个的记录
  +------+
  | name |
  +------+
  | adm|
  | bin|
  | ftp|
  | gdm|
  | ntp|
  | rpc|
  | tom|
  | tss|
  +------+
  8 rows in set (0.00 sec)
  mysql> select name from db3.user where name like '%';   ##查看name字段值位数为2个以上的记录
  +---------------------+
  | name                |
  +---------------------+
  | abrt                |
  | adm               |
  | avahi               |
  | avahi-autoipd       |
  | bin               |
  mysql> select name from db3.user where name like 'a%';    ##查看name字段值含有a的记录
  +---------------+
  | name          |
  +---------------+
  | abrt          |
  | adm         |
  | avahi         |
  | avahi-autoipd |
  +---------------+
  4 rows in set (0.00 sec)
  正则匹配
  mysql> insert into db3.user(name)values(&quot;8yaya&quot;),(&quot;ya6ya&quot;),(&quot;yaya4&quot;),(&quot;YayA&quot;),(&quot;TOM&quot;);
  Query OK, 5 rows affected (0.00 sec)
  Records: 5Duplicates: 0Warnings: 0
  mysql> select name from db3.user where name regexp '';
  +-------+
  | name|
  +-------+
  | 8yaya |
  | ya6ya |
  | yaya4 |
  +-------+
  3 rows in set (0.00 sec)
  mysql> select name,uid from db3.user where uid regexp '..';    ##查看na
  +---------------------+------+
  | name                | uid|
  +---------------------+------+
  | operator            |   11 |
  | games               |   12 |
  | ftp               |   14 |
  | nobody            |   99 |
  | avahi-autoipd       |127 |
  | systemd-bus-proxy   |127 |
  mysql> select name,uid from db3.user where uid regexp '^..$';    ##查看name为2个字符的记录
  +----------+------+
  | name   | uid|
  +----------+------+
  | operator |   11 |
  | games    |   12 |
  | ftp      |   14 |
  | nobody   |   99 |
  查询分组(过滤掉相同的)
  sql查询groupby字段名;
  mysql> select shell from db3.user where uid between 10 and 20 group by shell;
  +---------------+
  | shell         |
  +---------------+
  | /sbin/nologin |
  +---------------+
  1 row in set (0.00 sec)
  比较
  mysql> select shell from db3.user where uid between 10 and 20;
  +---------------+
  | shell         |
  +---------------+
  | /sbin/nologin |
  | /sbin/nologin |
  | /sbin/nologin |
  +---------------+
  3 rows in set (0.00 sec)
  查询排序 order by
  asc|desc
  sql查询orderby字段名 升序|降序    ##默认为升序

  mysql> select>  +----+----------+------+------+

  |>  +----+----------+------+------+
  | 31 | radvd    |   75 |   75 |
  | 41 | sshd   |   74 |   74 |
  | 42 | tcpdump|   72 |   72 |
  | 38 | avahi    |   70 |   70 |
  | 20 | tss      |   59 |   59 |
  | 36 | gdm      |   42 |   42 |
  | 40 | ntp      |   38 |   38 |
  | 28 | rpc      |   32 |   32 |
  | 46 | tom      |   31 |   31 |
  | 45 | jack   |   30 |   30 |
  | 33 | rpcuser|   29 |   29 |
  | 44 | mysql    |   27 |   27 |
  | 12 | ftp      |   14 |   50 |
  | 11 | games    |   12 |100 |
  | 10 | operator |   11 |    0 |
  +----+----------+------+------+
  15 rows in set (0.00 sec)

  mysql> select>  +----+----------+------+------+

  |>  +----+----------+------+------+
  | 10 | operator |   11 |    0 |
  | 11 | games    |   12 |100 |
  | 12 | ftp      |   14 |   50 |
  | 44 | mysql    |   27 |   27 |
  | 33 | rpcuser|   29 |   29 |
  | 45 | jack   |   30 |   30 |
  | 46 | tom      |   31 |   31 |
  | 28 | rpc      |   32 |   32 |
  | 40 | ntp      |   38 |   38 |
  | 36 | gdm      |   42 |   42 |
  | 20 | tss      |   59 |   59 |
  | 38 | avahi    |   70 |   70 |
  | 42 | tcpdump|   72 |   72 |
  | 41 | sshd   |   74 |   74 |
  | 31 | radvd    |   75 |   75 |
  +----+----------+------+------+
  15 rows in set (0.00 sec)

  mysql> select>  +----+----------+------+------+

  |>  +----+----------+------+------+
  | 10 | operator |   11 |    0 |
  | 11 | games    |   12 |100 |
  | 12 | ftp      |   14 |   50 |
  | 44 | mysql    |   27 |   27 |
  | 33 | rpcuser|   29 |   29 |
  | 45 | jack   |   30 |   30 |
  | 46 | tom      |   31 |   31 |
  | 28 | rpc      |   32 |   32 |
  | 40 | ntp      |   38 |   38 |
  | 36 | gdm      |   42 |   42 |
  | 20 | tss      |   59 |   59 |
  | 38 | avahi    |   70 |   70 |
  | 42 | tcpdump|   72 |   72 |
  | 41 | sshd   |   74 |   74 |
  | 31 | radvd    |   75 |   75 |
  +----+----------+------+------+
  15 rows in set (0.00 sec)
  限制显示查询记录行数
  sql查询limit数字;      #显示查询结果的前几行
  sql查询limit数字1,数字2;   ##限制显示行的范围,数字2限制显示的行数,第一行的编号为0
  mysql> select * from db3.user limit 2,4;
  +----+--------+----------+------+------+---------+----------------+---------------+------+

  |>  +----+--------+----------+------+------+---------+----------------+---------------+------+
  |3 | daemon | x      |    2 |    2 | daemon| /sbin          | /sbin/nologin |   21 |
  |4 | adm    | x      |    3 |    4 | adm   | /var/adm       | /sbin/nologin |   21 |
  |5 | lp   | x      |    4 |    7 | lp      | /var/spool/lpd | /sbin/nologin |   21 |
  |6 | sync   | x      |    5 |    0 | sync    | /sbin          | /bin/sync   |   21 |
  +----+--------+----------+------+------+---------+----------------+---------------+------+
  4 rows in set (0.00 sec)
  mysql> select * from db3.user order by uid desc limit 3;                            ##查询uid最大三个所有记录
  +----+-------------------+----------+------+------+----------------------------+------------------------+---------------+------+

  |>  +----+-------------------+----------+------+------+----------------------------+------------------------+---------------+------+
  | 14 | avahi-autoipd   | x      |127 |127 | Avahi IPv4LL Stack         | /var/lib/avahi-autoipd | /sbin/nologin |   21 |
  | 15 | systemd-bus-proxy | x      |127 |127 | systemd Bus Proxy          | /                      | /sbin/nologin |   21 |
  | 16 | systemd-network   | x      |127 |127 | systemd Network Management | /                      | /sbin/nologin |   21 |
  +----+-------------------+----------+------+------+----------------------------+------------------------+---------------+------+
  3 rows in set (0.00 sec)
  查询/删除/更新数据时都可以
  条件修改
  update库.表set字段=值,字段=&quot;值&quot;where 条件;
  批量修改
  update库.表set字段=值,字段=&quot;值&quot;;
  mysql> update db3.user set age=18;
  Query OK, 52 rows affected (0.00 sec)
  Rows matched: 52Changed: 52Warnings: 0
  mysql> update db3.user set name=null where name=&quot;root&quot;;
  Query OK, 1 row affected (0.00 sec)
  Rows matched: 1Changed: 1Warnings: 0
  mysql> update db3.user set uid=uid+1 where uid delete from db3.user where name is null;
  Query OK, 2 rows affected (0.00 sec)
  删除所有表记录
  delete from 库.表;
  复制表
  create table库.表 sql查询;
  mysql> create table db3.user2 select * from db3.user;    ##备份表user表给user2, 不能备份key
  Query OK, 50 rows affected (0.09 sec)
  Records: 50Duplicates: 0Warnings: 0
  mysql> desc user2;
  +----------+------------+------+-----+---------+-------+
  | Field    | Type       | Null | Key | Default | Extra |
  +----------+------------+------+-----+---------+-------+

  |>  | name   | char(50)   | YES|   | NULL    |       |
  | password | char(8)    | YES|   | NULL    |       |
  | uid      | tinyint(6) | YES|   | NULL    |       |
  | gid      | tinyint(6) | YES|   | NULL    |       |
  | comment| char(100)| YES|   | NULL    |       |
  | homedir| char(100)| YES|   | NULL    |       |
  | shell    | char(30)   | YES|   | NULL    |       |
  | age      | tinyint(2) | YES|   | 21      |       |
  +----------+------------+------+-----+---------+-------+
  9 rows in set (0.00 sec)
  mysql> create table db3.user3 select * from db3.user where 1=2;    ##快速建表结构
  Query OK, 0 rows affected (0.02 sec)
  Records: 0Duplicates: 0Warnings: 0
  mysql> select * from user3;      ##表内没有记录
  Empty set (0.00 sec)
  mysql> desc user3;
  +----------+------------+------+-----+---------+-------+
  | Field    | Type       | Null | Key | Default | Extra |
  +----------+------------+------+-----+---------+-------+

  |>  | name   | char(50)   | YES|   | NULL    |       |
  | password | char(8)    | YES|   | NULL    |       |
  | uid      | tinyint(6) | YES|   | NULL    |       |
  | gid      | tinyint(6) | YES|   | NULL    |       |
  | comment| char(100)| YES|   | NULL    |       |
  | homedir| char(100)| YES|   | NULL    |       |
  | shell    | char(30)   | YES|   | NULL    |       |
  | age      | tinyint(2) | YES|   | 21      |       |
  +----------+------------+------+-----+---------+-------+
  9 rows in set (0.00 sec)
  单表查询
  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  where嵌套查询
  select 字段名 from 库.表 where 条件 (select 字段名 from 库.表 where 条件);
  外面的查询在内的结果查询
  查找UID的字段值大于uid平均值的name和uid
  mysql> selectname,uid fromdb3.user where uid > (select avg(uid) from db3.user);
  +---------------------+------+
  | name                | uid|
  +---------------------+------+
  | nobody            |   99 |
  | avahi-autoipd       |127 |
  | systemd-bus-proxy   |127 |
  | systemd-network   |127 |
  | dbus                |   81 |
  | polkitd             |127 |
  | unbound             |127 |
  | colord            |127 |
  | usbmuxd             |113 |
  | geoclue             |127 |
  | saslauth            |127 |
  | libstoragemgmt      |127 |
  | abrt                |127 |
  | setroubleshoot      |127 |
  | rtkit               |127 |
  | chrony            |127 |
  | radvd               |   75 |
  | qemu                |107 |
  | nfsnobody         |127 |
  | pulse               |127 |
  | gnome-initial-setup |127 |
  | postfix             |   89 |
  | sshd                |   74 |
  | usetr               |127 |
  +---------------------+------+
  24 rows in set (0.00 sec)
  mysql> select avg(uid) from db3.user;
  +----------+
  | avg(uid) |
  +----------+
  |73.5111 |
  +----------+
  查找uid最小值的name
  mysql> select name from db3.user where uid = (select min(uid) from db3.user);
  +------+
  | name |
  +------+
  | bin|
  +------+
  1 row in set (0.00 sec)
  mysql> select name,uid from db3.user where uid = (select min(uid) from db3.user);
  +------+------+
  | name | uid|
  +------+------+
  | bin|    2 |
  +------+------+
  1 row in set (0.00 sec)
  借用另一个表里面查询本表
  mysql> select name from db3.user where name in (select user from mysql.user where host=&quot;localhost&quot;);
  Empty set (0.00 sec)
  +++++++++++++++++++++++++++++++++++++++++++++++++++
  多表查询(将两个以上的表,按某个条件连接起来,取所要的数据)
  select 字段名列表 from 表名列表;笛卡尔集合(查询)
  select 字段名列表 from 表名列表 where 条件;
  mysql> create database db4;
  Query OK, 1 row affected (0.00 sec)
  mysql> create table db4.t1 select name,uid,homedirfromdb3.user limit 3;
  Query OK, 3 rows affected (0.03 sec)
  Records: 3Duplicates: 0Warnings: 0
  mysql> select * from db4.t1;
  +--------+------+----------+
  | name   | uid| homedir|
  +--------+------+----------+
  | bin    |    2 | /bin   |
  | daemon |    3 | /sbin    |
  | adm    |    4 | /var/adm |
  +--------+------+----------+
  3 rows in set (0.00 sec)
  mysql> create table db4.t2 select name,uid,homedirfromdb3.user limit 5;
  Query OK, 5 rows affected (0.03 sec)
  Records: 5Duplicates: 0Warnings: 0
  mysql> select * from db4.t2;
  +--------+------+----------------+
  | name   | uid| homedir      |
  +--------+------+----------------+
  | bin    |    2 | /bin         |
  | daemon |    3 | /sbin          |
  | adm    |    4 | /var/adm       |
  | lp   |    5 | /var/spool/lpd |
  | sync   |    6 | /sbin          |
  +--------+------+----------------+
  5 rows in set (0.00 sec)
  不加条件
  mysql> select from t1,t2;       ##迪卡尔(表少的行数表多的行数)
  +--------+------+----------+--------+------+----------------+
  | name   | uid| homedir| name   | uid| homedir      |
  +--------+------+----------+--------+------+----------------+
  | bin    |    2 | /bin   | bin    |    2 | /bin         |
  | daemon |    3 | /sbin    | bin    |    2 | /bin         |
  | adm    |    4 | /var/adm | bin    |    2 | /bin         |
  | bin    |    2 | /bin   | daemon |    3 | /sbin          |
  | daemon |    3 | /sbin    | daemon |    3 | /sbin          |
  | adm    |    4 | /var/adm | daemon |    3 | /sbin          |
  | bin    |    2 | /bin   | adm    |    4 | /var/adm       |
  | daemon |    3 | /sbin    | adm    |    4 | /var/adm       |
  | adm    |    4 | /var/adm | adm    |    4 | /var/adm       |
  | bin    |    2 | /bin   | lp   |    5 | /var/spool/lpd |
  | daemon |    3 | /sbin    | lp   |    5 | /var/spool/lpd |
  | adm    |    4 | /var/adm | lp   |    5 | /var/spool/lpd |
  | bin    |    2 | /bin   | sync   |    6 | /sbin          |
  | daemon |    3 | /sbin    | sync   |    6 | /sbin          |
  | adm    |    4 | /var/adm | sync   |    6 | /sbin          |
  +--------+------+----------+--------+------+----------------+
  15 rows in set (0.00 sec)
  加条件
  mysql> select t1.name,t2.name,t1.homedir from t1,t2 where t1.name = t2.name;
  +--------+--------+----------+
  | name   | name   | homedir|
  +--------+--------+----------+
  | bin    | bin    | /bin   |
  | daemon | daemon | /sbin    |
  | adm    | adm    | /var/adm |
  +--------+--------+----------+
  3 rows in set (0.00 sec)
  mysql> select t1.name,t2.name,t1.homedir from t1,t2 where t1.uid = t2.uid;
  +--------+--------+----------+
  | name   | name   | homedir|
  +--------+--------+----------+
  | bin    | bin    | /bin   |
  | daemon | daemon | /sbin    |
  | adm    | adm    | /var/adm |
  +--------+--------+----------+
  3 rows in set (0.00 sec)
  +++++++++++++++++++++++++++++++++++++++
  连接查询
  select字段名列表 from 表1left join 表2on 条件;
  select字段名列表 from 表1right join 表2on 条件;
  mysql> create table db4.t3 select name,uid,homedir from db3.user limit 4;
  Query OK, 4 rows affected (0.02 sec)
  Records: 4Duplicates: 0Warnings: 0
  mysql> create table db4.t4 select name,uid,homedir from db3.user limit 6;
  Query OK, 6 rows affected (0.04 sec)
  Records: 6Duplicates: 0Warnings: 0
  mysql> select * from db4.t3;
  +--------+------+----------------+
  | name   | uid| homedir      |
  +--------+------+----------------+
  | bin    |    2 | /bin         |
  | daemon |    3 | /sbin          |
  | adm    |    4 | /var/adm       |
  | lp   |    5 | /var/spool/lpd |
  +--------+------+----------------+
  4 rows in set (0.00 sec)
  mysql> select * from db4.t4;
  +----------+------+----------------+
  | name   | uid| homedir      |
  +----------+------+----------------+
  | bin      |    2 | /bin         |
  | daemon   |    3 | /sbin          |
  | adm      |    4 | /var/adm       |
  | lp       |    5 | /var/spool/lpd |
  | sync   |    6 | /sbin          |
  | shutdown |    7 | /sbin          |
  +----------+------+----------------+
  6 rows in set (0.00 sec)
  左连接
  mysql> select * from t3 left join t4 on t3.uid = t4.uid;   ##以左表为主显示所有记录,条件显示相同的记录
  +--------+------+----------------+--------+------+----------------+
  | name   | uid| homedir      | name   | uid| homedir      |
  +--------+------+----------------+--------+------+----------------+
  | bin    |    2 | /bin         | bin    |    2 | /bin         |
  | daemon |    3 | /sbin          | daemon |    3 | /sbin          |
  | adm    |    4 | /var/adm       | adm    |    4 | /var/adm       |
  | lp   |    5 | /var/spool/lpd | lp   |    5 | /var/spool/lpd |
  +--------+------+----------------+--------+------+----------------+
  4 rows in set (0.00 sec)
  右连接
  mysql> select * from t3 right join t4 on t3.uid = t4.uid;    ##以右表为主显示所有记录,条件显示相同的记录,不相同的用null显示
  +--------+------+----------------+----------+------+----------------+
  | name   | uid| homedir      | name   | uid| homedir      |
  +--------+------+----------------+----------+------+----------------+
  | bin    |    2 | /bin         | bin      |    2 | /bin         |
  | daemon |    3 | /sbin          | daemon   |    3 | /sbin          |
  | adm    |    4 | /var/adm       | adm      |    4 | /var/adm       |
  | lp   |    5 | /var/spool/lpd | lp       |    5 | /var/spool/lpd |
  | NULL   | NULL | NULL         | sync   |    6 | /sbin          |
  | NULL   | NULL | NULL         | shutdown |    7 | /sbin          |
  +--------+------+----------------+----------+------+----------------+
  6 rows in set (0.00 sec)
  mysql> select t3.name,t4.name from t3 right join t4 on t3.uid = t4.uid;    ##以右表为主显示name记录,条件显示相同的记录,不相同的用null显示
  +--------+----------+
  | name   | name   |
  +--------+----------+
  | bin    | bin      |
  | daemon | daemon   |
  | adm    | adm      |
  | lp   | lp       |
  | NULL   | sync   |
  | NULL   | shutdown |
  +--------+----------+
  6 rows in set (0.00 sec)
  商品衣服
  库存信息表
  销售信息表
  对象 学生
  缴费信息表
  班级表
  就业表
  扩展知识?
  +++++++++++++++++++++++++++++++++++++++++++++++++++

页: [1]
查看完整版本: MySQL第三天(管理表记录)