`

Mysql多表查询,多表插入和多表更新

阅读更多
多表查询:
CREATE TABLE IF NOT EXISTS contact(
contact_id int(11) NOT NULL AUTO_INCREMENT,
user_name varchar(255),
nom varchar(255),
prenom varchar(255),
mail varchar(64),
passcode char(64),
PRIMARY KEY(contact_id)
);
CREATE TABLE IF NOT EXISTS droit(
droit_id int( 11 ) NOT NULL AUTO_INCREMENT ,
droit varchar(255),
PRIMARY KEY(droit_id)
);
CREATE TABLE IF NOT EXISTS contactdroit(
contactdroit_id int(11) NOT NULL AUTO_INCREMENT,
contact_id int( 11 ),
droit_id int( 11 ),
PRIMARY KEY( contactdroit_id )
);
Insert into contact(contact_id, user_name) values(1,'user1');
Insert into contact(contact_id, user_name) values(2,'user2');
Insert into contact(contact_id, user_name) values(3,'user3');
Insert into droit(droit_id, droit) values(1,'admin');
Insert into droit(droit_id, droit) values(2,'superuser');
Insert into contactdroit(contact_id, droit_id) values(1, 1);
Insert into contactdroit(contact_id, droit_id) values(2, 1);
Insert into contactdroit(contact_id, droit_id) values(3, 2);

SELECT c.contact_id, d.droit_id, d.droit FROM contact c, contactdroit cd, droit d
where c.contact_id = cd.contact_id
and cd.droit_id = d.droit_id;
结果:
contact_id     droit_id     droit
1                      1           admin
2                      1           admin
3                      2          superuser


多表联查例子:
两个方法都可以,inner join on 更好点。表结构没贴出来,但比较好懂了。
简单方法:

select c.nom, e.nom
from consultant c, affaire a, besoin b, salarie sa, site s, entreprise e
where c.consultant_id=a.consultant_id and a.besoin_id=b.besoin_id and b.salarie_id=sa.salarie_id and sa.site_id=s.site_id and s.entreprise_id=e.entreprise_id

inner join方法:

select c.nom, e.nom
from consultant c
inner join affaire a on c.consultant_id=a.consultant_id
inner join besoin b on a.besoin_id=b.besoin_id
inner join salarie sa on b.salarie_id=sa.salarie_id
inner join site s on sa.site_id=s.site_id
inner join entreprise e on s.entreprise_id=e.entreprise_id


多表插入:

<?php
$conn = mysql_connect("localhost","charles","charles");
mysql_select_db("test");
$query = "INSERT INTO contact(user_name,nom, prenom, mail, passcode) values('sa','se','sf', 'safd@p.com', '123')";
$result = mysql_query($query) or die("insert contact failed:".mysql_error());
$lastid = mysql_insert_id(); //得到上一个 插入的id值
echo "last insert id :".$lastid."<br>";
$query2 = "INSERT INTO contactdroit(contact_id, droit_id) values('$lastid','11')";
echo $query2."<br>";
$result2 = mysql_query($query2) or die("insert contactdroit failed: ".mysql_error());
if(isset($result) && isset($result2)){
echo "Good Insertion<br>";
echo $lastid;
}
?>
需注意的是:

The mysql_insert_id() function returns the AUTO_INCREMENT ID generated from the previous INSERT operation.
mysql_insert_id()函数的作用是:取得上一步 INSERT 操作产生的 ID。

This function returns 0 if the previous operation does not generate an AUTO_INCREMENT ID, or FALSE on MySQL connection failure.
如果先前的操作不产生一个自动增加的ID[AUTO_INCREMENT ID],那么,函数返回0;如果MySQL连接失败,将返回False。



多表更新:
update contact c, contactdroit cd
set c.user_name = '$username', c.nom = '$lastname', c.prenom = '$firstname', c.passcode = '$password', cd.droit_id = '$droitid'
where c.contact_id = '$id' and c.contact_id = cd.contact_id;
示例:
【以下为引用:http://www.javaeye.com/problems/340 】
mysql> create table one(id int(10), name varchar(20));
Query OK, 0 rows affected (0.03 sec)

mysql> create table two(id int(10), name varchar(20));
Query OK, 0 rows affected (0.05 sec)

mysql> insert one value(1, '1');
Query OK, 1 row affected (0.00 sec)

mysql> insert two value(22, '22');
Query OK, 1 row affected (1.02 sec)

mysql> update one o, two t set o.name='oo', t.name='tt';
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2  Changed: 2  Warnings: 0

mysql> select * from one;
+------+------+
| id   | name |
+------+------+
|    1 | oo   |
+------+------+
1 row in set (0.00 sec)

mysql> select * from two;
+------+------+
| id   | name |
+------+------+
|   22 | tt   |
+------+------+
1 row in set (0.00 sec)
分享到:
评论

相关推荐

    mysql多表联合查询的教程

    在本教程中,我们将学习 MySQL 中的多表联合查询,包括多表插入和多表更新的操作。多表联合查询是指从多个表中检索数据的操作,这种操作在实际应用中非常常见。 什么是多表联合查询 多表联合查询是指从多个表中...

    mysql多表联合查询.pdf

    在给定的文件中,我们可以看到有关MySQL多表联合查询的知识点。首先,文件包含了创建和操作MySQL数据库表的SQL语句,接着是使用INSERT语句向表中插入数据的示例,最后是一些使用PHP通过MySQL扩展连接数据库进行操作...

    mysql各种语句多表查询+ mysql视图 mysql数据库管理+ select语句+ 创建

    在数据库管理方面,除了基本的插入(INSERT)、更新(UPDATE)、删除(DELETE)操作,还需要了解索引的创建和管理,以优化查询性能。此外,事务处理是确保数据一致性和完整性的关键,它涉及COMMIT、ROLLBACK和...

    45-MySQL单表2000万数据查询慢解决方案1

    本文主要讨论了如何解决MySQL单表2000万数据查询慢的问题,通过将表分区和使用时间触发器来实现数据的优化。 分区设计 在解决方案中,我们使用的是按照8周将单表分为8个区,每周一都会将最早一周的分区Drop掉,然后...

    MySQL多表操作和备份处理

    在数据库管理中,多表操作是常见的...总之,MySQL 的多表操作涉及查询、插入、更新和删除,同时配合备份和恢复策略,确保数据的安全和一致性。理解和熟练掌握这些技能对于任何数据库管理员或开发者来说都是至关重要的。

    mysql临时表用法分析【查询结果可存在临时表中】

    总结,MySQL临时表提供了一种灵活的方式来存储和处理临时数据,它们在处理大量数据和复杂的查询逻辑时尤其有用。临时表可以帮助优化查询性能,特别是在需要多次处理相同数据集的情况下,避免了反复执行相同的查询。...

    MySQL查询插入语句

    根据提供的文件信息,我们可以归纳出以下几个...总结来说,通过分析这段代码,我们可以了解到MySQL中查询和插入的基本用法,以及如何利用这些技术来实现数据复制和更新。这对于日常的数据库管理和维护工作非常有帮助。

    Mybatis实现多表联合查询和批量插入

    Mybatis实现多表联合查询和批量插入 Mybatis是一款流行的持久层框架,它可以帮助开发者快速、高效地访问数据库。在实际开发中,经常需要对多个表进行联合查询,或者对大量数据进行批量插入。本文将详细介绍如何使用...

    mysql中插入多text类型问题

    Mysql 中插入多 text 类型问题解决方案 ...通过修改 MySQL 的配置文件和表的行格式,我们可以解决 MySQL 中插入多个 text 类型字段的问题。同时,我们也可以根据实际情况选择合适的行格式来存储数据。

    MySQL大表性能优化方案 和 MySQL高性能表设计规范

    1. **范式理论**:遵循第一范式(1NF)、第二范式(2NF)和第三范式(3NF),减少数据冗余,防止更新异常和插入异常。 2. **合理字段类型**:根据数据特性选择合适的数据类型,如使用TINYINT代替INT节省空间,使用...

    3 MySQL多表查询与事务的操作 让初学者自学的

    表与表之间有三种主要的关系:一对一、一对多和多对多。一对一关系意味着一个表的记录对应另一个表的单一记录,这通常通过添加唯一约束来实现。一对多关系是一个表的记录可以对应另一个表的多个记录,这通过主键和...

    全球主要国家数据表mysql

    SQL(结构化查询语言)是用于管理关系数据库的标准语言,包括创建、更新和查询数据。location.sql文件可能包含了创建数据库表的SQL语句,以及可能的数据插入语句,用于一次性导入所有国家的数据到MySQL数据库中。...

    [数据库] Navicat for MySQL换种思维解决插入同时更新数据1

    1. **存储过程**:可以考虑使用存储过程代替触发器,将插入和更新的逻辑封装在一个可调用的数据库函数中。这种方式使得逻辑更易于管理和测试,而且可以控制执行的时机。 2. **应用程序端处理**:在应用层(如Python...

    mysql数据库实验报告 数据表的操作

    通过实际操作,我们将掌握如何创建和修改表结构,设置表约束,以及处理表数据的插入、删除和修改。此外,还将学习如何建立表之间的联系,这对于构建复杂的数据库系统至关重要。 一、数据库操作 1. 创建数据库:使用...

    pymysql通过读取mysql临时表数据更新或插入主表

    pymysql+mysql通过读取临时表数据更新或插入主表,原创手写已测可运行效果好。

    Mysql练习3:为学生表、科目表、成绩表添加数据.zip

    通过这个MySQL练习,你可以掌握如何管理和维护数据库中的基本数据操作,包括插入数据、建立表间关系以及保证数据一致性。这些技能对于成为合格的数据库管理员或开发者至关重要。记得在实践中不断探索和优化你的SQL...

    88秒插入1000万条数据到MySQL数据库表的操作方法

    其实我在插入1000万条数据的时候遇到了一些问题,现在先来解决他们,一开始我插入100万条数据时候报错,控制台的信息如下: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (4232009 &gt; ...

    Navicat for MySQL导出表结构脚本的简单方法

    使用MySQL可视化工具Navicat导出MySQL的表结构脚本的方法。 1、右键Navicat中的数据库→数据传输(Data Transfer)。 2、左边数据库对象(Database Objects)中选择对应的表,右边目标(Target)中选择文件(File)...

    mysql创建表向表中插入数据实例

    在MySQL数据库管理中,创建表和向表中插入数据是基本操作,对于初学者和专业开发者来说都是必不可少的技能。以下我们将详细讲解这些知识点,并通过给出的实例进行演示。 首先,我们创建一个名为`teacher`的表。创建...

    excel表转换为mysql数据库

    MySQL是一种关系型数据库管理系统(RDBMS),它使用SQL语言进行数据查询、更新和管理。MySQL支持创建多个数据库,每个数据库包含一个或多个表,表由行和列构成,与Excel工作表类似,但具有更强大的数据结构和事务...

Global site tag (gtag.js) - Google Analytics