MySQL多表查询实现分析
mysql 实现 查询 分析 多表
2023-06-13 09:14:29 时间
我们继续使用前面的例子。前面建立的表中包含了员工的一些基本信息,如姓名、性别、出生日期、出生地。我们再创建一个表,该表用于描述员工所发表的文章,内容包括作者姓名、文章标题、发表日期。
1、查看第一个表mytable的内容:
mysql>select*frommytable;
+----------+------+------------+-----------+
|name|sex|birth|birthaddr|
+----------+------+------------+-----------+
|abccs|f|1977-07-07|china|
|mary|f|1978-12-12|usa|
|tom|m|1970-09-02|usa|
+----------+------+------------+-----------+
2、创建第二个表title(包括作者、文章标题、发表日期):
mysql>createtabletitle(writervarchar(20)notnull,
->titlevarchar(40)notnull,
->senddatedate);
向该表中填加记录,最后表的内容如下:
<ccid_nobr>
<tablewidth="400"border="1"cellspacing="0"cellpadding="2"
bordercolorlight="black"bordercolordark="#FFFFFF"align="center">
<tr>
<tdbgcolor="e6e6e6""font-size:9pt">
<pre><ccid_code>mysql>select*fromtitle;
+--------+-------+------------+
|writer|title|senddate|
+--------+-------+------------+
|abccs|a1|2000-01-23|
|mary|b1|1998-03-21|
|abccs|a2|2000-12-04|
|tom|c1|1992-05-16|
|tom|c2|1999-12-12|
+--------+-------+------------+
5rowsinset(0.00sec)
3、多表查询
现在我们有了两个表:mytable和title。利用这两个表我们可以进行组合查询:
上面例子中,由于作者姓名、性别、文章记录在两个不同表内,因此必须使用组合来进行查询。必须要指定一个表中的记录如何与其它表中的记录进行匹配。
注意:如果第二个表title中的writer列也取名为name(与mytable表中的name列相同)而不是writer时,就必须用mytable.name和title.name表示,以示区别。
再举一个例子,用于查询文章a2的作者、出生地和出生日期:
mysql>selecttitle,writer,birthaddr,birthfrommytable,title
->wheremytable.name=title.writerandtitle=′a2′;
+-------+--------+-----------+------------+
|title|writer|birthaddr|birth|
+-------+--------+-----------+------------+
|a2|abccs|china|1977-07-07|
+-------+--------+-----------+------------+
修改和备份、批处理
有时我们要对数据库表和数据库进行修改和删除,可以用如下方法实现:
1、增加一列:
如在前面例子中的mytable表中增加一列表示是否单身single:
mysql>altertablemytableaddcolumnsinglechar(1);
2、修改记录
将abccs的single记录修改为“y”:
mysql>updatemytablesetsingle=′y′wherename=′abccs′;现在来看看发生了什么:
mysql>select*frommytable;
+----------+------+------------+-----------+--------+
|name|sex|birth|birthaddr|single|
+----------+------+------------+-----------+--------+
|abccs|f|1977-07-07|china|y|
|mary|f|1978-12-12|usa|NULL|
|tom|m|1970-09-02|usa|NULL|
+----------+------+------------+-----------+--------+
3、增加记录
前面已经讲过如何增加一条记录,为便于查看,重复与此:
mysql>insertintomytable
->values(′abc′,′f′,′1966-08-17′,′china′,′n′);
QueryOK,1rowaffected(0.05sec)
查看一下:
mysql>select*frommytable;
+----------+------+------------+-----------+--------+
|name|sex|birth|birthaddr|single|
+----------+------+------------+-----------+--------+
|abccs|f|1977-07-07|china|y|
|mary|f|1978-12-12|usa|NULL|
|tom|m|1970-09-02|usa|NULL|
|abc|f|1966-08-17|china|n|
+----------+------+------------+-----------+--------+
4、删除记录
用如下命令删除表中的一条记录:mysql>deletefrommytablewherename=′abc′;
DELETE从表中删除满足由where给出的条件的一条记录。再显示一下结果:
mysql>select*frommytable;
+----------+------+------------+-----------+--------+
|name|sex|birth|birthaddr|single|
+----------+------+------------+-----------+--------+
|abccs|f|1977-07-07|china|y|
|mary|f|1978-12-12|usa|NULL|
|tom|m|1970-09-02|usa|NULL|
+----------+------+------------+-----------+--------+
5、删除表:
mysql>droptable****(表1的名字),***表2的名字;可以删除一个或多个表,小心使用。
6、数据库的删除:
mysql>dropdatabase数据库名;小心使用。
7、数据库的备份:
退回到DOS:
mysql>quit
d:\mysqlbin
使用如下命令对数据库abccs进行备份:
mysqldump--optabccs>abccs.dbb
abccs.dbb就是你的数据库abccs的备份文件。
8、用批处理方式使用MySQL:
首先建立一个批处理文件mytest.sql,内容如下:
useabccs;
select*frommytable;
selectname,sexfrommytablewherename=′abccs′;
在DOS下运行如下命令:d:mysqlbinmysql<mytest.sql
在屏幕上会显示执行结果。
如果想看结果,而输出结果很多,则可以用这样的命令:mysql<mytest.sql|more
我们还可以将结果输出到一个文件中:mysql<mytest.sql>mytest.out
1、查看第一个表mytable的内容:
mysql>select*frommytable;
+----------+------+------------+-----------+
|name|sex|birth|birthaddr|
+----------+------+------------+-----------+
|abccs|f|1977-07-07|china|
|mary|f|1978-12-12|usa|
|tom|m|1970-09-02|usa|
+----------+------+------------+-----------+
2、创建第二个表title(包括作者、文章标题、发表日期):
mysql>createtabletitle(writervarchar(20)notnull,
->titlevarchar(40)notnull,
->senddatedate);
向该表中填加记录,最后表的内容如下:
<ccid_nobr>
<tablewidth="400"border="1"cellspacing="0"cellpadding="2"
bordercolorlight="black"bordercolordark="#FFFFFF"align="center">
<tr>
<tdbgcolor="e6e6e6""font-size:9pt">
<pre><ccid_code>mysql>select*fromtitle;
+--------+-------+------------+
|writer|title|senddate|
+--------+-------+------------+
|abccs|a1|2000-01-23|
|mary|b1|1998-03-21|
|abccs|a2|2000-12-04|
|tom|c1|1992-05-16|
|tom|c2|1999-12-12|
+--------+-------+------------+
5rowsinset(0.00sec)
3、多表查询
现在我们有了两个表:mytable和title。利用这两个表我们可以进行组合查询:
上面例子中,由于作者姓名、性别、文章记录在两个不同表内,因此必须使用组合来进行查询。必须要指定一个表中的记录如何与其它表中的记录进行匹配。
注意:如果第二个表title中的writer列也取名为name(与mytable表中的name列相同)而不是writer时,就必须用mytable.name和title.name表示,以示区别。
再举一个例子,用于查询文章a2的作者、出生地和出生日期:
mysql>selecttitle,writer,birthaddr,birthfrommytable,title
->wheremytable.name=title.writerandtitle=′a2′;
+-------+--------+-----------+------------+
|title|writer|birthaddr|birth|
+-------+--------+-----------+------------+
|a2|abccs|china|1977-07-07|
+-------+--------+-----------+------------+
修改和备份、批处理
有时我们要对数据库表和数据库进行修改和删除,可以用如下方法实现:
1、增加一列:
如在前面例子中的mytable表中增加一列表示是否单身single:
mysql>altertablemytableaddcolumnsinglechar(1);
2、修改记录
将abccs的single记录修改为“y”:
mysql>updatemytablesetsingle=′y′wherename=′abccs′;现在来看看发生了什么:
mysql>select*frommytable;
+----------+------+------------+-----------+--------+
|name|sex|birth|birthaddr|single|
+----------+------+------------+-----------+--------+
|abccs|f|1977-07-07|china|y|
|mary|f|1978-12-12|usa|NULL|
|tom|m|1970-09-02|usa|NULL|
+----------+------+------------+-----------+--------+
3、增加记录
前面已经讲过如何增加一条记录,为便于查看,重复与此:
mysql>insertintomytable
->values(′abc′,′f′,′1966-08-17′,′china′,′n′);
QueryOK,1rowaffected(0.05sec)
查看一下:
mysql>select*frommytable;
+----------+------+------------+-----------+--------+
|name|sex|birth|birthaddr|single|
+----------+------+------------+-----------+--------+
|abccs|f|1977-07-07|china|y|
|mary|f|1978-12-12|usa|NULL|
|tom|m|1970-09-02|usa|NULL|
|abc|f|1966-08-17|china|n|
+----------+------+------------+-----------+--------+
4、删除记录
用如下命令删除表中的一条记录:mysql>deletefrommytablewherename=′abc′;
DELETE从表中删除满足由where给出的条件的一条记录。再显示一下结果:
mysql>select*frommytable;
+----------+------+------------+-----------+--------+
|name|sex|birth|birthaddr|single|
+----------+------+------------+-----------+--------+
|abccs|f|1977-07-07|china|y|
|mary|f|1978-12-12|usa|NULL|
|tom|m|1970-09-02|usa|NULL|
+----------+------+------------+-----------+--------+
5、删除表:
mysql>droptable****(表1的名字),***表2的名字;可以删除一个或多个表,小心使用。
6、数据库的删除:
mysql>dropdatabase数据库名;小心使用。
7、数据库的备份:
退回到DOS:
mysql>quit
d:\mysqlbin
使用如下命令对数据库abccs进行备份:
mysqldump--optabccs>abccs.dbb
abccs.dbb就是你的数据库abccs的备份文件。
8、用批处理方式使用MySQL:
首先建立一个批处理文件mytest.sql,内容如下:
useabccs;
select*frommytable;
selectname,sexfrommytablewherename=′abccs′;
在DOS下运行如下命令:d:mysqlbinmysql<mytest.sql
在屏幕上会显示执行结果。
如果想看结果,而输出结果很多,则可以用这样的命令:mysql<mytest.sql|more
我们还可以将结果输出到一个文件中:mysql<mytest.sql>mytest.out
相关文章
- MySQL中字符串拼接的实现方法(mysql中字符串的拼接)
- MySQL数据库恢复:一款轻松解决方案(mysql数据库恢复软件)
- MySQL实现汉字转拼音功能(mysql汉字转拼音)
- MySQL查询:查看是否存在记录(mysql查询是否存在)
- PHP与MySQL结合,完美测试成功(phpmysql测试)
- MySQL查询:如何查询指定年龄的人?(mysql查询年龄)
- MySQL表结构修改指南(修改mysql表)
- MySQL时间函数:提高数据库效率(mysql数据库时间函数)
- MySQL编码修改:使用命令实现(命令修改mysql编码)
- MySQL数据导出Excel快速教程(mysql转excel)
- MySQL中的二进制数据存储实践(mysql二进制数据)
- MySQL实现主从复制的步骤详解(mysql主从步骤)
- MySQL表使用别名简化查询语句(mysql表别名)
- Mysql日期查询:如何筛选大于指定日期的数据(mysql日期大于)
- 锁定MySQL表—存储过程实现(mysql存储过程锁表)
- 快速搭建Qt环境中的MySQL数据库(qt配置mysql数据库)
- 保证数据完整性,MySQL唯一值的作用与实现方法(mysql唯一值)
- MySQL联合查询指南:教您如何使用联合查询优化数据库检索(mysql数据库联合查询)
- MySQL普通日志:了解数据库访问记录(mysql的普通日志)
- 如何实现终端与MySQL的连接?(终端连接mysql)
- MySQL与MSSQL数据库查询对比(mysql查询mssql)
- MySQL中的删除表格数据方法(mysql删除表格数据)
- MySQL中使用LEFT函数截取字符串(mysql中left())
- 如何利用MySQL查询获取记录的数量(mysql个数查询)
- Arming MySQL在ARM上释放MySQL的发展性能(arm 版本mysql)
- 使用MySQL创建千万条数据实现高效数据存储和查询(mysql中创建千万数据)
- 实现数据库高可用MySQL一主两从的目的(mysql一主两从目的)
- 无缝移植数据MySQL实现不停机迁移方案分享(mysql不停机数据迁移)
- MySQL上下级查询如何查询父级和子级数据(mysql 上下级查询)
- MySQL中,不能在DELETE语句以及子查询中使用别名作为表名前缀(mysql不能使用别名)
- Mysql连接问题,解决方法不容错过(mysql不然我连接)
- MySQL使用SELECT 查询语句,不指定列名(mysql不指定列名查询)
- mysql如果数据不存在,则插入新数据,否则更新的实现方法