数据的导入、导出
sql
-- 查看当前设置的目录路径,限制从数据库服务器读取和写入文件的操作只能在指定的目录中进行,在安全性和文件操作限制方面具有重要意义。
root@mysqldb 14:19: [(none)]> SHOW VARIABLES LIKE "secure_file_priv";
+------------------+-------------------+
| Variable_name | Value |
+------------------+-------------------+
| secure_file_priv | /data/mysql/data/ |
+------------------+-------------------+
1 row in set (0.02 sec)
sql
#配置文件
[root@mrloam ~]# grep secure_file_priv /etc/my.cnf
secure_file_priv = /data/mysql/data
1.数据导入
sql
root@mysqldb 14:40: [(none)]> CREATE TABLE db3.user (
-> name VARCHAR(30),
-> password VARCHAR(8),
-> uid INT,
-> gid INT,
-> comment VARCHAR(150),
-> homedir CHAR(80),
-> shell CHAR(60)
-> );
Query OK, 0 rows affected (0.01 sec)
root@mysqldb 14:40: [(none)]> DESC db3.user;
+----------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| name | varchar(30) | YES | | NULL | |
| password | varchar(8) | YES | | NULL | |
| uid | int(11) | YES | | NULL | |
| gid | int(11) | YES | | NULL | |
| comment | varchar(150) | YES | | NULL | |
| homedir | char(80) | YES | | NULL | |
| shell | char(60) | YES | | NULL | |
+----------+--------------+------+-----+---------+-------+
7 rows in set (0.01 sec)
root@mysqldb 14:40: [(none)]> SELECT * FROM db3.user;
Empty set (0.00 sec)
sql
-- 准备数据文件
root@mysqldb 14:41: [(none)]> system cp /etc/passwd /data/mysql/data/
root@mysqldb 14:42: [(none)]> system ls /data/mysql/data/
auto.cnf client-key.pem ibdata1 mysql public_key.pem sys
ca-key.pem d1 ib_logfile0 passwd server-cert.pem
ca.pem db3 ib_logfile1 performance_schema server-key.pem
client-cert.pem ib_buffer_pool ibtmp1 private_key.pem sql_self_learning_skills
-- 导入数据
root@mysqldb 14:43: [(none)]> load data infile "/data/mysql/data/passwd" into table db3.user fields terminated by ":" lines terminated by "\n";
Query OK, 21 rows affected (0.00 sec)
Records: 21 Deleted: 0 Skipped: 0 Warnings: 0
root@mysqldb 14:45: [(none)]> alter table db3.user add id int primary key auto_increment first;
Query OK, 0 rows affected (0.16 sec)
Records: 0 Duplicates: 0 Warnings: 0
root@mysqldb 14:46: [(none)]> select * from db3.user ;
+----+-----------------+----------+------+------+----------------------------+--------------------+----------------+
| id | name | password | uid | gid | comment | homedir | shell |
+----+-----------------+----------+------+------+----------------------------+--------------------+----------------+
| 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 |
| 14 | systemd-network | x | 192 | 192 | systemd Network Management | / | /sbin/nologin |
| 15 | dbus | x | 81 | 81 | System message bus | / | /sbin/nologin |
| 16 | polkitd | x | 999 | 998 | User for polkitd | / | /sbin/nologin |
| 17 | sshd | x | 74 | 74 | Privilege-separated SSH | /var/empty/sshd | /sbin/nologin |
| 18 | postfix | x | 89 | 89 | | /var/spool/postfix | /sbin/nologin |
| 19 | chrony | x | 998 | 996 | | /var/lib/chrony | /sbin/nologin |
| 20 | mysql | x | 1000 | 1000 | | /home/mysql | /sbin/nologin |
| 21 | test | x | 1001 | 1001 | | /home/test | /bin/bash |
+----+-----------------+----------+------+------+----------------------------+--------------------+----------------+
21 rows in set (0.00 sec)
2.数据导出
把表记录存储到系统文件里
批量处理数据
命令格式:
sql查询命令 into outfile "目录/文件名"
fields terminated by "列间隔符号" lines terminated by "行间隔符号"\]; ```sql -- 数据导出 root@mysqldb 14:47: [(none)]> select * from db3.user where id <= 10 into outfile "/data/mysql/data/a.txt"; Query OK, 10 rows affected (0.00 sec) root@mysqldb 14:51: [(none)]> select name ,shell from db3.user into outfile "/data/mysql/data/b.txt" fields terminated by "###"; Query OK, 21 rows affected (0.00 sec) root@mysqldb 14:51: [(none)]> select name , shell , uid from db3.user where id <= 3 -> into outfile "/data/mysql/data/c.txt" -> fields terminated by "????" lines terminated by "###" ; Query OK, 3 rows affected (0.00 sec) ``` ```sql #查看 [root@mrloam ~]# cat /data/mysql/data/a.txt 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 [root@mrloam ~]# cat /data/mysql/data/b.txt root###/bin/bash bin###/sbin/nologin daemon###/sbin/nologin adm###/sbin/nologin lp###/sbin/nologin sync###/bin/sync shutdown###/sbin/shutdown halt###/sbin/halt mail###/sbin/nologin operator###/sbin/nologin games###/sbin/nologin ftp###/sbin/nologin nobody###/sbin/nologin systemd-network###/sbin/nologin dbus###/sbin/nologin polkitd###/sbin/nologin sshd###/sbin/nologin postfix###/sbin/nologin chrony###/sbin/nologin mysql###/sbin/nologin test###/bin/bash [root@mrloam ~]# cat /data/mysql/data/c.txt root????/bin/bash????0###bin????/sbin/nologin????1###daemon????/sbin/nologin????2### ``` ## 3.管理表记录 ```sql root@mysqldb 15:06: [(none)]> insert into db3.user -> values -> (22,"tom","x",2001,2001,"test user","/home/tom","/bin/bash"), -> (23,"tom","x",2001,2001,"test user","/home/tom","/bin/bash"), -> (24,"tom","x",2001,2001,"test user","/home/tom","/bin/bash"); Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0 root@mysqldb 14:59: [(none)]> insert into db3.user(name,uid,shell) values("bob",3000,"/bin/bash"); Query OK, 1 row affected (0.00 sec) root@mysqldb 15:00: [(none)]> insert into db3.user(name,uid,shell) -> values -> ("bobf",3000,"/bin/bash"),("bobc",3003,"/bin/bash"),("bobA",3002,"/bin/bash"); Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0 ``` ```sql root@mysqldb 15:01: [(none)]> select * from db3.user where shell = "/sbin/nologin" ; +----+-----------------+----------+------+------+----------------------------+--------------------+------------- | id | name | password | uid | gid | comment | homedir | shell +----+-----------------+----------+------+------+----------------------------+--------------------+------------- | 2 | bin | x | 1 | 1 | bin | /bin | /sbin/nologi | 3 | daemon | x | 2 | 2 | daemon | /sbin | /sbin/nologi | 4 | adm | x | 3 | 4 | adm | /var/adm | /sbin/nologi | 5 | lp | x | 4 | 7 | lp | /var/spool/lpd | /sbin/nologi | 9 | mail | x | 8 | 12 | mail | /var/spool/mail | /sbin/nologi | 10 | operator | x | 11 | 0 | operator | /root | /sbin/nologi | 11 | games | x | 12 | 100 | games | /usr/games | /sbin/nologi | 12 | ftp | x | 14 | 50 | FTP User | /var/ftp | /sbin/nologi | 13 | nobody | x | 99 | 99 | Nobody | / | /sbin/nologi | 14 | systemd-network | x | 192 | 192 | systemd Network Management | / | /sbin/nologi | 15 | dbus | x | 81 | 81 | System message bus | / | /sbin/nologi | 16 | polkitd | x | 999 | 998 | User for polkitd | / | /sbin/nologi | 17 | sshd | x | 74 | 74 | Privilege-separated SSH | /var/empty/sshd | /sbin/nologi | 18 | postfix | x | 89 | 89 | | /var/spool/postfix | /sbin/nologi | 19 | chrony | x | 998 | 996 | | /var/lib/chrony | /sbin/nologi | 20 | mysql | x | 1000 | 1000 | | /home/mysql | /sbin/nologi +----+-----------------+----------+------+------+----------------------------+--------------------+------------- 16 rows in set (0.00 sec) root@mysqldb 15:01: [(none)]> select name , shell from db3.user where shell = "/sbin/nologin" ; +-----------------+---------------+ | name | shell | +-----------------+---------------+ | bin | /sbin/nologin | | daemon | /sbin/nologin | | adm | /sbin/nologin | | lp | /sbin/nologin | | mail | /sbin/nologin | | operator | /sbin/nologin | | games | /sbin/nologin | | ftp | /sbin/nologin | | nobody | /sbin/nologin | | systemd-network | /sbin/nologin | | dbus | /sbin/nologin | | polkitd | /sbin/nologin | | sshd | /sbin/nologin | | postfix | /sbin/nologin | | chrony | /sbin/nologin | | mysql | /sbin/nologin | +-----------------+---------------+ 16 rows in set (0.00 sec) ``` ```sql root@mysqldb 15:01: [(none)]> update db3.user set password="A" , comment="student" ; Query OK, 28 rows affected (0.00 sec) Rows matched: 28 Changed: 28 Warnings: 0 root@mysqldb 15:02: [(none)]> update db3.user set password="x" , comment="root" where name="root"; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 ``` ```sql root@mysqldb 15:02: [(none)]> delete from db3.user where id >= 21 ; Query OK, 8 rows affected (0.00 sec) ``` ```sql root@mysqldb 15:07: [(none)]> select name , uid , gid from db3.user where uid != gid ; +----------+------+------+ | name | uid | gid | +----------+------+------+ | adm | 3 | 4 | | lp | 4 | 7 | | sync | 5 | 0 | | shutdown | 6 | 0 | | halt | 7 | 0 | | mail | 8 | 12 | | operator | 11 | 0 | | games | 12 | 100 | | ftp | 14 | 50 | | polkitd | 999 | 998 | | chrony | 998 | 996 | +----------+------+------+ 11 rows in set (0.00 sec) root@mysqldb 15:08: [(none)]> select name , uid , gid from db3.user where uid != gid ; +----------+------+------+ | name | uid | gid | +----------+------+------+ | adm | 3 | 4 | | lp | 4 | 7 | | sync | 5 | 0 | | shutdown | 6 | 0 | | halt | 7 | 0 | | mail | 8 | 12 | | operator | 11 | 0 | | games | 12 | 100 | | ftp | 14 | 50 | | polkitd | 999 | 998 | | chrony | 998 | 996 | +----------+------+------+ 11 rows in set (0.00 sec) root@mysqldb 15:08: [(none)]> select * from db3.user where id <= 5 ; +----+--------+----------+------+------+---------+----------------+---------------+ | id | name | password | uid | gid | comment | homedir | shell | +----+--------+----------+------+------+---------+----------------+---------------+ | 1 | root | x | 0 | 0 | root | /root | /bin/bash | | 2 | bin | A | 1 | 1 | student | /bin | /sbin/nologin | | 3 | daemon | A | 2 | 2 | student | /sbin | /sbin/nologin | | 4 | adm | A | 3 | 4 | student | /var/adm | /sbin/nologin | | 5 | lp | A | 4 | 7 | student | /var/spool/lpd | /sbin/nologin | +----+--------+----------+------+------+---------+----------------+---------------+ 5 rows in set (0.00 sec) root@mysqldb 15:09: [(none)]> select name , shell from db3.user where shell != "/bin/bash" ; +-----------------+----------------+ | name | shell | +-----------------+----------------+ | bin | /sbin/nologin | | daemon | /sbin/nologin | | adm | /sbin/nologin | | lp | /sbin/nologin | | sync | /bin/sync | | shutdown | /sbin/shutdown | | halt | /sbin/halt | | mail | /sbin/nologin | | operator | /sbin/nologin | | games | /sbin/nologin | | ftp | /sbin/nologin | | nobody | /sbin/nologin | | systemd-network | /sbin/nologin | | dbus | /sbin/nologin | | polkitd | /sbin/nologin | | sshd | /sbin/nologin | | postfix | /sbin/nologin | | chrony | /sbin/nologin | | mysql | /sbin/nologin | +-----------------+----------------+ 19 rows in set (0.00 sec) root@mysqldb 15:09: [(none)]> select name , uid , shell from db3.user where shell is not null ; +-----------------+------+----------------+ | name | uid | shell | +-----------------+------+----------------+ | root | 0 | /bin/bash | | bin | 1 | /sbin/nologin | | daemon | 2 | /sbin/nologin | | adm | 3 | /sbin/nologin | | lp | 4 | /sbin/nologin | | sync | 5 | /bin/sync | | shutdown | 6 | /sbin/shutdown | | halt | 7 | /sbin/halt | | mail | 8 | /sbin/nologin | | operator | 11 | /sbin/nologin | | games | 12 | /sbin/nologin | | ftp | 14 | /sbin/nologin | | nobody | 99 | /sbin/nologin | | systemd-network | 192 | /sbin/nologin | | dbus | 81 | /sbin/nologin | | polkitd | 999 | /sbin/nologin | | sshd | 74 | /sbin/nologin | | postfix | 89 | /sbin/nologin | | chrony | 998 | /sbin/nologin | | mysql | 1000 | /sbin/nologin | +-----------------+------+----------------+ 20 rows in set (0.00 sec) root@mysqldb 15:09: [(none)]> select name , uid , shell from db3.user where shell is null ; Empty set (0.00 sec) ``` ```sql root@mysqldb 15:10: [(none)]> select name , uid from db3.user where uid in (3 ,6,9,11); +----------+------+ | name | uid | +----------+------+ | adm | 3 | | shutdown | 6 | | operator | 11 | +----------+------+ 3 rows in set (0.00 sec) root@mysqldb 15:10: [(none)]> select shell from db3.user where shell not in ("/bin/bash","/sbin/nologin"); +----------------+ | shell | +----------------+ | /bin/sync | | /sbin/shutdown | | /sbin/halt | +----------------+ 3 rows in set (0.00 sec) ``` ```sql root@mysqldb 15:10: [(none)]> select name , uid from db3.user -> where name = "sync" or name = "apache" or uid=3; +------+------+ | name | uid | +------+------+ | adm | 3 | | sync | 5 | +------+------+ 2 rows in set (0.00 sec) root@mysqldb 15:11: [(none)]> select * from db3.user where id >= 10 and id <= 20 ; +----+-----------------+----------+------+------+---------+--------------------+---------------+ | id | name | password | uid | gid | comment | homedir | shell | +----+-----------------+----------+------+------+---------+--------------------+---------------+ | 10 | operator | A | 11 | 0 | student | /root | /sbin/nologin | | 11 | games | A | 12 | 100 | student | /usr/games | /sbin/nologin | | 12 | ftp | A | 14 | 50 | student | /var/ftp | /sbin/nologin | | 13 | nobody | A | 99 | 99 | student | / | /sbin/nologin | | 14 | systemd-network | A | 192 | 192 | student | / | /sbin/nologin | | 15 | dbus | A | 81 | 81 | student | / | /sbin/nologin | | 16 | polkitd | A | 999 | 998 | student | / | /sbin/nologin | | 17 | sshd | A | 74 | 74 | student | /var/empty/sshd | /sbin/nologin | | 18 | postfix | A | 89 | 89 | student | /var/spool/postfix | /sbin/nologin | | 19 | chrony | A | 998 | 996 | student | /var/lib/chrony | /sbin/nologin | | 20 | mysql | A | 1000 | 1000 | student | /home/mysql | /sbin/nologin | +----+-----------------+----------+------+------+---------+--------------------+---------------+ 11 rows in set (0.00 sec) -- || 也可以表示或 root@mysqldb 15:11: [(none)]> select name , uid from db3.user -> where name = "sync" || name = "apache" || uid=3; +------+------+ | name | uid | +------+------+ | adm | 3 | | sync | 5 | +------+------+ 2 rows in set (0.00 sec) -- && 表示and root@mysqldb 15:11: [(none)]> select * from db3.user where id >= 10 && id <= 20 ; +----+-----------------+----------+------+------+---------+--------------------+---------------+ | id | name | password | uid | gid | comment | homedir | shell | +----+-----------------+----------+------+------+---------+--------------------+---------------+ | 10 | operator | A | 11 | 0 | student | /root | /sbin/nologin | | 11 | games | A | 12 | 100 | student | /usr/games | /sbin/nologin | | 12 | ftp | A | 14 | 50 | student | /var/ftp | /sbin/nologin | | 13 | nobody | A | 99 | 99 | student | / | /sbin/nologin | | 14 | systemd-network | A | 192 | 192 | student | / | /sbin/nologin | | 15 | dbus | A | 81 | 81 | student | / | /sbin/nologin | | 16 | polkitd | A | 999 | 998 | student | / | /sbin/nologin | | 17 | sshd | A | 74 | 74 | student | /var/empty/sshd | /sbin/nologin | | 18 | postfix | A | 89 | 89 | student | /var/spool/postfix | /sbin/nologin | | 19 | chrony | A | 998 | 996 | student | /var/lib/chrony | /sbin/nologin | | 20 | mysql | A | 1000 | 1000 | student | /home/mysql | /sbin/nologin | +----+-----------------+----------+------+------+---------+--------------------+---------------+ 11 rows in set (0.00 sec) ``` ```sql -- 查询的优先级 root@mysqldb 15:15: [(none)]> select name , uid from db3.user where uid = 1 or uid = 0 and name = "root" ; +------+------+ | name | uid | +------+------+ | root | 0 | | bin | 1 | +------+------+ 2 rows in set (0.00 sec) root@mysqldb 15:15: [(none)]> root@mysqldb 15:16: [(none)]> root@mysqldb 15:16: [(none)]> select name , uid from db3.user where ( uid = 1 or uid = 0 ) and name = "root"; +------+------+ | name | uid | +------+------+ | root | 0 | +------+------+ 1 row in set (0.00 sec) ``` 通配符 _ % ```sql root@mysqldb 15:16: [(none)]> select name from db3.user where name like '___'; +------+ | name | +------+ | bin | | adm | | ftp | +------+ 3 rows in set (0.00 sec) root@mysqldb 15:29: [(none)]> select name from db3.user where name like '____'; +------+ | name | +------+ | root | | sync | | halt | | mail | | dbus | | sshd | +------+ 6 rows in set (0.00 sec) root@mysqldb 15:29: [(none)]> select name from db3.user where name like '%a%'; +----------+ | name | +----------+ | daemon | | adm | | halt | | mail | | operator | | games | +----------+ 6 rows in set (0.00 sec) root@mysqldb 15:29: [(none)]> select name from db3.user where name like 'a%'; +------+ | name | +------+ | adm | +------+ 1 row in set (0.00 sec) root@mysqldb 15:29: [(none)]> select name from db3.user where name like '___%___'; +-----------------+ | name | +-----------------+ | daemon | | shutdown | | operator | | nobody | | systemd-network | | polkitd | | postfix | | chrony | +-----------------+ 8 rows in set (0.00 sec) ``` 正则匹配 regexp where 字段名 regexp '正则表达式' \^ $ . \* \[\] \| ^:匹配字符串的开头 $:匹配字符串的结尾 .:匹配任意字符(除了换行符) *:匹配前面的字符零次或多次 []:匹配方括号中的任意一个字符 |:表示"或"的关系,匹配多个选项中的一个 ```sql root@mysqldb 15:29: [(none)]> insert into db3.user(name) values ("yaya9"),("y7aya"),("ya6ya"),("3yaya"); Query OK, 4 rows affected (0.00 sec) Records: 4 Duplicates: 0 Warnings: 0 root@mysqldb 15:31: [(none)]> select name from db3.user where name regexp '[0-9]'; +-------+ | name | +-------+ | yaya9 | | y7aya | | ya6ya | | 3yaya | +-------+ 4 rows in set (0.00 sec) root@mysqldb 15:31: [(none)]> select name from db3.user where name regexp '^[0-9]'; +-------+ | name | +-------+ | 3yaya | +-------+ 1 row in set (0.00 sec) root@mysqldb 15:31: [(none)]> select name , uid from db3.user where uid regexp '..' ; +-----------------+------+ | name | uid | +-----------------+------+ | operator | 11 | | games | 12 | | ftp | 14 | | nobody | 99 | | systemd-network | 192 | | dbus | 81 | | polkitd | 999 | | sshd | 74 | | postfix | 89 | | chrony | 998 | | mysql | 1000 | +-----------------+------+ 11 rows in set (0.00 sec) root@mysqldb 15:31: [(none)]> select name , uid from db3.user where uid regexp '^..$' ; +----------+------+ | name | uid | +----------+------+ | operator | 11 | | games | 12 | | ftp | 14 | | nobody | 99 | | dbus | 81 | | sshd | 74 | | postfix | 89 | +----------+------+ 7 rows in set (0.00 sec) root@mysqldb 15:31: [(none)]> select name , uid from db3.user where name regexp '^a.*t$' ; Empty set (0.00 sec) root@mysqldb 15:32: [(none)]> select name , uid from db3.user where name regexp '^r|t$' ; +------+------+ | name | uid | +------+------+ | root | 0 | | halt | 7 | +------+------+ 2 rows in set (0.00 sec) ``` ±\*/% ```sql root@mysqldb 15:36: [(none)]> update db3.user set uid=uid+1 where id <= 5; Query OK, 5 rows affected (0.00 sec) Rows matched: 5 Changed: 5 Warnings: 0 root@mysqldb 15:38: [(none)]> update db3.user set uid=uid-1 where id <= 5; Query OK, 5 rows affected (0.00 sec) Rows matched: 5 Changed: 5 Warnings: 0 root@mysqldb 15:38: [(none)]> alter table db3.user add age tinyint unsigned not null default 19 after name ; Query OK, 0 rows affected (0.05 sec) Records: 0 Duplicates: 0 Warnings: 0 root@mysqldb 15:38: [(none)]> select name , 2020 - age s_year from db3.user where name = "root" ; +------+--------+ | name | s_year | +------+--------+ | root | 2001 | +------+--------+ 1 row in set (0.00 sec) root@mysqldb 15:38: [(none)]> select name , 2020 - age s_year from db3.user ; +-----------------+--------+ | name | s_year | +-----------------+--------+ | root | 2001 | | bin | 2001 | | daemon | 2001 | | adm | 2001 | | lp | 2001 | | sync | 2001 | | shutdown | 2001 | | halt | 2001 | | mail | 2001 | | operator | 2001 | | games | 2001 | | ftp | 2001 | | nobody | 2001 | | systemd-network | 2001 | | dbus | 2001 | | polkitd | 2001 | | sshd | 2001 | | postfix | 2001 | | chrony | 2001 | | mysql | 2001 | | yaya9 | 2001 | | y7aya | 2001 | | ya6ya | 2001 | | 3yaya | 2001 | +-----------------+--------+ 24 rows in set (0.00 sec) root@mysqldb 15:38: [(none)]> select name,uid,gid ,(uid+gid)/2 pjf from db3.user where name="games"; +-------+------+------+---------+ | name | uid | gid | pjf | +-------+------+------+---------+ | games | 12 | 100 | 56.0000 | +-------+------+------+---------+ 1 row in set (0.00 sec) root@mysqldb 15:39: [(none)]> select * from db3.user where id % 2 = 0 ; +----+-----------------+-----+----------+------+------+---------+--------------------+---------------+ | id | name | age | password | uid | gid | comment | homedir | shell | +----+-----------------+-----+----------+------+------+---------+--------------------+---------------+ | 2 | bin | 19 | A | 1 | 1 | student | /bin | /sbin/nologin | | 4 | adm | 19 | A | 3 | 4 | student | /var/adm | /sbin/nologin | | 6 | sync | 19 | A | 5 | 0 | student | /sbin | /bin/sync | | 8 | halt | 19 | A | 7 | 0 | student | /sbin | /sbin/halt | | 10 | operator | 19 | A | 11 | 0 | student | /root | /sbin/nologin | | 12 | ftp | 19 | A | 14 | 50 | student | /var/ftp | /sbin/nologin | | 14 | systemd-network | 19 | A | 192 | 192 | student | / | /sbin/nologin | | 16 | polkitd | 19 | A | 999 | 998 | student | / | /sbin/nologin | | 18 | postfix | 19 | A | 89 | 89 | student | /var/spool/postfix | /sbin/nologin | | 20 | mysql | 19 | A | 1000 | 1000 | student | /home/mysql | /sbin/nologin | | 26 | y7aya | 19 | NULL | NULL | NULL | NULL | NULL | NULL | | 28 | 3yaya | 19 | NULL | NULL | NULL | NULL | NULL | NULL | +----+-----------------+-----+----------+------+------+---------+--------------------+---------------+ 12 rows in set (0.00 sec) root@mysqldb 15:39: [(none)]> select name , uid from db3.user where uid % 2 != 0 ; +----------+------+ | name | uid | +----------+------+ | bin | 1 | | adm | 3 | | sync | 5 | | halt | 7 | | operator | 11 | | nobody | 99 | | dbus | 81 | | polkitd | 999 | | postfix | 89 | +----------+------+ 9 rows in set (0.00 sec) ``` 聚集函数 求和 sum(字段名) 求平均数 avg(字段名) 最大值 max(字段名) 最小值 min(字段名) 个数 count(字段名) ```sql root@mysqldb 15:39: [(none)]> select max(uid) from db3.user ; +----------+ | max(uid) | +----------+ | 1000 | +----------+ 1 row in set (0.00 sec) root@mysqldb 15:41: [(none)]> select max(uid) from db3.user where id <= 10; +----------+ | max(uid) | +----------+ | 11 | +----------+ 1 row in set (0.00 sec) root@mysqldb 15:41: [(none)]> select min(uid) from db3.user where id <= 10; +----------+ | min(uid) | +----------+ | 0 | +----------+ 1 row in set (0.00 sec) root@mysqldb 15:41: [(none)]> select avg(uid) from db3.user; +----------+ | avg(uid) | +----------+ | 180.2500 | +----------+ 1 row in set (0.00 sec) root@mysqldb 15:41: [(none)]> select count(name) from db3.user where shell!="/bin/bash"; +-------------+ | count(name) | +-------------+ | 19 | +-------------+ 1 row in set (0.00 sec) root@mysqldb 15:41: [(none)]> select count(*) from db3.user; +----------+ | count(*) | +----------+ | 24 | +----------+ 1 row in set (0.00 sec) root@mysqldb 15:41: [(none)]> select min(uid) , max(gid) from db3.user; +----------+----------+ | min(uid) | max(gid) | +----------+----------+ | 0 | 1000 | +----------+----------+ 1 row in set (0.00 sec) root@mysqldb 15:41: [(none)]> select min(uid) zx , max(gid) zd from db3.user; +------+------+ | zx | zd | +------+------+ | 0 | 1000 | +------+------+ 1 row in set (0.00 sec) ``` 查询结果 排序 order by 字段名 asc\|desc ```sql root@mysqldb 15:41: [(none)]> select name , uid from db3.user where uid >=10 and uid <= 800 -> order by uid asc; +-----------------+------+ | name | uid | +-----------------+------+ | operator | 11 | | games | 12 | | ftp | 14 | | sshd | 74 | | dbus | 81 | | postfix | 89 | | nobody | 99 | | systemd-network | 192 | +-----------------+------+ 8 rows in set (0.00 sec) root@mysqldb 15:42: [(none)]> select name , uid from db3.user where uid >=10 and uid <= 800 -> order by uid desc; +-----------------+------+ | name | uid | +-----------------+------+ | systemd-network | 192 | | nobody | 99 | | postfix | 89 | | dbus | 81 | | sshd | 74 | | ftp | 14 | | games | 12 | | operator | 11 | +-----------------+------+ 8 rows in set (0.00 sec) ``` 查询结果分组 group by 字段名 root@mysqldb 15:43: [(none)]> select shell from db3.user where uid >= 10 group by shell; +---------------+ | shell | +---------------+ | /sbin/nologin | +---------------+ 1 row in set (0.00 sec) root@mysqldb 15:43: [(none)]> select shell from db3.user group by shell; +----------------+ | shell | +----------------+ | NULL | | /bin/bash | | /bin/sync | | /sbin/halt | | /sbin/nologin | | /sbin/shutdown | +----------------+ 6 rows in set (0.00 sec) distinct 去重显示 ```sql root@mysqldb 15:43: [(none)]> select shell from db3.user; +----------------+ | shell | +----------------+ | /bin/bash | | /sbin/nologin | | /sbin/nologin | | /sbin/nologin | | /sbin/nologin | | /bin/sync | | /sbin/shutdown | | /sbin/halt | | /sbin/nologin | | /sbin/nologin | | /sbin/nologin | | /sbin/nologin | | /sbin/nologin | | /sbin/nologin | | /sbin/nologin | | /sbin/nologin | | /sbin/nologin | | /sbin/nologin | | /sbin/nologin | | /sbin/nologin | | NULL | | NULL | | NULL | | NULL | +----------------+ 24 rows in set (0.00 sec) root@mysqldb 15:44: [(none)]> select distinct shell from db3.user ; +----------------+ | shell | +----------------+ | /bin/bash | | /sbin/nologin | | /bin/sync | | /sbin/shutdown | | /sbin/halt | | NULL | +----------------+ 6 rows in set (0.00 sec) root@mysqldb 15:44: [(none)]> select distinct gid from db3.user; +------+ | gid | +------+ | 0 | | 1 | | 2 | | 4 | | 7 | | 12 | | 100 | | 50 | | 99 | | 192 | | 81 | | 998 | | 74 | | 89 | | 996 | | 1000 | | NULL | +------+ 17 rows in set (0.00 sec) ``` 过滤查询结果 having 条件 ```sql root@mysqldb 15:44: [(none)]> select name from db3.user where shell != "/bin/bash" having name in ("sync","games"); +-------+ | name | +-------+ | sync | | games | +-------+ 2 rows in set (0.00 sec) root@mysqldb 15:45: [(none)]> select id , name from db3.user where id >= 10 having name is null ; Empty set (0.00 sec) root@mysqldb 15:45: [(none)]> select id , name from db3.user where id >= 10 and name is null ; Empty set (0.00 sec) ``` 限制查询结果显示行数 limit ```sql root@mysqldb 15:46: [(none)]> select name , uid , gid from db3.user where shell != "/bin/bash" limit 1; +------+------+------+ | name | uid | gid | +------+------+------+ | bin | 1 | 1 | +------+------+------+ 1 row in set (0.00 sec) root@mysqldb 15:46: [(none)]> select name , uid , gid from db3.user where shell != "/bin/bash" limit 3; +--------+------+------+ | name | uid | gid | +--------+------+------+ | bin | 1 | 1 | | daemon | 2 | 2 | | adm | 3 | 4 | +--------+------+------+ 3 rows in set (0.00 sec) ```