/*************************************by
garcon1986*****************************************************/
多表查询:
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)
分享到:
相关推荐
是在vs中查询和插入MySQL语句如果表没有建立关系可以参考看看
mysql创建表向表中插入数据实例。很容易很容易懂的
pymysql+mysql通过读取临时表数据更新或插入主表,原创手写已测可运行效果好。
使用MySQL可视化工具Navicat导出MySQL的表结构脚本的方法。 1、右键Navicat中的数据库→数据传输(Data Transfer)。 2、左边数据库对象(Database Objects)中选择对应的表,右边目标(Target)中选择文件(File)...
查询数据是指从数据库中的数据表或视图中获取所需要的数据,在mysql中,可以使用SELECT语句来查询数据。根据查询条件的不同,数据库系统会找到不同的数据。 SELECT语句的基本语法格式如下: [sql] view plain copy ...
MySQL数据库的创建、查看、删除、使用命令。 表结构创建和修改、表约束的创建和修改; 表数据的插入、删除和修改; 表联系的创建和修改。
其实我在插入1000万条数据的时候遇到了一些问题,现在先来解决他们,一开始我插入100万条数据时候报错,控制台的信息如下: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (4232009 > ...
XXXKETTLE全量多表数据同步 1 一. 建立资料库 3 1.1 添加资源库 3 二. 前期准备工作 7 2.1 异结构数据传输 7 2.2 数据校验 9 三. 建立转换 10 3.1 创建‘转换’(GET—ORACLE-TABLES) 10 3.1.1 创建数据源 10 3.1.2...
mysql 批量插入测试数据 ,可判断条件插入数据,随心所遇插入,do where 循环
数据表的插入、更新、删除非常简单,但是简单的也要学习,细节决定成败。数据表的插入、更新、删除非常简单,但是简单的也要学习,细节决定成败。数据表的插入、更新、删除非常简单,但是简单的也要学习,细节决定...
Mysql练习3:为学生表、科目表、成绩表添加数据.zip
MySQL创建存储过程批量插入10万条数据 存储过程 1、首先防止主键冲突,我们清空表。 TRUNCATE table A_student; 2、编写存储过程 delimiter ‘$’; CREATE PROCEDURE batchInsert(in args int) BEGIN declare i int ...
MySQL 插入数据 MySQL 查询数据 MySQL WHERE 子句 MySQL UPDATE 更新 MySQL DELETE 语句 MySQL LIKE 子句 MySQL UNION MySQL 排序 MySQL 分组 MySQL 连接的使用 MySQL NULL 值处理 MySQL 正则表达式 MySQL 事务 ...
MySQL语句,创建数据库、创建表、查询、插入、修改等
在centos6.5的32位系统下,通过c连接mysql数据库,必须要通过command.txt里面的命令来执行query,insert,delete ,只需要修改文件名就可以了,肯定是可以运行的。
9.1.1 用于数据和排序的字符集 9.1.2 增加一个新的字符集 9.1.3 多字节字符支持 9.2 更新日志 9.3 MySQL数据库表可以有多大? 9.4 MySQL数据库表类型 10 从 MySQL 得到最大的性能 ...
mysql 如何把查询到的结果插入到 另一个表中 创建表 CREATE TABLE tests ( id int(11) NOT NULL AUTO_INCREMENT COMMENT ‘主键’, name varchar(128) DEFAULT NULL COMMENT ‘姓名’, age int(11) DEFAULT NULL ...
中国省市区城市列表mysql数据表,可直接导入数据库、可转JSON数据,带行政区划码和经纬度
海关行邮税表,sql导入,我一行一行的写的。
在存储过程中,根据一张主表去创建一张副表。 在根据需要限制的时间,查询主表里面的数据。将主表的数据插入到新建的副表里面同时将主表的数据删除,使用事物进行控制操作的过程