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="root";
+------+
| name |
+------+
| root |
+------+
1 row in set (0.00 sec)
mysql> select name from db3.user where shell!="/bin/bash";
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("root","bin","adm");
+----+------+----------+------+------+---------+----------+---------------+
|> +----+------+----------+------+------+---------+----------+---------------+
|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="jin"oruid=100orshell="/bin/bash";
+----+-------+----------+------+------+-----------------+-------------+-----------+
|> +----+-------+----------+------+------+-----------------+-------------+-----------+
|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="root"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="root"; 查看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="sync";
+------+------+------+--------+
| 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="/bin/bash"; ##查看name的个数,条件为shell字段为"/bin/bash"
+-------------+
| 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("8yaya"),("ya6ya"),("yaya4"),("YayA"),("TOM");
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字段=值,字段="值"where 条件;
批量修改
update库.表set字段=值,字段="值";
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="root";
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="localhost");
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]