数据库联合查询

一,union联合  合并:将多条查询语句的结果合并成一个结果。

语法就是

查询语句一

union

查询语句二

引入的案例:查询部门编号大于九十,或者邮箱包含a的员工信息

select * from emp where deptno>90 or email like"%a%";

select * from emp where deptno>90

union

select * from emp where  email like"%a%";

应用场景:

案例二:查询中国用户男性的用户信息,以及外国用户男性的信息。

将两个查询语句结合就行了

select  * from  t_ca  where  sex=“男”

union

select * from t_u where tGender='male'

要查询的数据来自不同的多个表,且这多个表都没有直接的关系。但查询的信息是一样的,就使用联合查询。

特点:要求查询的列数必须是一样的

要求查询的顺序和列数是一致的

union  会进行去重。  使用  union  all  可以避免去重。

插入语句的方式一

DML语言:数据操作语言:插入,修改,删除

insert  update,delete

语法:往表中添加数据,属性名,属性值,表名,

insert into 表名(列名,....)values (值,值,值,值);

(1)要求插入的值得类型要与列的值类型一致或者兼容。

(2)不可以为null的列必须插入值,可以为null的列是如何插入值呢?

直接不写。

(3)列的顺序是否可以进行调换,不过属性值要与列一一对应。

(4)列的个数,必须要与值的个数一致。

(5)可以省略列名,默认是所有列,而且顺序与表顺序是一致的。

第二种方法:

语法:

insert into  表名

set  列名=值,列名=值、、、

两大方式的优点:方式一支持插入多行。insert into 表名  (列名 )values(),()

方式二不支持

方式一支持查询,方式二不支持查询。

insert into emp (id,name,phone)

select 26,‘宋茜’,‘11998091’;先查询,再将结果集插入到表中。

修改语句

修改单表中的记录,

修改多表中的记录。

update  表名  set  列名=新值(类型一致或者兼容)列=新值

where 筛选条件;

案例一:修改单表中的记录

update beauty set phone=‘11111111111’

where name like '唐%;

sq92语法:update 表一 别名,表二 别名

set 列=值

where  连接条件

and  筛选条件

sql99语法:

update 表一 别名,

inner/left/    join  表二 别名

on 连接条件

set 列=值

where  筛选条件

修改多表的记录

案例一:修改张无忌的女朋友手机号为12194192094;

先连接上两个表

update boy

inner join girl

on boid=grilid

set  num ='123214152'

where  name=‘张无忌’

删除语句

方式一:delete 语法: delete from 表名  where 筛选条件

实现单表删除,多表删除

方式二:truncate

语法truncate table 表名

方式一,单表的删除:删除手机号以9结尾的女神信息

delete from emp where phone like‘%9’;

删除黄晓明的信息以及他女朋友的信息

delete  b,bo

from beauty b

inner join boys bo on b.boyfriend_id=bo_id

where bo.boyname='黄晓明'

删除方式二:truncate语句

案例:将魅力值大于一百的男神信息删除(不可以加where)清空数据,一删全删。

truncate table boys

两者的区别:delete 可以加where 条件,truncate 不能加

2,truncate 删除,效率高一点点

3,假如要删除的表中有自增长列,如果用delete删除后,再插入数据,自增长列的值要从断点开始,而truncate删除后,再插入数据,自增长的值要从1开始。

若不理解,可自行实验

4,truncate不能够回滚事务,delete可以回滚事务。

在 ThinkPHP 中进行多个数据库联合查询可以使用以下步骤: 1. 在数据库配置文件中添加数据库配置信息 在 `database.php` 文件中添加需要联合查询的多个数据库的配置信息,例如: ```php return [ // 默认数据库连接配置 'default' => [ // ... ], // 数据库连接配置 1 'db1' => [ 'type' => 'mysql', 'hostname' => 'localhost', 'database' => 'database1', 'username' => 'root', 'password' => 'root', 'hostport' => '', 'charset' => 'utf8mb4', 'prefix' => '', 'debug' => true, 'deploy' => 0, 'rw_separate' => false, 'master_num' => 1, 'slave_no' => '', 'fields_strict' => true, 'resultset_type' => 'array', 'auto_timestamp' => false, 'sql_explain' => false, ], // 数据库连接配置 2 'db2' => [ 'type' => 'mysql', 'hostname' => 'localhost', 'database' => 'database2', 'username' => 'root', 'password' => 'root', 'hostport' => '', 'charset' => 'utf8mb4', 'prefix' => '', 'debug' => true, 'deploy' => 0, 'rw_separate' => false, 'master_num' => 1, 'slave_no' => '', 'fields_strict' => true, 'resultset_type' => 'array', 'auto_timestamp' => false, 'sql_explain' => false, ], ]; ``` 这里的 `db1` 和 `db2` 是需要联合查询的两个数据库配置名称,可以根据实际情况进行修改。 2. 使用 `Db::connect()` 方法连接目标数据库 在查询操作前使用 `Db::connect()` 方法连接需要查询的目标数据库,例如: ```php $users = Db::connect('db1')->table('users')->select(); ``` 这里的 `db1` 是需要查询的目标数据库配置名称,`users` 则是需要查询的表名。 3. 使用 `union()` 方法进行联合查询 在连接目标数据库后,使用 `union()` 方法进行联合查询,例如: ```php $users = Db::connect('db1')->table('users') ->field('id, name') ->union(Db::connect('db2')->table('users')->field('id, name')) ->select(); ``` 这里的 `db1` 和 `db2` 分别是需要联合查询的两个数据库配置名称,`users` 则是需要查询的表名,`field()` 方法用于指定需要查询的字段。 注意:在进行多个数据库联合查询时,需要确保每个数据库中的表结构和字段名称一致,否则可能会出现查询错误或异常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值